From 1e579804dad9b00cfff9ec1e1c26b4ae9059df81 Mon Sep 17 00:00:00 2001
From: gemu2015
Date: Thu, 31 Dec 2020 14:19:50 +0100
Subject: [PATCH 01/78] universal file system inital commit
---
tasmota/xdrv_98_filesystem.ino | 494 +++++++++++++++++++++++++++++++++
1 file changed, 494 insertions(+)
create mode 100644 tasmota/xdrv_98_filesystem.ino
diff --git a/tasmota/xdrv_98_filesystem.ino b/tasmota/xdrv_98_filesystem.ino
new file mode 100644
index 000000000..5ea685109
--- /dev/null
+++ b/tasmota/xdrv_98_filesystem.ino
@@ -0,0 +1,494 @@
+/*
+ xdrv_98_filesystem.ino - unified file system for Tasmota
+
+ Copyright (C) 2020 Gerhard Mutz and Theo Arends
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+
+/*
+this driver adds universal file system support for
+ESP8266 (sd card or littlfs on > 1 M devices with special linker file e.g. eagle.flash.4m2m.ld)
+(makes no sense on 1M devices without sd card)
+and
+ESP32 (sd card or fatfile system)
+the sd card chip select is the standard SPI_CS or when not found SDCARD_CS_PIN
+initializes the FS System Pointer ufsp which can be used by all standard file system calls
+the only specific call is ufs_fsinfo() which gets the total size (0) and free size (1)
+a button is created in the setup section to show up the file directory to download and upload files
+subdirectories are supported
+
+console calls :
+
+ufs fs info
+ufstype get filesytem type 0=none 1=SD 2=Flashfile
+ufssize total size in kB
+ufsfree free size in kB
+
+driver enabled by
+
+#define USE_UFILESYS
+
+*/
+
+
+#ifdef USE_UFILESYS
+
+#define XDRV_98 98
+
+#ifdef ESP8266
+#include
+#include
+#include
+#include
+#else
+#include
+#include "FFat.h"
+#include "FS.h"
+#include "SPIFFS.h"
+#endif
+
+#define UFS_FILE_WRITE "w"
+#define UFS_FILE_READ "r"
+
+// global file system pointer
+FS *ufsp;
+char ufs_path[48];
+File ufs_upload_file;
+
+
+#ifndef SDCARD_CS_PIN
+#define SDCARD_CS_PIN 4
+#endif
+
+// 0 = none, 1 = SD, 2 = Flash
+// spiffs should be obsolete
+uint8_t ufs_type;
+#define UFS_TNONE 0
+#define UFS_TSDC 1
+#define UFS_TFAT 2
+#define UFS_TSPIFFS 3
+
+#ifndef UFS_SDCS
+#define UFS_SDCS 4
+#endif
+
+void UFSInit(void) {
+ ufs_type = 0;
+ // check for fs options,
+ // 1. check for SD card
+ // 2. check for littlefs or FAT
+ // 3. check for SPIFFS obsolete
+// if (TasmotaGlobal.spi_enabled) {
+ if (1) {
+ int8_t cs;
+ if (!PinUsed(GPIO_SPI_CS)) {
+ cs = SDCARD_CS_PIN;
+ } else {
+ cs = Pin(GPIO_SPI_CS);
+ }
+
+ if (SD.begin(cs)) {
+#ifdef ESP8266
+ ufsp = (FS*)&SD;
+#else
+ ufsp = &SD;
+#endif
+ ufs_type = 1;
+ return;
+ }
+ }
+
+// if no success with sd card try flash fs
+#ifdef ESP8266
+ ufsp = &LittleFS;
+ if (!fsp->begin()) {
+ return;
+ }
+#else
+ ufsp = &FFat;
+ if (!FFat.begin(true)) {
+ return;
+ }
+#endif
+ ufs_type = 2;
+ return;
+}
+
+uint32_t ufs_fsinfo(uint32_t sel) {
+uint32_t result = 0;
+
+ switch (ufs_type) {
+ case UFS_TSDC:
+#ifdef ESP32
+ if (sel == 0) {
+ result = SD.totalBytes();
+ } else {
+ result = (SD.totalBytes() - SD.usedBytes());
+ }
+#else
+ // currently no support on esp8266
+#endif
+ break;
+ case UFS_TFAT:
+#ifdef ESP8266
+ FSInfo64 fsinfo;
+ ufsp->info64(fsinfo);
+ if (sel == 0) {
+ result = fsinfo.totalBytes;
+ } else {
+ result = (fsinfo.totalBytes - fsinfo.usedBytes);
+ }
+#else
+ if (sel == 0) {
+ result = FFat.totalBytes();
+ } else {
+ result = FFat.freeBytes();
+ }
+#endif
+ break;
+ case UFS_TSPIFFS:
+ break;
+ }
+ return result / 10000;
+}
+
+#if USE_LONG_FILE_NAMES>0
+#undef REJCMPL
+#define REJCMPL 6
+#else
+#undef REJCMPL
+#define REJCMPL 8
+#endif
+
+uint8_t ufs_reject(char *name) {
+
+ char *lcp = strrchr(name,'/');
+ if (lcp) {
+ name = lcp + 1;
+ }
+
+ while (*name=='/') name++;
+ if (*name=='_') return 1;
+ if (*name=='.') return 1;
+
+ if (!strncasecmp(name, "SPOTLI~1", REJCMPL)) return 1;
+ if (!strncasecmp(name, "TRASHE~1", REJCMPL)) return 1;
+ if (!strncasecmp(name, "FSEVEN~1", REJCMPL)) return 1;
+ if (!strncasecmp(name, "SYSTEM~1", REJCMPL)) return 1;
+ if (!strncasecmp(name, "System Volume", 13)) return 1;
+ return 0;
+}
+
+// format number with thousand marker
+void UFS_form1000(uint32_t number, char *dp, char sc) {
+ char str[32];
+ sprintf(str, "%d", number);
+ char *sp = str;
+ uint32_t inum = strlen(sp)/3;
+ uint32_t fnum = strlen(sp)%3;
+ if (!fnum) inum--;
+ for (uint32_t count=0; count<=inum; count++) {
+ if (fnum){
+ memcpy(dp,sp,fnum);
+ dp+=fnum;
+ sp+=fnum;
+ fnum=0;
+ } else {
+ memcpy(dp,sp,3);
+ dp+=3;
+ sp+=3;
+ }
+ if (count!=inum) {
+ *dp++=sc;
+ }
+ }
+ *dp=0;
+}
+
+
+const char kUFSCommands[] PROGMEM = "UFS" "|" // Prefix
+ "|" "TYPE" "|" "SIZE" "|" "FREE";
+
+void (* const kUFSCommand[])(void) PROGMEM = {
+ &UFS_info, &UFS_type, &UFS_size, &UFS_free};
+
+void UFS_info(void) {
+ Response_P(PSTR("{\"UFS\":{\"TYPE\":%d,\"SIZE\":%d,\"FREE\":%d}}"),ufs_type,ufs_fsinfo(0),ufs_fsinfo(1));
+}
+void UFS_type(void) {
+ ResponseCmndNumber(ufs_type);
+}
+void UFS_size(void) {
+ ResponseCmndNumber(ufs_fsinfo(0));
+}
+void UFS_free(void) {
+ ResponseCmndNumber(ufs_fsinfo(1));
+}
+
+const char UFS_WEB_DIR[] PROGMEM =
+ "
"));
+ if (device.validLastSeen()) {
+ char unit;
+ uint8_t color;
+ uint16_t val = convert_seconds_to_dhm(now - device.last_seen, &unit, &color);
+ if (val < 100) {
+ snprintf_P(dhm, sizeof(dhm), msg[ZB_WEB_LAST_SEEN],
+ color, color, color, val, unit);
+ }
+ }
+
+ WSContentSend_PD(msg[ZB_WEB_END_STATUS], dhm );
+
+ // Sensors
+ const Z_Data_Thermo & thermo = device.data.find();
+
+ if (&thermo != nullptr) {
+ bool validTemp = thermo.validTemperature();
+ bool validTempTarget = thermo.validTempTarget();
+ bool validThSetpoint = thermo.validThSetpoint();
+ bool validHumidity = thermo.validHumidity();
+ bool validPressure = thermo.validPressure();
+
+ if (validTemp || validTempTarget || validThSetpoint || validHumidity || validPressure) {
+ WSContentSend_P(msg[ZB_WEB_LINE_START]);
+ if (validTemp) {
+ char buf[12];
+ dtostrf(thermo.getTemperature() / 100.0f, 3, 1, buf);
+ WSContentSend_PD(PSTR(" ☀️ %s°C"), buf);
+ }
+ if (validTempTarget) {
+ char buf[12];
+ dtostrf(thermo.getTempTarget() / 100.0f, 3, 1, buf);
+ WSContentSend_PD(PSTR(" 🎯 %s°C"), buf);
+ }
+ if (validThSetpoint) {
+ WSContentSend_PD(PSTR(" ⚙️ %d%%"), thermo.getThSetpoint());
+ }
+ if (validHumidity) {
+ WSContentSend_P(PSTR(" 💧 %d%%"), (uint16_t)(thermo.getHumidity() / 100.0f + 0.5f));
+ }
+ if (validPressure) {
+ WSContentSend_P(PSTR(" ⛅ %d hPa"), thermo.getPressure());
+ }
+
+ WSContentSend_P(PSTR("{e}"));
+ }
+ }
+
+ // Light, switches and plugs
+ const Z_Data_OnOff & onoff = device.data.find();
+ bool onoff_display = (&onoff != nullptr) ? onoff.validPower() : false;
+ const Z_Data_Light & light = device.data.find();
+ bool light_display = (&light != nullptr) ? light.validDimmer() : false;
+ const Z_Data_Plug & plug = device.data.find();
+ bool plug_voltage = (&plug != nullptr) ? plug.validMainsVoltage() : false;
+ bool plug_power = (&plug != nullptr) ? plug.validMainsPower() : false;
+ if (onoff_display || light_display || plug_voltage || plug_power) {
+ int8_t channels = device.getLightChannels();
+ if (channels < 0) { channels = 5; } // if number of channel is unknown, display all known attributes
WSContentSend_P(msg[ZB_WEB_LINE_START]);
- if (validTemp) {
- char buf[12];
- dtostrf(thermo.getTemperature() / 100.0f, 3, 1, buf);
- WSContentSend_PD(PSTR(" ☀️ %s°C"), buf);
+ if (onoff_display) {
+ WSContentSend_P(PSTR(" %s"), onoff.getPower() ? PSTR(D_ON) : PSTR(D_OFF));
}
- if (validTempTarget) {
- char buf[12];
- dtostrf(thermo.getTempTarget() / 100.0f, 3, 1, buf);
- WSContentSend_PD(PSTR(" 🎯 %s°C"), buf);
+ if (&light != nullptr) {
+ if (light.validDimmer() && (channels >= 1)) {
+ WSContentSend_P(PSTR(" 🔅 %d%%"), changeUIntScale(light.getDimmer(),0,254,0,100));
+ }
+ if (light.validCT() && ((channels == 2) || (channels == 5))) {
+ uint32_t ct_k = (((1000000 / light.getCT()) + 25) / 50) * 50;
+ WSContentSend_P(msg[ZB_WEB_LIGHT_CT], light.getCT(), ct_k);
+ }
+ if (light.validHue() && light.validSat() && (channels >= 3)) {
+ uint8_t r,g,b;
+ uint8_t sat = changeUIntScale(light.getSat(), 0, 254, 0, 255); // scale to 0..255
+ HsToRgb(light.getHue(), sat, &r, &g, &b);
+ WSContentSend_P(msg[ZB_WEB_COLOR_RGB], r,g,b,r,g,b);
+ } else if (light.validX() && light.validY() && (channels >= 3)) {
+ uint8_t r,g,b;
+ XyToRgb(light.getX() / 65535.0f, light.getY() / 65535.0f, &r, &g, &b);
+ WSContentSend_P(msg[ZB_WEB_COLOR_RGB], r,g,b,r,g,b);
+ }
}
- if (validThSetpoint) {
- WSContentSend_PD(PSTR(" ⚙️ %d%%"), thermo.getThSetpoint());
+ if (plug_voltage || plug_power) {
+ WSContentSend_P(PSTR(" ⚡ "));
+ if (plug_voltage) {
+ WSContentSend_P(PSTR(" %dV"), plug.getMainsVoltage());
+ }
+ if (plug_power) {
+ WSContentSend_P(PSTR(" %dW"), plug.getMainsPower());
+ }
}
- if (validHumidity) {
- WSContentSend_P(PSTR(" 💧 %d%%"), (uint16_t)(thermo.getHumidity() / 100.0f + 0.5f));
- }
- if (validPressure) {
- WSContentSend_P(PSTR(" ⛅ %d hPa"), thermo.getPressure());
- }
-
WSContentSend_P(PSTR("{e}"));
}
}
- // Light, switches and plugs
- const Z_Data_OnOff & onoff = device.data.find();
- bool onoff_display = (&onoff != nullptr) ? onoff.validPower() : false;
- const Z_Data_Light & light = device.data.find();
- bool light_display = (&light != nullptr) ? light.validDimmer() : false;
- const Z_Data_Plug & plug = device.data.find();
- bool plug_voltage = (&plug != nullptr) ? plug.validMainsVoltage() : false;
- bool plug_power = (&plug != nullptr) ? plug.validMainsPower() : false;
- if (onoff_display || light_display || plug_voltage || plug_power) {
- int8_t channels = device.getLightChannels();
- if (channels < 0) { channels = 5; } // if number of channel is unknown, display all known attributes
- WSContentSend_P(msg[ZB_WEB_LINE_START]);
- if (onoff_display) {
- WSContentSend_P(PSTR(" %s"), onoff.getPower() ? PSTR(D_ON) : PSTR(D_OFF));
- }
- if (&light != nullptr) {
- if (light.validDimmer() && (channels >= 1)) {
- WSContentSend_P(PSTR(" 🔅 %d%%"), changeUIntScale(light.getDimmer(),0,254,0,100));
- }
- if (light.validCT() && ((channels == 2) || (channels == 5))) {
- uint32_t ct_k = (((1000000 / light.getCT()) + 25) / 50) * 50;
- WSContentSend_P(msg[ZB_WEB_LIGHT_CT], light.getCT(), ct_k);
- }
- if (light.validHue() && light.validSat() && (channels >= 3)) {
- uint8_t r,g,b;
- uint8_t sat = changeUIntScale(light.getSat(), 0, 254, 0, 255); // scale to 0..255
- HsToRgb(light.getHue(), sat, &r, &g, &b);
- WSContentSend_P(msg[ZB_WEB_COLOR_RGB], r,g,b,r,g,b);
- } else if (light.validX() && light.validY() && (channels >= 3)) {
- uint8_t r,g,b;
- XyToRgb(light.getX() / 65535.0f, light.getY() / 65535.0f, &r, &g, &b);
- WSContentSend_P(msg[ZB_WEB_COLOR_RGB], r,g,b,r,g,b);
- }
- }
- if (plug_voltage || plug_power) {
- WSContentSend_P(PSTR(" ⚡ "));
- if (plug_voltage) {
- WSContentSend_P(PSTR(" %dV"), plug.getMainsVoltage());
- }
- if (plug_power) {
- WSContentSend_P(PSTR(" %dW"), plug.getMainsPower());
- }
- }
- WSContentSend_P(PSTR("{e}"));
- }
+ WSContentSend_P(msg[ZB_WEB_LINE_END]); // Terminate current multi column table and open new table
}
-
- WSContentSend_P(msg[ZB_WEB_LINE_END]); // Terminate current multi column table and open new table
if (zigbee.permit_end_time) {
// PermitJoin in progress
From d028e5c847530b45422b948b3ae37a6e5fbde4d2 Mon Sep 17 00:00:00 2001
From: Theo Arends <11044339+arendst@users.noreply.github.com>
Date: Sun, 3 Jan 2021 17:04:14 +0100
Subject: [PATCH 19/78] Update changelog
---
CHANGELOG.md | 4 +++-
RELEASENOTES.md | 3 +++
tasmota/settings.h | 2 +-
tools/decode-status.py | 8 +++++---
4 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5bb01ac2a..6637b3a12 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,7 +8,8 @@ All notable changes to this project will be documented in this file.
- Basic support for ESP32 Odroid Go 16MB binary tasmota32-odroidgo.bin (#8630)
- Command ``CTRange`` to specify the visible CT range the bulb is capable of (#10311)
- Command ``VirtualCT`` to simulate or fine tune CT bulbs with 3,4,5 channels (#10311)
-- Disable `USE_LIGHT`` light support for ZBBridge (saves 17.6kb)
+- Command ``SetOption118 1`` to move ZbReceived from JSON message and into the subtopic replacing "SENSOR" default (#10353)
+- Command ``SetOption119 1`` to remove the device addr from json payload, can be used with zb_topic_fname where the addr is already known from the topic (#10355)
### Breaking Changed
- Replaced MFRC522 13.56MHz rfid card reader GPIO selection from ``SPI CS`` by ``RC522 CS``
@@ -23,6 +24,7 @@ All notable changes to this project will be documented in this file.
### Changed
- Maximum chars in AddLog_P logging reduced from 700 to 128 (LOGSZ) to enhance stability
+- Disabled ``USE_LIGHT`` light support for ZBBridge saving 17.6kB (#10374)
## [9.2.0.1] 20201229
### Added
diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index 539323f9d..63b7466c3 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -60,6 +60,8 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota
### Added
- Command ``CTRange`` to specify the visible CT range the bulb is capable of [#10311](https://github.com/arendst/Tasmota/issues/10311)
- Command ``VirtualCT`` to simulate or fine tune CT bulbs with 3,4,5 channels [#10311](https://github.com/arendst/Tasmota/issues/10311)
+- Command ``SetOption118 1`` to move ZbReceived from JSON message and into the subtopic replacing "SENSOR" default [#10353](https://github.com/arendst/Tasmota/issues/10353)
+- Command ``SetOption119 1`` to remove the device addr from json payload, can be used with zb_topic_fname where the addr is already known from the topic [#10355](https://github.com/arendst/Tasmota/issues/10355)
- Milliseconds to console output [#10152](https://github.com/arendst/Tasmota/issues/10152)
- Gpio ``Option_a1`` enabling PWM2 high impedance if powered off as used by Wyze bulbs [#10196](https://github.com/arendst/Tasmota/issues/10196)
- BSSID and Signal Strength Indicator to GUI wifi scan result [#10253](https://github.com/arendst/Tasmota/issues/10253)
@@ -86,6 +88,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota
### Changed
- Logging from heap to stack freeing 700 bytes RAM
+- Disabled ``USE_LIGHT`` light support for ZBBridge saving 17.6kB (#10374)
### Fixed
- Redesign syslog and mqttlog using log buffer [#10164](https://github.com/arendst/Tasmota/issues/10164)
diff --git a/tasmota/settings.h b/tasmota/settings.h
index 81a62c835..32d8b8871 100644
--- a/tasmota/settings.h
+++ b/tasmota/settings.h
@@ -143,7 +143,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu
uint32_t mi32_enable : 1; // bit 1 (v9.1.0.1) - SetOption115 - (ESP32 BLE) Enable ESP32 MI32 BLE (1)
uint32_t zb_disable_autoquery : 1; // bit 2 (v9.1.0.1) - SetOption116 - (Zigbee) Disable auto-query of zigbee lights and devices (1)
uint32_t fade_fixed_duration : 1; // bit 3 (v9.1.0.2) - SetOption117 - (Light) run fading at fixed duration instead of fixed slew rate
- uint32_t zb_received_as_subtopic : 1; // bit 4 (v9.2.0.3) - SetOption118 - (Zigbee) Move ZbReceived form JSON message and into the subtopic replacing "SENSOR" default
+ uint32_t zb_received_as_subtopic : 1; // bit 4 (v9.2.0.3) - SetOption118 - (Zigbee) Move ZbReceived from JSON message and into the subtopic replacing "SENSOR" default
uint32_t zb_omit_json_addr : 1; // bit 5 (v9.2.0.3) - SetOption119 - (Zigbee) Remove the device addr from json payload, can be used with zb_topic_fname where the addr is already known from the topic
uint32_t spare06 : 1; // bit 6
uint32_t spare07 : 1; // bit 7
diff --git a/tools/decode-status.py b/tools/decode-status.py
index ba5ead287..3e940d8ff 100755
--- a/tools/decode-status.py
+++ b/tools/decode-status.py
@@ -171,8 +171,10 @@ a_setoption = [[
"(Switch) Detach Switches from relays and enable MQTT action state for all the SwitchModes (1)",
"(ESP32 BLE) Enable ESP32 MI32 BLE (1)",
"(Zigbee) Disable auto-query of zigbee lights and devices (1)",
- "",
- "","","","",
+ "(Light) run fading at fixed duration instead of fixed slew rate",
+ "(Zigbee) Move ZbReceived from JSON message and into the subtopic replacing SENSOR default",
+ "(Zigbee) Remove the device addr from json payload, can be used with zb_topic_fname where the addr is already known from the topic",
+ "","",
"","","","",
"","","","",
"","","","",
@@ -271,7 +273,7 @@ else:
obj = json.load(fp)
def StartDecode():
- print ("\n*** decode-status.py v20201222 by Theo Arends and Jacek Ziolkowski ***")
+ print ("\n*** decode-status.py v20210103 by Theo Arends and Jacek Ziolkowski ***")
# print("Decoding\n{}".format(obj))
From 619e4bbfb5791491befa66e55961812048df2087 Mon Sep 17 00:00:00 2001
From: Theo Arends <11044339+arendst@users.noreply.github.com>
Date: Sun, 3 Jan 2021 17:31:44 +0100
Subject: [PATCH 20/78] Add command ``RuleTimer0`` to access all RuleTimers at
once
Add command ``RuleTimer0`` to access all RuleTimers at once (#10352)
---
CHANGELOG.md | 1 +
RELEASENOTES.md | 1 +
tasmota/xdrv_10_rules.ino | 9 +++++----
3 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6637b3a12..8b34c9ca0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file.
- Command ``VirtualCT`` to simulate or fine tune CT bulbs with 3,4,5 channels (#10311)
- Command ``SetOption118 1`` to move ZbReceived from JSON message and into the subtopic replacing "SENSOR" default (#10353)
- Command ``SetOption119 1`` to remove the device addr from json payload, can be used with zb_topic_fname where the addr is already known from the topic (#10355)
+- Command ``RuleTimer0`` to access all RuleTimers at once (#10352)
### Breaking Changed
- Replaced MFRC522 13.56MHz rfid card reader GPIO selection from ``SPI CS`` by ``RC522 CS``
diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index 63b7466c3..814272bdf 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -59,6 +59,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota
## Changelog v9.2.0.2
### Added
- Command ``CTRange`` to specify the visible CT range the bulb is capable of [#10311](https://github.com/arendst/Tasmota/issues/10311)
+- Command ``RuleTimer0`` to access all RuleTimers at once [#10352](https://github.com/arendst/Tasmota/issues/10352)
- Command ``VirtualCT`` to simulate or fine tune CT bulbs with 3,4,5 channels [#10311](https://github.com/arendst/Tasmota/issues/10311)
- Command ``SetOption118 1`` to move ZbReceived from JSON message and into the subtopic replacing "SENSOR" default [#10353](https://github.com/arendst/Tasmota/issues/10353)
- Command ``SetOption119 1`` to remove the device addr from json payload, can be used with zb_topic_fname where the addr is already known from the topic [#10355](https://github.com/arendst/Tasmota/issues/10355)
diff --git a/tasmota/xdrv_10_rules.ino b/tasmota/xdrv_10_rules.ino
index 2d0caed1d..637a3b963 100644
--- a/tasmota/xdrv_10_rules.ino
+++ b/tasmota/xdrv_10_rules.ino
@@ -2124,9 +2124,10 @@ void CmndRule(void)
void CmndRuleTimer(void)
{
- if (XdrvMailbox.index > MAX_RULE_TIMERS)
- return;
- int i = XdrvMailbox.index, max_i = XdrvMailbox.index;
+ if (XdrvMailbox.index > MAX_RULE_TIMERS) { return; }
+
+ uint32_t i = XdrvMailbox.index;
+ uint32_t max_i = XdrvMailbox.index;
if (0 == i) {
i = 1;
max_i = MAX_RULE_TIMERS;
@@ -2135,7 +2136,7 @@ void CmndRuleTimer(void)
float timer_set = evaluateExpression(XdrvMailbox.data, XdrvMailbox.data_len);
timer_set = (timer_set > 0) ? millis() + (1000 * timer_set) : 0;
#else
- unsigned long timer_set = (XdrvMailbox.payload > 0) ? millis() + (1000 * XdrvMailbox.payload) : 0;
+ uint32_t timer_set = (XdrvMailbox.payload > 0) ? millis() + (1000 * XdrvMailbox.payload) : 0;
#endif // USE_EXPRESSION
if (XdrvMailbox.data_len > 0) {
for ( ; i <= max_i ; ++i ) {
From d8fbbdd5c9babc334b04debcbf1da737e62f9245 Mon Sep 17 00:00:00 2001
From: Stephan Hadinger
Date: Sun, 3 Jan 2021 18:41:03 +0100
Subject: [PATCH 21/78] Zugbee fix possible crash on Web UI
---
tasmota/xdrv_23_zigbee_A_impl.ino | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino
index e5ca3d36c..7c17b5d31 100644
--- a/tasmota/xdrv_23_zigbee_A_impl.ino
+++ b/tasmota/xdrv_23_zigbee_A_impl.ino
@@ -1768,8 +1768,7 @@ const char ZB_WEB_U[] PROGMEM =
"\0"
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
//=ZB_WEB_LINE_END
- "
" // Close LQI
- "%s{e}" // dhm (Last Seen)
+ "{t}"
"\0"
; // end of list
@@ -1794,7 +1793,7 @@ enum {
ZB_WEB_LINE_END=1608,
};
-// Compressed from 1625 to 1111, -31.6%
+// Compressed from 1627 to 1118, -31.3%
const char ZB_WEB[] PROGMEM = "\x00\x66\x3D\x0E\xCA\xB1\xC1\x33\xF0\xF6\xD1\xEE\x3D\x3D\x46\x41\x33\xF0\xE8\x6D"
"\xA1\x15\x08\x79\xF6\x51\xDD\x3C\xCC\x6F\xFD\x47\x58\x62\xB4\x21\x0E\xF1\xED\x1F"
"\xD1\x28\x51\xE6\x72\x99\x0C\x36\x1E\x0C\x67\x51\xD7\xED\x36\xB3\xCC\xE7\x99\xF4"
@@ -1850,7 +1849,7 @@ const char ZB_WEB[] PROGMEM = "\x00\x66\x3D\x0E\xCA\xB1\xC1\x33\xF0\xF6\xD1\xEE\
"\x30\xF6\x1F\x87\xE8\xF2\x59\xEF\x9E\x0A\x70\xBE\x08\x5D\x15\xA0\x42\xE0\x6C\x83"
"\x2A\x2B\x47\xD0\x87\xB0\xFC\x3D\x3C\x36\xC2\x08\xFC\x3F\x47\x91\xC5\xF5\xF3\xC1"
"\xDC\x3D\x0E\xC2\x04\x19\x87\xD0\x84\x68\x08\x5D\x16\xC9\xC2\xF8\x21\x74\x18\x4E"
- "\xCA\x10\xFC\x3E\xBC\x7B\x59\xEE\x04\xC9\xB3\x85\xF3";
+ "\xCA\x10\xFC\x3E\xBC\x7B\x59\xEE\x9C\x2F\x82\x3F\x4E\x90\x10\x79\x23\x9C\x2F\x9B";
// ++++++++++++++++++++^^^^^^^^^^^^^^^^^^^++++++++++++++++++++
// ++++++++++++++++++++ DO NOT EDIT ABOVE ++++++++++++++++++++
From d1ef1c3255247d317c193f3ea6be3fcd830433cc Mon Sep 17 00:00:00 2001
From: Theo Arends <11044339+arendst@users.noreply.github.com>
Date: Mon, 4 Jan 2021 12:31:05 +0100
Subject: [PATCH 22/78] Optimize sleepdelay after profiling
---
tasmota/tasmota.ino | 13 ++-----------
1 file changed, 2 insertions(+), 11 deletions(-)
diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino
index 79e648200..a4c39681a 100644
--- a/tasmota/tasmota.ino
+++ b/tasmota/tasmota.ino
@@ -369,17 +369,8 @@ void SleepDelay(uint32_t mseconds) {
if (mseconds) {
uint32_t wait = millis() + mseconds;
while (!TimeReached(wait)) {
-#ifdef ESP8266
- if ((wait - millis()) > 10) { // ESP8266 does an optimistic_yield(10000) in Serial.available()
-#endif
- if (Serial.available()) { return; } // We need to service serial buffer ASAP as otherwise we get uart buffer overrun
-#ifdef ESP8266
- } else {
-#endif
- delay(1);
-#ifdef ESP8266
- }
-#endif // ESP8266
+ if (Serial.available()) { return; } // We need to service serial buffer ASAP as otherwise we get uart buffer overrun
+ delay(1);
}
} else {
delay(0);
From 5c92c5a9a98c94a1f73f86d82bb13c927a7f1c54 Mon Sep 17 00:00:00 2001
From: Theo Arends <11044339+arendst@users.noreply.github.com>
Date: Mon, 4 Jan 2021 12:47:00 +0100
Subject: [PATCH 23/78] Optimize sleepdelay
---
tasmota/tasmota.ino | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino
index a4c39681a..8eb7303fb 100644
--- a/tasmota/tasmota.ino
+++ b/tasmota/tasmota.ino
@@ -368,8 +368,7 @@ void BacklogLoop(void) {
void SleepDelay(uint32_t mseconds) {
if (mseconds) {
uint32_t wait = millis() + mseconds;
- while (!TimeReached(wait)) {
- if (Serial.available()) { return; } // We need to service serial buffer ASAP as otherwise we get uart buffer overrun
+ while (!TimeReached(wait) && !Serial.available()) { // We need to service serial buffer ASAP as otherwise we get uart buffer overrun
delay(1);
}
} else {
From e551e6c0545e8edfc7359c0cf4adf9644ada9a0a Mon Sep 17 00:00:00 2001
From: Theo Arends <11044339+arendst@users.noreply.github.com>
Date: Mon, 4 Jan 2021 14:18:47 +0100
Subject: [PATCH 24/78] Prep SSD1331 fix
---
.../Adafruit_SPITFT_Renderer.cpp | 2217 +++++++++++++++++
.../Adafruit_SPITFT_Renderer.h | 520 ++++
.../Adafruit_SSD1331.cpp | 190 ++
.../Adafruit_SSD1331-1.2.0/Adafruit_SSD1331.h | 76 +
.../Adafruit_SSD1331-1.2.0/README.md | 24 +
.../Adafruit_SSD1331-1.2.0/library.properties | 10 +
.../Adafruit_SSD1331-1.2.0/license.txt | 26 +
7 files changed, 3063 insertions(+)
create mode 100644 lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SPITFT_Renderer.cpp
create mode 100644 lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SPITFT_Renderer.h
create mode 100644 lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SSD1331.cpp
create mode 100644 lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SSD1331.h
create mode 100644 lib/lib_display/Adafruit_SSD1331-1.2.0/README.md
create mode 100644 lib/lib_display/Adafruit_SSD1331-1.2.0/library.properties
create mode 100644 lib/lib_display/Adafruit_SSD1331-1.2.0/license.txt
diff --git a/lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SPITFT_Renderer.cpp b/lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SPITFT_Renderer.cpp
new file mode 100644
index 000000000..d49141a28
--- /dev/null
+++ b/lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SPITFT_Renderer.cpp
@@ -0,0 +1,2217 @@
+/*!
+ * @file Adafruit_SPITFT.cpp
+ *
+ * @mainpage Adafruit SPI TFT Displays (and some others)
+ *
+ * @section intro_sec Introduction
+ *
+ * Part of Adafruit's GFX graphics library. Originally this class was
+ * written to handle a range of color TFT displays connected via SPI,
+ * but over time this library and some display-specific subclasses have
+ * mutated to include some color OLEDs as well as parallel-interfaced
+ * displays. The name's been kept for the sake of older code.
+ *
+ * Adafruit invests time and resources providing this open source code,
+ * please support Adafruit and open-source hardware by purchasing
+ * products from Adafruit!
+
+ * @section dependencies Dependencies
+ *
+ * This library depends on
+ * Adafruit_GFX being present on your system. Please make sure you have
+ * installed the latest version before using this library.
+ *
+ * @section author Author
+ *
+ * Written by Limor "ladyada" Fried for Adafruit Industries,
+ * with contributions from the open source community.
+ *
+ * @section license License
+ *
+ * BSD license, all text here must be included in any redistribution.
+ */
+
+#if !defined(__AVR_ATtiny85__) // Not for ATtiny, at all
+
+#include "Adafruit_SPITFT_Renderer.h"
+
+#if defined(__AVR__)
+#if defined(__AVR_XMEGA__) //only tested with __AVR_ATmega4809__
+#define AVR_WRITESPI(x) for(SPI0_DATA = (x); (!(SPI0_INTFLAGS & _BV(SPI_IF_bp))); )
+#else
+#define AVR_WRITESPI(x) for(SPDR = (x); (!(SPSR & _BV(SPIF))); )
+#endif
+#endif
+
+#if defined(PORT_IOBUS)
+// On SAMD21, redefine digitalPinToPort() to use the slightly-faster
+// PORT_IOBUS rather than PORT (not needed on SAMD51).
+#undef digitalPinToPort
+#define digitalPinToPort(P) (&(PORT_IOBUS->Group[g_APinDescription[P].ulPort]))
+#endif // end PORT_IOBUS
+
+#if defined(USE_SPI_DMA)
+ #include
+ #include "wiring_private.h" // pinPeripheral() function
+ #include // memalign() function
+ #define tcNum 2 // Timer/Counter for parallel write strobe PWM
+ #define wrPeripheral PIO_CCL // Use CCL to invert write strobe
+
+ // DMA transfer-in-progress indicator and callback
+ static volatile bool dma_busy = false;
+ static void dma_callback(Adafruit_ZeroDMA *dma) {
+ dma_busy = false;
+ }
+
+ #if defined(__SAMD51__)
+ // Timer/counter info by index #
+ static const struct {
+ Tc *tc; // -> Timer/Counter base address
+ int gclk; // GCLK ID
+ int evu; // EVSYS user ID
+ } tcList[] = {
+ { TC0, TC0_GCLK_ID, EVSYS_ID_USER_TC0_EVU },
+ { TC1, TC1_GCLK_ID, EVSYS_ID_USER_TC1_EVU },
+ { TC2, TC2_GCLK_ID, EVSYS_ID_USER_TC2_EVU },
+ { TC3, TC3_GCLK_ID, EVSYS_ID_USER_TC3_EVU },
+ #if defined(TC4)
+ { TC4, TC4_GCLK_ID, EVSYS_ID_USER_TC4_EVU },
+ #endif
+ #if defined(TC5)
+ { TC5, TC5_GCLK_ID, EVSYS_ID_USER_TC5_EVU },
+ #endif
+ #if defined(TC6)
+ { TC6, TC6_GCLK_ID, EVSYS_ID_USER_TC6_EVU },
+ #endif
+ #if defined(TC7)
+ { TC7, TC7_GCLK_ID, EVSYS_ID_USER_TC7_EVU }
+ #endif
+ };
+ #define NUM_TIMERS (sizeof tcList / sizeof tcList[0]) ///< # timer/counters
+ #endif // end __SAMD51__
+
+#endif // end USE_SPI_DMA
+
+// Possible values for Adafruit_SPITFT.connection:
+#define TFT_HARD_SPI 0 ///< Display interface = hardware SPI
+#define TFT_SOFT_SPI 1 ///< Display interface = software SPI
+#define TFT_PARALLEL 2 ///< Display interface = 8- or 16-bit parallel
+
+
+// CONSTRUCTORS ------------------------------------------------------------
+
+/*!
+ @brief Adafruit_SPITFT constructor for software (bitbang) SPI.
+ @param w Display width in pixels at default rotation setting (0).
+ @param h Display height in pixels at default rotation setting (0).
+ @param cs Arduino pin # for chip-select (-1 if unused, tie CS low).
+ @param dc Arduino pin # for data/command select (required).
+ @param mosi Arduino pin # for bitbang SPI MOSI signal (required).
+ @param sck Arduino pin # for bitbang SPI SCK signal (required).
+ @param rst Arduino pin # for display reset (optional, display reset
+ can be tied to MCU reset, default of -1 means unused).
+ @param miso Arduino pin # for bitbang SPI MISO signal (optional,
+ -1 default, many displays don't support SPI read).
+ @return Adafruit_SPITFT object.
+ @note Output pins are not initialized; application typically will
+ need to call subclass' begin() function, which in turn calls
+ this library's initSPI() function to initialize pins.
+*/
+Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h,
+ int8_t cs, int8_t dc, int8_t mosi, int8_t sck, int8_t rst, int8_t miso) :
+ Renderer(w, h), connection(TFT_SOFT_SPI), _rst(rst), _cs(cs), _dc(dc) {
+ swspi._sck = sck;
+ swspi._mosi = mosi;
+ swspi._miso = miso;
+#if defined(USE_FAST_PINIO)
+ #if defined(HAS_PORT_SET_CLR)
+ #if defined(CORE_TEENSY)
+ #if !defined(KINETISK)
+ dcPinMask = digitalPinToBitMask(dc);
+ swspi.sckPinMask = digitalPinToBitMask(sck);
+ swspi.mosiPinMask = digitalPinToBitMask(mosi);
+ #endif
+ dcPortSet = portSetRegister(dc);
+ dcPortClr = portClearRegister(dc);
+ swspi.sckPortSet = portSetRegister(sck);
+ swspi.sckPortClr = portClearRegister(sck);
+ swspi.mosiPortSet = portSetRegister(mosi);
+ swspi.mosiPortClr = portClearRegister(mosi);
+ if(cs >= 0) {
+ #if !defined(KINETISK)
+ csPinMask = digitalPinToBitMask(cs);
+ #endif
+ csPortSet = portSetRegister(cs);
+ csPortClr = portClearRegister(cs);
+ } else {
+ #if !defined(KINETISK)
+ csPinMask = 0;
+ #endif
+ csPortSet = dcPortSet;
+ csPortClr = dcPortClr;
+ }
+ if(miso >= 0) {
+ swspi.misoPort = portInputRegister(miso);
+ #if !defined(KINETISK)
+ swspi.misoPinMask = digitalPinToBitMask(miso);
+ #endif
+ } else {
+ swspi.misoPort = portInputRegister(dc);
+ }
+ #else // !CORE_TEENSY
+ dcPinMask =digitalPinToBitMask(dc);
+ swspi.sckPinMask =digitalPinToBitMask(sck);
+ swspi.mosiPinMask=digitalPinToBitMask(mosi);
+ dcPortSet =&(PORT->Group[g_APinDescription[dc].ulPort].OUTSET.reg);
+ dcPortClr =&(PORT->Group[g_APinDescription[dc].ulPort].OUTCLR.reg);
+ swspi.sckPortSet =&(PORT->Group[g_APinDescription[sck].ulPort].OUTSET.reg);
+ swspi.sckPortClr =&(PORT->Group[g_APinDescription[sck].ulPort].OUTCLR.reg);
+ swspi.mosiPortSet=&(PORT->Group[g_APinDescription[mosi].ulPort].OUTSET.reg);
+ swspi.mosiPortClr=&(PORT->Group[g_APinDescription[mosi].ulPort].OUTCLR.reg);
+ if(cs >= 0) {
+ csPinMask = digitalPinToBitMask(cs);
+ csPortSet = &(PORT->Group[g_APinDescription[cs].ulPort].OUTSET.reg);
+ csPortClr = &(PORT->Group[g_APinDescription[cs].ulPort].OUTCLR.reg);
+ } else {
+ // No chip-select line defined; might be permanently tied to GND.
+ // Assign a valid GPIO register (though not used for CS), and an
+ // empty pin bitmask...the nonsense bit-twiddling might be faster
+ // than checking _cs and possibly branching.
+ csPortSet = dcPortSet;
+ csPortClr = dcPortClr;
+ csPinMask = 0;
+ }
+ if(miso >= 0) {
+ swspi.misoPinMask=digitalPinToBitMask(miso);
+ swspi.misoPort =(PORTreg_t)portInputRegister(digitalPinToPort(miso));
+ } else {
+ swspi.misoPinMask=0;
+ swspi.misoPort =(PORTreg_t)portInputRegister(digitalPinToPort(dc));
+ }
+ #endif // end !CORE_TEENSY
+ #else // !HAS_PORT_SET_CLR
+ dcPort =(PORTreg_t)portOutputRegister(digitalPinToPort(dc));
+ dcPinMaskSet =digitalPinToBitMask(dc);
+ swspi.sckPort =(PORTreg_t)portOutputRegister(digitalPinToPort(sck));
+ swspi.sckPinMaskSet =digitalPinToBitMask(sck);
+ swspi.mosiPort =(PORTreg_t)portOutputRegister(digitalPinToPort(mosi));
+ swspi.mosiPinMaskSet=digitalPinToBitMask(mosi);
+ if(cs >= 0) {
+ csPort = (PORTreg_t)portOutputRegister(digitalPinToPort(cs));
+ csPinMaskSet = digitalPinToBitMask(cs);
+ } else {
+ // No chip-select line defined; might be permanently tied to GND.
+ // Assign a valid GPIO register (though not used for CS), and an
+ // empty pin bitmask...the nonsense bit-twiddling might be faster
+ // than checking _cs and possibly branching.
+ csPort = dcPort;
+ csPinMaskSet = 0;
+ }
+ if(miso >= 0) {
+ swspi.misoPort =(PORTreg_t)portInputRegister(digitalPinToPort(miso));
+ swspi.misoPinMask=digitalPinToBitMask(miso);
+ } else {
+ swspi.misoPort =(PORTreg_t)portInputRegister(digitalPinToPort(dc));
+ swspi.misoPinMask=0;
+ }
+ csPinMaskClr = ~csPinMaskSet;
+ dcPinMaskClr = ~dcPinMaskSet;
+ swspi.sckPinMaskClr = ~swspi.sckPinMaskSet;
+ swspi.mosiPinMaskClr = ~swspi.mosiPinMaskSet;
+ #endif // !end HAS_PORT_SET_CLR
+#endif // end USE_FAST_PINIO
+}
+
+/*!
+ @brief Adafruit_SPITFT constructor for hardware SPI using the board's
+ default SPI peripheral.
+ @param w Display width in pixels at default rotation setting (0).
+ @param h Display height in pixels at default rotation setting (0).
+ @param cs Arduino pin # for chip-select (-1 if unused, tie CS low).
+ @param dc Arduino pin # for data/command select (required).
+ @param rst Arduino pin # for display reset (optional, display reset
+ can be tied to MCU reset, default of -1 means unused).
+ @return Adafruit_SPITFT object.
+ @note Output pins are not initialized; application typically will
+ need to call subclass' begin() function, which in turn calls
+ this library's initSPI() function to initialize pins.
+*/
+#if defined(ESP8266) // See notes below
+Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs,
+ int8_t dc, int8_t rst) : Renderer(w, h),
+ connection(TFT_HARD_SPI), _rst(rst), _cs(cs), _dc(dc) {
+ hwspi._spi = &SPI;
+}
+#else // !ESP8266
+Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t cs,
+ int8_t dc, int8_t rst) : Adafruit_SPITFT(w, h, &SPI, cs, dc, rst) {
+ // This just invokes the hardware SPI constructor below,
+ // passing the default SPI device (&SPI).
+}
+#endif // end !ESP8266
+
+#if !defined(ESP8266)
+// ESP8266 compiler freaks out at this constructor -- it can't disambiguate
+// beteween the SPIClass pointer (argument #3) and a regular integer.
+// Solution here it to just not offer this variant on the ESP8266. You can
+// use the default hardware SPI peripheral, or you can use software SPI,
+// but if there's any library out there that creates a 'virtual' SPIClass
+// peripheral and drives it with software bitbanging, that's not supported.
+/*!
+ @brief Adafruit_SPITFT constructor for hardware SPI using a specific
+ SPI peripheral.
+ @param w Display width in pixels at default rotation (0).
+ @param h Display height in pixels at default rotation (0).
+ @param spiClass Pointer to SPIClass type (e.g. &SPI or &SPI1).
+ @param cs Arduino pin # for chip-select (-1 if unused, tie CS low).
+ @param dc Arduino pin # for data/command select (required).
+ @param rst Arduino pin # for display reset (optional, display reset
+ can be tied to MCU reset, default of -1 means unused).
+ @return Adafruit_SPITFT object.
+ @note Output pins are not initialized in constructor; application
+ typically will need to call subclass' begin() function, which
+ in turn calls this library's initSPI() function to initialize
+ pins. EXCEPT...if you have built your own SERCOM SPI peripheral
+ (calling the SPIClass constructor) rather than one of the
+ built-in SPI devices (e.g. &SPI, &SPI1 and so forth), you will
+ need to call the begin() function for your object as well as
+ pinPeripheral() for the MOSI, MISO and SCK pins to configure
+ GPIO manually. Do this BEFORE calling the display-specific
+ begin or init function. Unfortunate but unavoidable.
+*/
+Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, SPIClass *spiClass,
+ int8_t cs, int8_t dc, int8_t rst) : Renderer(w, h),
+ connection(TFT_HARD_SPI), _rst(rst), _cs(cs), _dc(dc) {
+ hwspi._spi = spiClass;
+#if defined(USE_FAST_PINIO)
+ #if defined(HAS_PORT_SET_CLR)
+ #if defined(CORE_TEENSY)
+ #if !defined(KINETISK)
+ dcPinMask = digitalPinToBitMask(dc);
+ #endif
+ dcPortSet = portSetRegister(dc);
+ dcPortClr = portClearRegister(dc);
+ if(cs >= 0) {
+ #if !defined(KINETISK)
+ csPinMask = digitalPinToBitMask(cs);
+ #endif
+ csPortSet = portSetRegister(cs);
+ csPortClr = portClearRegister(cs);
+ } else { // see comments below
+ #if !defined(KINETISK)
+ csPinMask = 0;
+ #endif
+ csPortSet = dcPortSet;
+ csPortClr = dcPortClr;
+ }
+ #else // !CORE_TEENSY
+ dcPinMask = digitalPinToBitMask(dc);
+ dcPortSet = &(PORT->Group[g_APinDescription[dc].ulPort].OUTSET.reg);
+ dcPortClr = &(PORT->Group[g_APinDescription[dc].ulPort].OUTCLR.reg);
+ if(cs >= 0) {
+ csPinMask = digitalPinToBitMask(cs);
+ csPortSet = &(PORT->Group[g_APinDescription[cs].ulPort].OUTSET.reg);
+ csPortClr = &(PORT->Group[g_APinDescription[cs].ulPort].OUTCLR.reg);
+ } else {
+ // No chip-select line defined; might be permanently tied to GND.
+ // Assign a valid GPIO register (though not used for CS), and an
+ // empty pin bitmask...the nonsense bit-twiddling might be faster
+ // than checking _cs and possibly branching.
+ csPortSet = dcPortSet;
+ csPortClr = dcPortClr;
+ csPinMask = 0;
+ }
+ #endif // end !CORE_TEENSY
+ #else // !HAS_PORT_SET_CLR
+ dcPort = (PORTreg_t)portOutputRegister(digitalPinToPort(dc));
+ dcPinMaskSet = digitalPinToBitMask(dc);
+ if(cs >= 0) {
+ csPort = (PORTreg_t)portOutputRegister(digitalPinToPort(cs));
+ csPinMaskSet = digitalPinToBitMask(cs);
+ } else {
+ // No chip-select line defined; might be permanently tied to GND.
+ // Assign a valid GPIO register (though not used for CS), and an
+ // empty pin bitmask...the nonsense bit-twiddling might be faster
+ // than checking _cs and possibly branching.
+ csPort = dcPort;
+ csPinMaskSet = 0;
+ }
+ csPinMaskClr = ~csPinMaskSet;
+ dcPinMaskClr = ~dcPinMaskSet;
+ #endif // end !HAS_PORT_SET_CLR
+#endif // end USE_FAST_PINIO
+}
+#endif // end !ESP8266
+
+/*!
+ @brief Adafruit_SPITFT constructor for parallel display connection.
+ @param w Display width in pixels at default rotation (0).
+ @param h Display height in pixels at default rotation (0).
+ @param busWidth If tft16 (enumeration in header file), is a 16-bit
+ parallel connection, else 8-bit.
+ 16-bit isn't fully implemented or tested yet so
+ applications should pass "tft8bitbus" for now...needed to
+ stick a required enum argument in there to
+ disambiguate this constructor from the soft-SPI case.
+ Argument is ignored on 8-bit architectures (no 'wide'
+ support there since PORTs are 8 bits anyway).
+ @param d0 Arduino pin # for data bit 0 (1+ are extrapolated).
+ The 8 (or 16) data bits MUST be contiguous and byte-
+ aligned (or word-aligned for wide interface) within
+ the same PORT register (might not correspond to
+ Arduino pin sequence).
+ @param wr Arduino pin # for write strobe (required).
+ @param dc Arduino pin # for data/command select (required).
+ @param cs Arduino pin # for chip-select (optional, -1 if unused,
+ tie CS low).
+ @param rst Arduino pin # for display reset (optional, display reset
+ can be tied to MCU reset, default of -1 means unused).
+ @param rd Arduino pin # for read strobe (optional, -1 if unused).
+ @return Adafruit_SPITFT object.
+ @note Output pins are not initialized; application typically will need
+ to call subclass' begin() function, which in turn calls this
+ library's initSPI() function to initialize pins.
+ Yes, the name is a misnomer...this library originally handled
+ only SPI displays, parallel being a recent addition (but not
+ wanting to break existing code).
+*/
+Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, tftBusWidth busWidth,
+ int8_t d0, int8_t wr, int8_t dc, int8_t cs, int8_t rst, int8_t rd) :
+ Renderer(w, h), connection(TFT_PARALLEL), _rst(rst), _cs(cs), _dc(dc) {
+ tft8._d0 = d0;
+ tft8._wr = wr;
+ tft8._rd = rd;
+ tft8.wide = (busWidth == tft16bitbus);
+#if defined(USE_FAST_PINIO)
+ #if defined(HAS_PORT_SET_CLR)
+ #if defined(CORE_TEENSY)
+ tft8.wrPortSet = portSetRegister(wr);
+ tft8.wrPortClr = portClearRegister(wr);
+ #if !defined(KINETISK)
+ dcPinMask = digitalPinToBitMask(dc);
+ #endif
+ dcPortSet = portSetRegister(dc);
+ dcPortClr = portClearRegister(dc);
+ if(cs >= 0) {
+ #if !defined(KINETISK)
+ csPinMask = digitalPinToBitMask(cs);
+ #endif
+ csPortSet = portSetRegister(cs);
+ csPortClr = portClearRegister(cs);
+ } else { // see comments below
+ #if !defined(KINETISK)
+ csPinMask = 0;
+ #endif
+ csPortSet = dcPortSet;
+ csPortClr = dcPortClr;
+ }
+ if(rd >= 0) { // if read-strobe pin specified...
+ #if defined(KINETISK)
+ tft8.rdPinMask = 1;
+ #else // !KINETISK
+ tft8.rdPinMask = digitalPinToBitMask(rd);
+ #endif
+ tft8.rdPortSet = portSetRegister(rd);
+ tft8.rdPortClr = portClearRegister(rd);
+ } else {
+ tft8.rdPinMask = 0;
+ tft8.rdPortSet = dcPortSet;
+ tft8.rdPortClr = dcPortClr;
+ }
+ // These are all uint8_t* pointers -- elsewhere they're recast
+ // as necessary if a 'wide' 16-bit interface is in use.
+ tft8.writePort = portOutputRegister(d0);
+ tft8.readPort = portInputRegister(d0);
+ tft8.dirSet = portModeRegister(d0);
+ tft8.dirClr = portModeRegister(d0);
+ #else // !CORE_TEENSY
+ tft8.wrPinMask = digitalPinToBitMask(wr);
+ tft8.wrPortSet = &(PORT->Group[g_APinDescription[wr].ulPort].OUTSET.reg);
+ tft8.wrPortClr = &(PORT->Group[g_APinDescription[wr].ulPort].OUTCLR.reg);
+ dcPinMask = digitalPinToBitMask(dc);
+ dcPortSet = &(PORT->Group[g_APinDescription[dc].ulPort].OUTSET.reg);
+ dcPortClr = &(PORT->Group[g_APinDescription[dc].ulPort].OUTCLR.reg);
+ if(cs >= 0) {
+ csPinMask = digitalPinToBitMask(cs);
+ csPortSet = &(PORT->Group[g_APinDescription[cs].ulPort].OUTSET.reg);
+ csPortClr = &(PORT->Group[g_APinDescription[cs].ulPort].OUTCLR.reg);
+ } else {
+ // No chip-select line defined; might be permanently tied to GND.
+ // Assign a valid GPIO register (though not used for CS), and an
+ // empty pin bitmask...the nonsense bit-twiddling might be faster
+ // than checking _cs and possibly branching.
+ csPortSet = dcPortSet;
+ csPortClr = dcPortClr;
+ csPinMask = 0;
+ }
+ if(rd >= 0) { // if read-strobe pin specified...
+ tft8.rdPinMask =digitalPinToBitMask(rd);
+ tft8.rdPortSet =&(PORT->Group[g_APinDescription[rd].ulPort].OUTSET.reg);
+ tft8.rdPortClr =&(PORT->Group[g_APinDescription[rd].ulPort].OUTCLR.reg);
+ } else {
+ tft8.rdPinMask = 0;
+ tft8.rdPortSet = dcPortSet;
+ tft8.rdPortClr = dcPortClr;
+ }
+ // Get pointers to PORT write/read/dir bytes within 32-bit PORT
+ uint8_t dBit = g_APinDescription[d0].ulPin; // d0 bit # in PORT
+ PortGroup *p = (&(PORT->Group[g_APinDescription[d0].ulPort]));
+ uint8_t offset = dBit / 8; // d[7:0] byte # within PORT
+ if(tft8.wide) offset &= ~1; // d[15:8] byte # within PORT
+ // These are all uint8_t* pointers -- elsewhere they're recast
+ // as necessary if a 'wide' 16-bit interface is in use.
+ tft8.writePort = (volatile uint8_t *)&(p->OUT.reg) + offset;
+ tft8.readPort = (volatile uint8_t *)&(p->IN.reg) + offset;
+ tft8.dirSet = (volatile uint8_t *)&(p->DIRSET.reg) + offset;
+ tft8.dirClr = (volatile uint8_t *)&(p->DIRCLR.reg) + offset;
+ #endif // end !CORE_TEENSY
+ #else // !HAS_PORT_SET_CLR
+ tft8.wrPort = (PORTreg_t)portOutputRegister(digitalPinToPort(wr));
+ tft8.wrPinMaskSet = digitalPinToBitMask(wr);
+ dcPort = (PORTreg_t)portOutputRegister(digitalPinToPort(dc));
+ dcPinMaskSet = digitalPinToBitMask(dc);
+ if(cs >= 0) {
+ csPort = (PORTreg_t)portOutputRegister(digitalPinToPort(cs));
+ csPinMaskSet = digitalPinToBitMask(cs);
+ } else {
+ // No chip-select line defined; might be permanently tied to GND.
+ // Assign a valid GPIO register (though not used for CS), and an
+ // empty pin bitmask...the nonsense bit-twiddling might be faster
+ // than checking _cs and possibly branching.
+ csPort = dcPort;
+ csPinMaskSet = 0;
+ }
+ if(rd >= 0) { // if read-strobe pin specified...
+ tft8.rdPort =(PORTreg_t)portOutputRegister(digitalPinToPort(rd));
+ tft8.rdPinMaskSet =digitalPinToBitMask(rd);
+ } else {
+ tft8.rdPort = dcPort;
+ tft8.rdPinMaskSet = 0;
+ }
+ csPinMaskClr = ~csPinMaskSet;
+ dcPinMaskClr = ~dcPinMaskSet;
+ tft8.wrPinMaskClr = ~tft8.wrPinMaskSet;
+ tft8.rdPinMaskClr = ~tft8.rdPinMaskSet;
+ tft8.writePort = (PORTreg_t)portOutputRegister(digitalPinToPort(d0));
+ tft8.readPort = (PORTreg_t)portInputRegister(digitalPinToPort(d0));
+ tft8.portDir = (PORTreg_t)portModeRegister(digitalPinToPort(d0));
+ #endif // end !HAS_PORT_SET_CLR
+#endif // end USE_FAST_PINIO
+}
+
+// end constructors -------
+
+
+// CLASS MEMBER FUNCTIONS --------------------------------------------------
+
+// begin() and setAddrWindow() MUST be declared by any subclass.
+
+/*!
+ @brief Configure microcontroller pins for TFT interfacing. Typically
+ called by a subclass' begin() function.
+ @param freq SPI frequency when using hardware SPI. If default (0)
+ is passed, will fall back on a device-specific value.
+ Value is ignored when using software SPI or parallel
+ connection.
+ @param spiMode SPI mode when using hardware SPI. MUST be one of the
+ values SPI_MODE0, SPI_MODE1, SPI_MODE2 or SPI_MODE3
+ defined in SPI.h. Do NOT attempt to pass '0' for
+ SPI_MODE0 and so forth...the values are NOT the same!
+ Use ONLY the defines! (Pity it's not an enum.)
+ @note Another anachronistically-named function; this is called even
+ when the display connection is parallel (not SPI). Also, this
+ could probably be made private...quite a few class functions
+ were generously put in the public section.
+*/
+void Adafruit_SPITFT::initSPI(uint32_t freq, uint8_t spiMode) {
+
+ if(!freq) freq = DEFAULT_SPI_FREQ; // If no freq specified, use default
+
+ // Init basic control pins common to all connection types
+ if(_cs >= 0) {
+ pinMode(_cs, OUTPUT);
+ digitalWrite(_cs, HIGH); // Deselect
+ }
+ pinMode(_dc, OUTPUT);
+ digitalWrite(_dc, HIGH); // Data mode
+
+ if(connection == TFT_HARD_SPI) {
+
+#if defined(SPI_HAS_TRANSACTION)
+ hwspi.settings = SPISettings(freq, MSBFIRST, spiMode);
+#else
+ hwspi._freq = freq; // Save freq value for later
+#endif
+ hwspi._mode = spiMode; // Save spiMode value for later
+ // Call hwspi._spi->begin() ONLY if this is among the 'established'
+ // SPI interfaces in variant.h. For DIY roll-your-own SERCOM SPIs,
+ // begin() and pinPeripheral() calls MUST be made in one's calling
+ // code, BEFORE the screen-specific begin/init function is called.
+ // Reason for this is that SPI::begin() makes its own calls to
+ // pinPeripheral() based on g_APinDescription[n].ulPinType, which
+ // on non-established SPI interface pins will always be PIO_DIGITAL
+ // or similar, while we need PIO_SERCOM or PIO_SERCOM_ALT...it's
+ // highly unique between devices and variants for each pin or
+ // SERCOM so we can't make those calls ourselves here. And the SPI
+ // device needs to be set up before calling this because it's
+ // immediately followed with initialization commands. Blargh.
+ if(
+#if !defined(SPI_INTERFACES_COUNT)
+ 1
+#endif
+#if SPI_INTERFACES_COUNT > 0
+ (hwspi._spi == &SPI)
+#endif
+#if SPI_INTERFACES_COUNT > 1
+ || (hwspi._spi == &SPI1)
+#endif
+#if SPI_INTERFACES_COUNT > 2
+ || (hwspi._spi == &SPI2)
+#endif
+#if SPI_INTERFACES_COUNT > 3
+ || (hwspi._spi == &SPI3)
+#endif
+#if SPI_INTERFACES_COUNT > 4
+ || (hwspi._spi == &SPI4)
+#endif
+#if SPI_INTERFACES_COUNT > 5
+ || (hwspi._spi == &SPI5)
+#endif
+ ) {
+ hwspi._spi->begin();
+ }
+ } else if(connection == TFT_SOFT_SPI) {
+
+ pinMode(swspi._mosi, OUTPUT);
+ digitalWrite(swspi._mosi, LOW);
+ pinMode(swspi._sck, OUTPUT);
+ digitalWrite(swspi._sck, LOW);
+ if(swspi._miso >= 0) {
+ pinMode(swspi._miso, INPUT);
+ }
+
+ } else { // TFT_PARALLEL
+
+ // Initialize data pins. We were only passed d0, so scan
+ // the pin description list looking for the other pins.
+ // They'll be on the same PORT, and within the next 7 (or 15) bits
+ // (because we need to write to a contiguous PORT byte or word).
+#if defined(__AVR__)
+ // PORT registers are 8 bits wide, so just need a register match...
+ for(uint8_t i=0; i= dBit ) &&
+ (g_APinDescription[i].ulPin <= (uint32_t)lastBit)) {
+ pinMode(i, OUTPUT);
+ digitalWrite(i, LOW);
+ }
+ }
+ #endif // end !CORE_TEENSY
+#endif
+ pinMode(tft8._wr, OUTPUT);
+ digitalWrite(tft8._wr, HIGH);
+ if(tft8._rd >= 0) {
+ pinMode(tft8._rd, OUTPUT);
+ digitalWrite(tft8._rd, HIGH);
+ }
+ }
+
+ if(_rst >= 0) {
+ // Toggle _rst low to reset
+ pinMode(_rst, OUTPUT);
+ digitalWrite(_rst, HIGH);
+ delay(100);
+ digitalWrite(_rst, LOW);
+ delay(100);
+ digitalWrite(_rst, HIGH);
+ delay(200);
+ }
+
+#if defined(USE_SPI_DMA)
+ if(((connection == TFT_HARD_SPI) || (connection == TFT_PARALLEL)) &&
+ (dma.allocate() == DMA_STATUS_OK)) { // Allocate channel
+ // The DMA library needs to alloc at least one valid descriptor,
+ // so we do that here. It's not used in the usual sense though,
+ // just before a transfer we copy descriptor[0] to this address.
+ if(dptr = dma.addDescriptor(NULL, NULL, 42, DMA_BEAT_SIZE_BYTE,
+ false, false)) {
+ // Alloc 2 scanlines worth of pixels on display's major axis,
+ // whichever that is, rounding each up to 2-pixel boundary.
+ int major = (WIDTH > HEIGHT) ? WIDTH : HEIGHT;
+ major += (major & 1); // -> next 2-pixel bound, if needed.
+ maxFillLen = major * 2; // 2 scanlines
+ // Note to future self: if you decide to make the pixel buffer
+ // much larger, remember that DMA transfer descriptors can't
+ // exceed 65,535 bytes (not 65,536), meaning 32,767 pixels max.
+ // Not that we have that kind of RAM to throw around right now.
+ if((pixelBuf[0] =
+ (uint16_t *)malloc(maxFillLen * sizeof(uint16_t)))) {
+ // Alloc OK. Get pointer to start of second scanline.
+ pixelBuf[1] = &pixelBuf[0][major];
+ // Determine number of DMA descriptors needed to cover
+ // entire screen when entire 2-line pixelBuf is used
+ // (round up for fractional last descriptor).
+ int numDescriptors = (WIDTH * HEIGHT + (maxFillLen - 1)) /
+ maxFillLen;
+ // DMA descriptors MUST be 128-bit (16 byte) aligned.
+ // memalign() is considered obsolete but it's replacements
+ // (aligned_alloc() or posix_memalign()) are not currently
+ // available in the version of ARM GCC in use, but this
+ // is, so here we are.
+ if((descriptor = (DmacDescriptor *)memalign(16,
+ numDescriptors * sizeof(DmacDescriptor)))) {
+ int dmac_id;
+ volatile uint32_t *data_reg;
+
+ if(connection == TFT_HARD_SPI) {
+ // THIS IS AN AFFRONT TO NATURE, but I don't know
+ // any "clean" way to get the sercom number from the
+ // the SPIClass pointer (e.g. &SPI or &SPI1), which
+ // is all we have to work with. SPIClass does contain
+ // a SERCOM pointer but it is a PRIVATE member!
+ // Doing an UNSPEAKABLY HORRIBLE THING here, directly
+ // accessing the first 32-bit value in the SPIClass
+ // structure, knowing that's (currently) where the
+ // SERCOM pointer lives, but this ENTIRELY DEPENDS on
+ // that structure not changing nor the compiler
+ // rearranging things. Oh the humanity!
+
+ if(*(SERCOM **)hwspi._spi == &sercom0) {
+ dmac_id = SERCOM0_DMAC_ID_TX;
+ data_reg = &SERCOM0->SPI.DATA.reg;
+#if defined SERCOM1
+ } else if(*(SERCOM **)hwspi._spi == &sercom1) {
+ dmac_id = SERCOM1_DMAC_ID_TX;
+ data_reg = &SERCOM1->SPI.DATA.reg;
+#endif
+#if defined SERCOM2
+ } else if(*(SERCOM **)hwspi._spi == &sercom2) {
+ dmac_id = SERCOM2_DMAC_ID_TX;
+ data_reg = &SERCOM2->SPI.DATA.reg;
+#endif
+#if defined SERCOM3
+ } else if(*(SERCOM **)hwspi._spi == &sercom3) {
+ dmac_id = SERCOM3_DMAC_ID_TX;
+ data_reg = &SERCOM3->SPI.DATA.reg;
+#endif
+#if defined SERCOM4
+ } else if(*(SERCOM **)hwspi._spi == &sercom4) {
+ dmac_id = SERCOM4_DMAC_ID_TX;
+ data_reg = &SERCOM4->SPI.DATA.reg;
+#endif
+#if defined SERCOM5
+ } else if(*(SERCOM **)hwspi._spi == &sercom5) {
+ dmac_id = SERCOM5_DMAC_ID_TX;
+ data_reg = &SERCOM5->SPI.DATA.reg;
+#endif
+#if defined SERCOM6
+ } else if(*(SERCOM **)hwspi._spi == &sercom6) {
+ dmac_id = SERCOM6_DMAC_ID_TX;
+ data_reg = &SERCOM6->SPI.DATA.reg;
+#endif
+#if defined SERCOM7
+ } else if(*(SERCOM **)hwspi._spi == &sercom7) {
+ dmac_id = SERCOM7_DMAC_ID_TX;
+ data_reg = &SERCOM7->SPI.DATA.reg;
+#endif
+ }
+ dma.setPriority(DMA_PRIORITY_3);
+ dma.setTrigger(dmac_id);
+ dma.setAction(DMA_TRIGGER_ACTON_BEAT);
+
+ // Initialize descriptor list.
+ for(int d=0; dChannel[dmaChannel].CHEVCTRL.bit.EVOE = 1;
+ DMAC->Channel[dmaChannel].CHEVCTRL.bit.EVOMODE = 0;
+
+ // CONFIGURE TIMER/COUNTER (for write strobe)
+
+ Tc *timer = tcList[tcNum].tc; // -> Timer struct
+ int id = tcList[tcNum].gclk; // Timer GCLK ID
+ GCLK_PCHCTRL_Type pchctrl;
+
+ // Set up timer clock source from GCLK
+ GCLK->PCHCTRL[id].bit.CHEN = 0; // Stop timer
+ while(GCLK->PCHCTRL[id].bit.CHEN); // Wait for it
+ pchctrl.bit.GEN = GCLK_PCHCTRL_GEN_GCLK0_Val;
+ pchctrl.bit.CHEN = 1; // Enable
+ GCLK->PCHCTRL[id].reg = pchctrl.reg;
+ while(!GCLK->PCHCTRL[id].bit.CHEN); // Wait for it
+
+ // Disable timer/counter before configuring it
+ timer->COUNT8.CTRLA.bit.ENABLE = 0;
+ while(timer->COUNT8.SYNCBUSY.bit.STATUS);
+
+ timer->COUNT8.WAVE.bit.WAVEGEN = 2; // NPWM
+ timer->COUNT8.CTRLA.bit.MODE = 1; // 8-bit
+ timer->COUNT8.CTRLA.bit.PRESCALER = 0; // 1:1
+ while(timer->COUNT8.SYNCBUSY.bit.STATUS);
+
+ timer->COUNT8.CTRLBCLR.bit.DIR = 1; // Count UP
+ while(timer->COUNT8.SYNCBUSY.bit.CTRLB);
+ timer->COUNT8.CTRLBSET.bit.ONESHOT = 1; // One-shot
+ while(timer->COUNT8.SYNCBUSY.bit.CTRLB);
+ timer->COUNT8.PER.reg = 6; // PWM top
+ while(timer->COUNT8.SYNCBUSY.bit.PER);
+ timer->COUNT8.CC[0].reg = 2; // Compare
+ while(timer->COUNT8.SYNCBUSY.bit.CC0);
+ // Enable async input events,
+ // event action = restart.
+ timer->COUNT8.EVCTRL.bit.TCEI = 1;
+ timer->COUNT8.EVCTRL.bit.EVACT = 1;
+
+ // Enable timer
+ timer->COUNT8.CTRLA.reg |= TC_CTRLA_ENABLE;
+ while(timer->COUNT8.SYNCBUSY.bit.STATUS);
+
+#if(wrPeripheral == PIO_CCL)
+ // CONFIGURE CCL (inverts timer/counter output)
+
+ MCLK->APBCMASK.bit.CCL_ = 1; // Enable CCL clock
+ CCL->CTRL.bit.ENABLE = 0; // Disable to config
+ CCL->CTRL.bit.SWRST = 1; // Reset CCL registers
+ CCL->LUTCTRL[tcNum].bit.ENABLE = 0; // Disable LUT
+ CCL->LUTCTRL[tcNum].bit.FILTSEL = 0; // No filter
+ CCL->LUTCTRL[tcNum].bit.INSEL0 = 6; // TC input
+ CCL->LUTCTRL[tcNum].bit.INSEL1 = 0; // MASK
+ CCL->LUTCTRL[tcNum].bit.INSEL2 = 0; // MASK
+ CCL->LUTCTRL[tcNum].bit.TRUTH = 1; // Invert in 0
+ CCL->LUTCTRL[tcNum].bit.ENABLE = 1; // Enable LUT
+ CCL->CTRL.bit.ENABLE = 1; // Enable CCL
+#endif
+
+ // CONFIGURE EVENT SYSTEM
+
+ // Set up event system clock source from GCLK...
+ // Disable EVSYS, wait for disable
+ GCLK->PCHCTRL[EVSYS_GCLK_ID_0].bit.CHEN = 0;
+ while(GCLK->PCHCTRL[EVSYS_GCLK_ID_0].bit.CHEN);
+ pchctrl.bit.GEN = GCLK_PCHCTRL_GEN_GCLK0_Val;
+ pchctrl.bit.CHEN = 1; // Re-enable
+ GCLK->PCHCTRL[EVSYS_GCLK_ID_0].reg = pchctrl.reg;
+ // Wait for it, then enable EVSYS clock
+ while(!GCLK->PCHCTRL[EVSYS_GCLK_ID_0].bit.CHEN);
+ MCLK->APBBMASK.bit.EVSYS_ = 1;
+
+ // Connect Timer EVU to ch 0
+ EVSYS->USER[tcList[tcNum].evu].reg = 1;
+ // Datasheet recommends single write operation;
+ // reg instead of bit. Also datasheet: PATH bits
+ // must be zero when using async!
+ EVSYS_CHANNEL_Type ev;
+ ev.reg = 0;
+ ev.bit.PATH = 2; // Asynchronous
+ ev.bit.EVGEN = 0x22 + dmaChannel; // DMA channel 0+
+ EVSYS->Channel[0].CHANNEL.reg = ev.reg;
+
+ // Initialize descriptor list.
+ for(int d=0; d= 0) SPI_CS_LOW();
+}
+
+/*!
+ @brief Call after issuing command(s) or data to display. Performs
+ chip-deselect (if required) and ends an SPI transaction (if
+ using hardware SPI and transactions are supported). Required
+ for all display types; not an SPI-specific function.
+*/
+void Adafruit_SPITFT::endWrite(void) {
+ if(_cs >= 0) SPI_CS_HIGH();
+ SPI_END_TRANSACTION();
+}
+
+
+// -------------------------------------------------------------------------
+// Lower-level graphics operations. These functions require a chip-select
+// and/or SPI transaction around them (via startWrite(), endWrite() above).
+// Higher-level graphics primitives might start a single transaction and
+// then make multiple calls to these functions (e.g. circle or text
+// rendering might make repeated lines or rects) before ending the
+// transaction. It's more efficient than starting a transaction every time.
+
+/*!
+ @brief Draw a single pixel to the display at requested coordinates.
+ Not self-contained; should follow a startWrite() call.
+ @param x Horizontal position (0 = left).
+ @param y Vertical position (0 = top).
+ @param color 16-bit pixel color in '565' RGB format.
+*/
+void Adafruit_SPITFT::writePixel(int16_t x, int16_t y, uint16_t color) {
+ if((x >= 0) && (x < _width) && (y >= 0) && (y < _height)) {
+ setAddrWindow(x, y, 1, 1);
+ SPI_WRITE16(color);
+ }
+}
+
+/*!
+ @brief Issue a series of pixels from memory to the display. Not self-
+ contained; should follow startWrite() and setAddrWindow() calls.
+ @param colors Pointer to array of 16-bit pixel values in '565' RGB
+ format.
+ @param len Number of elements in 'colors' array.
+ @param block If true (default case if unspecified), function blocks
+ until DMA transfer is complete. This is simply IGNORED
+ if DMA is not enabled. If false, the function returns
+ immediately after the last DMA transfer is started,
+ and one should use the dmaWait() function before
+ doing ANY other display-related activities (or even
+ any SPI-related activities, if using an SPI display
+ that shares the bus with other devices).
+ @param bigEndian If using DMA, and if set true, bitmap in memory is in
+ big-endian order (most significant byte first). By
+ default this is false, as most microcontrollers seem
+ to be little-endian and 16-bit pixel values must be
+ byte-swapped before issuing to the display (which tend
+ to be big-endian when using SPI or 8-bit parallel).
+ If an application can optimize around this -- for
+ example, a bitmap in a uint16_t array having the byte
+ values already reordered big-endian, this can save
+ some processing time here, ESPECIALLY if using this
+ function's non-blocking DMA mode. Not all cases are
+ covered...this is really here only for SAMD DMA and
+ much forethought on the application side.
+*/
+void Adafruit_SPITFT::writePixels(uint16_t *colors, uint32_t len,
+ bool block, bool bigEndian) {
+
+ if(!len) return; // Avoid 0-byte transfers
+
+#if defined(ESP32) // ESP32 has a special SPI pixel-writing function...
+ if(connection == TFT_HARD_SPI) {
+ hwspi._spi->writePixels(colors, len * 2);
+ return;
+ }
+#elif defined(USE_SPI_DMA)
+ if((connection == TFT_HARD_SPI) || (connection == TFT_PARALLEL)) {
+ int maxSpan = maxFillLen / 2; // One scanline max
+ uint8_t pixelBufIdx = 0; // Active pixel buffer number
+ #if defined(__SAMD51__)
+ if(connection == TFT_PARALLEL) {
+ // Switch WR pin to PWM or CCL
+ pinPeripheral(tft8._wr, wrPeripheral);
+ }
+ #endif // end __SAMD51__
+ if(!bigEndian) { // Normal little-endian situation...
+ while(len) {
+ int count = (len < maxSpan) ? len : maxSpan;
+
+ // Because TFT and SAMD endianisms are different, must swap
+ // bytes from the 'colors' array passed into a DMA working
+ // buffer. This can take place while the prior DMA transfer
+ // is in progress, hence the need for two pixelBufs.
+ for(int i=0; isetDataMode(hwspi._mode);
+ } else {
+ pinPeripheral(tft8._wr, PIO_OUTPUT); // Switch WR back to GPIO
+ }
+ #endif // end __SAMD51__ || _SAMD21_
+ }
+ return;
+ }
+#endif // end USE_SPI_DMA
+
+ // All other cases (bitbang SPI or non-DMA hard SPI or parallel),
+ // use a loop with the normal 16-bit data write function:
+ while(len--) {
+ SPI_WRITE16(*colors++);
+ }
+}
+
+/*!
+ @brief Wait for the last DMA transfer in a prior non-blocking
+ writePixels() call to complete. This does nothing if DMA
+ is not enabled, and is not needed if blocking writePixels()
+ was used (as is the default case).
+*/
+void Adafruit_SPITFT::dmaWait(void) {
+#if defined(USE_SPI_DMA)
+ while(dma_busy);
+ #if defined(__SAMD51__) || defined(_SAMD21_)
+ if(connection == TFT_HARD_SPI) {
+ // See SAMD51/21 note in writeColor()
+ hwspi._spi->setDataMode(hwspi._mode);
+ } else {
+ pinPeripheral(tft8._wr, PIO_OUTPUT); // Switch WR back to GPIO
+ }
+ #endif // end __SAMD51__ || _SAMD21_
+#endif
+}
+
+/*!
+ @brief Issue a series of pixels, all the same color. Not self-
+ contained; should follow startWrite() and setAddrWindow() calls.
+ @param color 16-bit pixel color in '565' RGB format.
+ @param len Number of pixels to draw.
+*/
+void Adafruit_SPITFT::writeColor(uint16_t color, uint32_t len) {
+
+ if(!len) return; // Avoid 0-byte transfers
+
+ uint8_t hi = color >> 8, lo = color;
+
+#if defined(ESP32) // ESP32 has a special SPI pixel-writing function...
+ if(connection == TFT_HARD_SPI) {
+ #define SPI_MAX_PIXELS_AT_ONCE 32
+ #define TMPBUF_LONGWORDS (SPI_MAX_PIXELS_AT_ONCE + 1) / 2
+ #define TMPBUF_PIXELS (TMPBUF_LONGWORDS * 2)
+ static uint32_t temp[TMPBUF_LONGWORDS];
+ uint32_t c32 = color * 0x00010001;
+ uint16_t bufLen = (len < TMPBUF_PIXELS) ? len : TMPBUF_PIXELS,
+ xferLen, fillLen;
+ // Fill temp buffer 32 bits at a time
+ fillLen = (bufLen + 1) / 2; // Round up to next 32-bit boundary
+ for(uint32_t t=0; t= 16)) { // Don't bother with DMA on short pixel runs
+ int i, d, numDescriptors;
+ if(hi == lo) { // If high & low bytes are same...
+ onePixelBuf = color;
+ // Can do this with a relatively short descriptor list,
+ // each transferring a max of 32,767 (not 32,768) pixels.
+ // This won't run off the end of the allocated descriptor list,
+ // since we're using much larger chunks per descriptor here.
+ numDescriptors = (len + 32766) / 32767;
+ for(d=0; d lastFillLen) {
+ int fillStart = lastFillLen / 2,
+ fillEnd = (((len < maxFillLen) ?
+ len : maxFillLen) + 1) / 2;
+ for(i=fillStart; isetDataMode(hwspi._mode);
+ } else {
+ pinPeripheral(tft8._wr, PIO_OUTPUT); // Switch WR back to GPIO
+ }
+ #endif // end __SAMD51__
+ return;
+ }
+ #endif // end USE_SPI_DMA
+#endif // end !ESP32
+
+ // All other cases (non-DMA hard SPI, bitbang SPI, parallel)...
+
+ if(connection == TFT_HARD_SPI) {
+#if defined(ESP8266)
+ do {
+ uint32_t pixelsThisPass = len;
+ if(pixelsThisPass > 50000) pixelsThisPass = 50000;
+ len -= pixelsThisPass;
+ yield(); // Periodic yield() on long fills
+ while(pixelsThisPass--) {
+ hwspi._spi->write(hi);
+ hwspi._spi->write(lo);
+ }
+ } while(len);
+#else // !ESP8266
+ while(len--) {
+ #if defined(__AVR__)
+ AVR_WRITESPI(hi);
+ AVR_WRITESPI(lo);
+ #elif defined(ESP32)
+ hwspi._spi->write(hi);
+ hwspi._spi->write(lo);
+ #else
+ hwspi._spi->transfer(hi);
+ hwspi._spi->transfer(lo);
+ #endif
+ }
+#endif // end !ESP8266
+ } else if(connection == TFT_SOFT_SPI) {
+#if defined(ESP8266)
+ do {
+ uint32_t pixelsThisPass = len;
+ if(pixelsThisPass > 20000) pixelsThisPass = 20000;
+ len -= pixelsThisPass;
+ yield(); // Periodic yield() on long fills
+ while(pixelsThisPass--) {
+ for(uint16_t bit=0, x=color; bit<16; bit++) {
+ if(x & 0x8000) SPI_MOSI_HIGH();
+ else SPI_MOSI_LOW();
+ SPI_SCK_HIGH();
+ SPI_SCK_LOW();
+ x <<= 1;
+ }
+ }
+ } while(len);
+#else // !ESP8266
+ while(len--) {
+ #if defined(__AVR__)
+ for(uint8_t bit=0, x=hi; bit<8; bit++) {
+ if(x & 0x80) SPI_MOSI_HIGH();
+ else SPI_MOSI_LOW();
+ SPI_SCK_HIGH();
+ SPI_SCK_LOW();
+ x <<= 1;
+ }
+ for(uint8_t bit=0, x=lo; bit<8; bit++) {
+ if(x & 0x80) SPI_MOSI_HIGH();
+ else SPI_MOSI_LOW();
+ SPI_SCK_HIGH();
+ SPI_SCK_LOW();
+ x <<= 1;
+ }
+ #else // !__AVR__
+ for(uint16_t bit=0, x=color; bit<16; bit++) {
+ if(x & 0x8000) SPI_MOSI_HIGH();
+ else SPI_MOSI_LOW();
+ SPI_SCK_HIGH();
+ x <<= 1;
+ SPI_SCK_LOW();
+ }
+ #endif // end !__AVR__
+ }
+#endif // end !ESP8266
+ } else { // PARALLEL
+ if(hi == lo) {
+#if defined(__AVR__)
+ len *= 2;
+ *tft8.writePort = hi;
+ while(len--) {
+ TFT_WR_STROBE();
+ }
+#elif defined(USE_FAST_PINIO)
+ if(!tft8.wide) {
+ len *= 2;
+ *tft8.writePort = hi;
+ } else {
+ *(volatile uint16_t *)tft8.writePort = color;
+ }
+ while(len--) {
+ TFT_WR_STROBE();
+ }
+#endif
+ } else {
+ while(len--) {
+#if defined(__AVR__)
+ *tft8.writePort = hi;
+ TFT_WR_STROBE();
+ *tft8.writePort = lo;
+#elif defined(USE_FAST_PINIO)
+ if(!tft8.wide) {
+ *tft8.writePort = hi;
+ TFT_WR_STROBE();
+ *tft8.writePort = lo;
+ } else {
+ *(volatile uint16_t *)tft8.writePort = color;
+ }
+#endif
+ TFT_WR_STROBE();
+ }
+ }
+ }
+}
+
+/*!
+ @brief Draw a filled rectangle to the display. Not self-contained;
+ should follow startWrite(). Typically used by higher-level
+ graphics primitives; user code shouldn't need to call this and
+ is likely to use the self-contained fillRect() instead.
+ writeFillRect() performs its own edge clipping and rejection;
+ see writeFillRectPreclipped() for a more 'raw' implementation.
+ @param x Horizontal position of first corner.
+ @param y Vertical position of first corner.
+ @param w Rectangle width in pixels (positive = right of first
+ corner, negative = left of first corner).
+ @param h Rectangle height in pixels (positive = below first
+ corner, negative = above first corner).
+ @param color 16-bit fill color in '565' RGB format.
+ @note Written in this deep-nested way because C by definition will
+ optimize for the 'if' case, not the 'else' -- avoids branches
+ and rejects clipped rectangles at the least-work possibility.
+*/
+void Adafruit_SPITFT::writeFillRect(int16_t x, int16_t y,
+ int16_t w, int16_t h, uint16_t color) {
+ if(w && h) { // Nonzero width and height?
+ if(w < 0) { // If negative width...
+ x += w + 1; // Move X to left edge
+ w = -w; // Use positive width
+ }
+ if(x < _width) { // Not off right
+ if(h < 0) { // If negative height...
+ y += h + 1; // Move Y to top edge
+ h = -h; // Use positive height
+ }
+ if(y < _height) { // Not off bottom
+ int16_t x2 = x + w - 1;
+ if(x2 >= 0) { // Not off left
+ int16_t y2 = y + h - 1;
+ if(y2 >= 0) { // Not off top
+ // Rectangle partly or fully overlaps screen
+ if(x < 0) { x = 0; w = x2 + 1; } // Clip left
+ if(y < 0) { y = 0; h = y2 + 1; } // Clip top
+ if(x2 >= _width) { w = _width - x; } // Clip right
+ if(y2 >= _height) { h = _height - y; } // Clip bottom
+ writeFillRectPreclipped(x, y, w, h, color);
+ }
+ }
+ }
+ }
+ }
+}
+
+/*!
+ @brief Draw a horizontal line on the display. Performs edge clipping
+ and rejection. Not self-contained; should follow startWrite().
+ Typically used by higher-level graphics primitives; user code
+ shouldn't need to call this and is likely to use the self-
+ contained drawFastHLine() instead.
+ @param x Horizontal position of first point.
+ @param y Vertical position of first point.
+ @param w Line width in pixels (positive = right of first point,
+ negative = point of first corner).
+ @param color 16-bit line color in '565' RGB format.
+*/
+void inline Adafruit_SPITFT::writeFastHLine(int16_t x, int16_t y, int16_t w,
+ uint16_t color) {
+ if((y >= 0) && (y < _height) && w) { // Y on screen, nonzero width
+ if(w < 0) { // If negative width...
+ x += w + 1; // Move X to left edge
+ w = -w; // Use positive width
+ }
+ if(x < _width) { // Not off right
+ int16_t x2 = x + w - 1;
+ if(x2 >= 0) { // Not off left
+ // Line partly or fully overlaps screen
+ if(x < 0) { x = 0; w = x2 + 1; } // Clip left
+ if(x2 >= _width) { w = _width - x; } // Clip right
+ writeFillRectPreclipped(x, y, w, 1, color);
+ }
+ }
+ }
+}
+
+/*!
+ @brief Draw a vertical line on the display. Performs edge clipping and
+ rejection. Not self-contained; should follow startWrite().
+ Typically used by higher-level graphics primitives; user code
+ shouldn't need to call this and is likely to use the self-
+ contained drawFastVLine() instead.
+ @param x Horizontal position of first point.
+ @param y Vertical position of first point.
+ @param h Line height in pixels (positive = below first point,
+ negative = above first point).
+ @param color 16-bit line color in '565' RGB format.
+*/
+void inline Adafruit_SPITFT::writeFastVLine(int16_t x, int16_t y, int16_t h,
+ uint16_t color) {
+ if((x >= 0) && (x < _width) && h) { // X on screen, nonzero height
+ if(h < 0) { // If negative height...
+ y += h + 1; // Move Y to top edge
+ h = -h; // Use positive height
+ }
+ if(y < _height) { // Not off bottom
+ int16_t y2 = y + h - 1;
+ if(y2 >= 0) { // Not off top
+ // Line partly or fully overlaps screen
+ if(y < 0) { y = 0; h = y2 + 1; } // Clip top
+ if(y2 >= _height) { h = _height - y; } // Clip bottom
+ writeFillRectPreclipped(x, y, 1, h, color);
+ }
+ }
+ }
+}
+
+/*!
+ @brief A lower-level version of writeFillRect(). This version requires
+ all inputs are in-bounds, that width and height are positive,
+ and no part extends offscreen. NO EDGE CLIPPING OR REJECTION IS
+ PERFORMED. If higher-level graphics primitives are written to
+ handle their own clipping earlier in the drawing process, this
+ can avoid unnecessary function calls and repeated clipping
+ operations in the lower-level functions.
+ @param x Horizontal position of first corner. MUST BE WITHIN
+ SCREEN BOUNDS.
+ @param y Vertical position of first corner. MUST BE WITHIN SCREEN
+ BOUNDS.
+ @param w Rectangle width in pixels. MUST BE POSITIVE AND NOT
+ EXTEND OFF SCREEN.
+ @param h Rectangle height in pixels. MUST BE POSITIVE AND NOT
+ EXTEND OFF SCREEN.
+ @param color 16-bit fill color in '565' RGB format.
+ @note This is a new function, no graphics primitives besides rects
+ and horizontal/vertical lines are written to best use this yet.
+*/
+inline void Adafruit_SPITFT::writeFillRectPreclipped(int16_t x, int16_t y,
+ int16_t w, int16_t h, uint16_t color) {
+ setAddrWindow(x, y, w, h);
+ writeColor(color, (uint32_t)w * h);
+}
+
+
+// -------------------------------------------------------------------------
+// Ever-so-slightly higher-level graphics operations. Similar to the 'write'
+// functions above, but these contain their own chip-select and SPI
+// transactions as needed (via startWrite(), endWrite()). They're typically
+// used solo -- as graphics primitives in themselves, not invoked by higher-
+// level primitives (which should use the functions above for better
+// performance).
+
+/*!
+ @brief Draw a single pixel to the display at requested coordinates.
+ Self-contained and provides its own transaction as needed
+ (see writePixel(x,y,color) for a lower-level variant).
+ Edge clipping is performed here.
+ @param x Horizontal position (0 = left).
+ @param y Vertical position (0 = top).
+ @param color 16-bit pixel color in '565' RGB format.
+*/
+void Adafruit_SPITFT::drawPixel(int16_t x, int16_t y, uint16_t color) {
+ // Clip first...
+ if((x >= 0) && (x < _width) && (y >= 0) && (y < _height)) {
+ // THEN set up transaction (if needed) and draw...
+ startWrite();
+ setAddrWindow(x, y, 1, 1);
+ SPI_WRITE16(color);
+ endWrite();
+ }
+}
+
+/*!
+ @brief Draw a filled rectangle to the display. Self-contained and
+ provides its own transaction as needed (see writeFillRect() or
+ writeFillRectPreclipped() for lower-level variants). Edge
+ clipping and rejection is performed here.
+ @param x Horizontal position of first corner.
+ @param y Vertical position of first corner.
+ @param w Rectangle width in pixels (positive = right of first
+ corner, negative = left of first corner).
+ @param h Rectangle height in pixels (positive = below first
+ corner, negative = above first corner).
+ @param color 16-bit fill color in '565' RGB format.
+ @note This repeats the writeFillRect() function almost in its entirety,
+ with the addition of a transaction start/end. It's done this way
+ (rather than starting the transaction and calling writeFillRect()
+ to handle clipping and so forth) so that the transaction isn't
+ performed at all if the rectangle is rejected. It's really not
+ that much code.
+*/
+void Adafruit_SPITFT::fillRect(int16_t x, int16_t y, int16_t w, int16_t h,
+ uint16_t color) {
+ if(w && h) { // Nonzero width and height?
+ if(w < 0) { // If negative width...
+ x += w + 1; // Move X to left edge
+ w = -w; // Use positive width
+ }
+ if(x < _width) { // Not off right
+ if(h < 0) { // If negative height...
+ y += h + 1; // Move Y to top edge
+ h = -h; // Use positive height
+ }
+ if(y < _height) { // Not off bottom
+ int16_t x2 = x + w - 1;
+ if(x2 >= 0) { // Not off left
+ int16_t y2 = y + h - 1;
+ if(y2 >= 0) { // Not off top
+ // Rectangle partly or fully overlaps screen
+ if(x < 0) { x = 0; w = x2 + 1; } // Clip left
+ if(y < 0) { y = 0; h = y2 + 1; } // Clip top
+ if(x2 >= _width) { w = _width - x; } // Clip right
+ if(y2 >= _height) { h = _height - y; } // Clip bottom
+ startWrite();
+ writeFillRectPreclipped(x, y, w, h, color);
+ endWrite();
+ }
+ }
+ }
+ }
+ }
+}
+
+/*!
+ @brief Draw a horizontal line on the display. Self-contained and
+ provides its own transaction as needed (see writeFastHLine() for
+ a lower-level variant). Edge clipping and rejection is performed
+ here.
+ @param x Horizontal position of first point.
+ @param y Vertical position of first point.
+ @param w Line width in pixels (positive = right of first point,
+ negative = point of first corner).
+ @param color 16-bit line color in '565' RGB format.
+ @note This repeats the writeFastHLine() function almost in its
+ entirety, with the addition of a transaction start/end. It's
+ done this way (rather than starting the transaction and calling
+ writeFastHLine() to handle clipping and so forth) so that the
+ transaction isn't performed at all if the line is rejected.
+*/
+void Adafruit_SPITFT::drawFastHLine(int16_t x, int16_t y, int16_t w,
+ uint16_t color) {
+ if((y >= 0) && (y < _height) && w) { // Y on screen, nonzero width
+ if(w < 0) { // If negative width...
+ x += w + 1; // Move X to left edge
+ w = -w; // Use positive width
+ }
+ if(x < _width) { // Not off right
+ int16_t x2 = x + w - 1;
+ if(x2 >= 0) { // Not off left
+ // Line partly or fully overlaps screen
+ if(x < 0) { x = 0; w = x2 + 1; } // Clip left
+ if(x2 >= _width) { w = _width - x; } // Clip right
+ startWrite();
+ writeFillRectPreclipped(x, y, w, 1, color);
+ endWrite();
+ }
+ }
+ }
+}
+
+/*!
+ @brief Draw a vertical line on the display. Self-contained and provides
+ its own transaction as needed (see writeFastHLine() for a lower-
+ level variant). Edge clipping and rejection is performed here.
+ @param x Horizontal position of first point.
+ @param y Vertical position of first point.
+ @param h Line height in pixels (positive = below first point,
+ negative = above first point).
+ @param color 16-bit line color in '565' RGB format.
+ @note This repeats the writeFastVLine() function almost in its
+ entirety, with the addition of a transaction start/end. It's
+ done this way (rather than starting the transaction and calling
+ writeFastVLine() to handle clipping and so forth) so that the
+ transaction isn't performed at all if the line is rejected.
+*/
+void Adafruit_SPITFT::drawFastVLine(int16_t x, int16_t y, int16_t h,
+ uint16_t color) {
+ if((x >= 0) && (x < _width) && h) { // X on screen, nonzero height
+ if(h < 0) { // If negative height...
+ y += h + 1; // Move Y to top edge
+ h = -h; // Use positive height
+ }
+ if(y < _height) { // Not off bottom
+ int16_t y2 = y + h - 1;
+ if(y2 >= 0) { // Not off top
+ // Line partly or fully overlaps screen
+ if(y < 0) { y = 0; h = y2 + 1; } // Clip top
+ if(y2 >= _height) { h = _height - y; } // Clip bottom
+ startWrite();
+ writeFillRectPreclipped(x, y, 1, h, color);
+ endWrite();
+ }
+ }
+ }
+}
+
+/*!
+ @brief Essentially writePixel() with a transaction around it. I don't
+ think this is in use by any of our code anymore (believe it was
+ for some older BMP-reading examples), but is kept here in case
+ any user code relies on it. Consider it DEPRECATED.
+ @param color 16-bit pixel color in '565' RGB format.
+*/
+void Adafruit_SPITFT::pushColor(uint16_t color) {
+ startWrite();
+ SPI_WRITE16(color);
+ endWrite();
+}
+
+/*!
+ @brief Draw a 16-bit image (565 RGB) at the specified (x,y) position.
+ For 16-bit display devices; no color reduction performed.
+ Adapted from https://github.com/PaulStoffregen/ILI9341_t3
+ by Marc MERLIN. See examples/pictureEmbed to use this.
+ 5/6/2017: function name and arguments have changed for
+ compatibility with current GFX library and to avoid naming
+ problems in prior implementation. Formerly drawBitmap() with
+ arguments in different order. Handles its own transaction and
+ edge clipping/rejection.
+ @param x Top left corner horizontal coordinate.
+ @param y Top left corner vertical coordinate.
+ @param pcolors Pointer to 16-bit array of pixel values.
+ @param w Width of bitmap in pixels.
+ @param h Height of bitmap in pixels.
+*/
+void Adafruit_SPITFT::drawRGBBitmap(int16_t x, int16_t y,
+ uint16_t *pcolors, int16_t w, int16_t h) {
+
+ int16_t x2, y2; // Lower-right coord
+ if(( x >= _width ) || // Off-edge right
+ ( y >= _height) || // " top
+ ((x2 = (x+w-1)) < 0 ) || // " left
+ ((y2 = (y+h-1)) < 0) ) return; // " bottom
+
+ int16_t bx1=0, by1=0, // Clipped top-left within bitmap
+ saveW=w; // Save original bitmap width value
+ if(x < 0) { // Clip left
+ w += x;
+ bx1 = -x;
+ x = 0;
+ }
+ if(y < 0) { // Clip top
+ h += y;
+ by1 = -y;
+ y = 0;
+ }
+ if(x2 >= _width ) w = _width - x; // Clip right
+ if(y2 >= _height) h = _height - y; // Clip bottom
+
+ pcolors += by1 * saveW + bx1; // Offset bitmap ptr to clipped top-left
+ startWrite();
+ setAddrWindow(x, y, w, h); // Clipped area
+ while(h--) { // For each (clipped) scanline...
+ writePixels(pcolors, w); // Push one (clipped) row
+ pcolors += saveW; // Advance pointer by one full (unclipped) line
+ }
+ endWrite();
+}
+
+
+// -------------------------------------------------------------------------
+// Miscellaneous class member functions that don't draw anything.
+
+/*!
+ @brief Invert the colors of the display (if supported by hardware).
+ Self-contained, no transaction setup required.
+ @param i true = inverted display, false = normal display.
+*/
+void Adafruit_SPITFT::invertDisplay(bool i) {
+ startWrite();
+ writeCommand(i ? invertOnCommand : invertOffCommand);
+ endWrite();
+}
+
+/*!
+ @brief Given 8-bit red, green and blue values, return a 'packed'
+ 16-bit color value in '565' RGB format (5 bits red, 6 bits
+ green, 5 bits blue). This is just a mathematical operation,
+ no hardware is touched.
+ @param red 8-bit red brightnesss (0 = off, 255 = max).
+ @param green 8-bit green brightnesss (0 = off, 255 = max).
+ @param blue 8-bit blue brightnesss (0 = off, 255 = max).
+ @return 'Packed' 16-bit color value (565 format).
+*/
+uint16_t Adafruit_SPITFT::color565(uint8_t red, uint8_t green, uint8_t blue) {
+ return ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | (blue >> 3);
+}
+
+/*!
+ @brief Adafruit_SPITFT Send Command handles complete sending of commands and data
+ @param commandByte The Command Byte
+ @param dataBytes A pointer to the Data bytes to send
+ @param numDataBytes The number of bytes we should send
+ */
+void Adafruit_SPITFT::sendCommand(uint8_t commandByte, uint8_t *dataBytes, uint8_t numDataBytes) {
+ SPI_BEGIN_TRANSACTION();
+ if(_cs >= 0) SPI_CS_LOW();
+
+ SPI_DC_LOW(); // Command mode
+ spiWrite(commandByte); // Send the command byte
+
+ SPI_DC_HIGH();
+ for (int i=0; i= 0) SPI_CS_HIGH();
+ SPI_END_TRANSACTION();
+}
+
+/*!
+ @brief Adafruit_SPITFT Send Command handles complete sending of commands and const data
+ @param commandByte The Command Byte
+ @param dataBytes A pointer to the Data bytes to send
+ @param numDataBytes The number of bytes we should send
+ */
+void Adafruit_SPITFT::sendCommand(uint8_t commandByte, const uint8_t *dataBytes, uint8_t numDataBytes) {
+ SPI_BEGIN_TRANSACTION();
+ if(_cs >= 0) SPI_CS_LOW();
+
+ SPI_DC_LOW(); // Command mode
+ spiWrite(commandByte); // Send the command byte
+
+ SPI_DC_HIGH();
+ for (int i=0; i= 0) SPI_CS_HIGH();
+ SPI_END_TRANSACTION();
+}
+
+/*!
+ @brief Read 8 bits of data from display configuration memory (not RAM).
+ This is highly undocumented/supported and should be avoided,
+ function is only included because some of the examples use it.
+ @param commandByte
+ The command register to read data from.
+ @param index
+ The byte index into the command to read from.
+ @return Unsigned 8-bit data read from display register.
+ */
+/**************************************************************************/
+uint8_t Adafruit_SPITFT::readcommand8(uint8_t commandByte, uint8_t index) {
+ uint8_t result;
+ startWrite();
+ SPI_DC_LOW(); // Command mode
+ spiWrite(commandByte);
+ SPI_DC_HIGH(); // Data mode
+ do {
+ result = spiRead();
+ } while(index--); // Discard bytes up to index'th
+ endWrite();
+ return result;
+}
+
+// -------------------------------------------------------------------------
+// Lowest-level hardware-interfacing functions. Many of these are inline and
+// compile to different things based on #defines -- typically just a few
+// instructions. Others, not so much, those are not inlined.
+
+/*!
+ @brief Start an SPI transaction if using the hardware SPI interface to
+ the display. If using an earlier version of the Arduino platform
+ (before the addition of SPI transactions), this instead attempts
+ to set up the SPI clock and mode. No action is taken if the
+ connection is not hardware SPI-based. This does NOT include a
+ chip-select operation -- see startWrite() for a function that
+ encapsulated both actions.
+*/
+inline void Adafruit_SPITFT::SPI_BEGIN_TRANSACTION(void) {
+ if(connection == TFT_HARD_SPI) {
+#if defined(SPI_HAS_TRANSACTION)
+ hwspi._spi->beginTransaction(hwspi.settings);
+#else // No transactions, configure SPI manually...
+ #if defined(__AVR__) || defined(TEENSYDUINO) || defined(ARDUINO_ARCH_STM32F1)
+ hwspi._spi->setClockDivider(SPI_CLOCK_DIV2);
+ #elif defined(__arm__)
+ hwspi._spi->setClockDivider(11);
+ #elif defined(ESP8266) || defined(ESP32)
+ hwspi._spi->setFrequency(hwspi._freq);
+ #elif defined(RASPI) || defined(ARDUINO_ARCH_STM32F1)
+ hwspi._spi->setClock(hwspi._freq);
+ #endif
+ hwspi._spi->setBitOrder(MSBFIRST);
+ hwspi._spi->setDataMode(hwspi._mode);
+#endif // end !SPI_HAS_TRANSACTION
+ }
+}
+
+/*!
+ @brief End an SPI transaction if using the hardware SPI interface to
+ the display. No action is taken if the connection is not
+ hardware SPI-based or if using an earlier version of the Arduino
+ platform (before the addition of SPI transactions). This does
+ NOT include a chip-deselect operation -- see endWrite() for a
+ function that encapsulated both actions.
+*/
+inline void Adafruit_SPITFT::SPI_END_TRANSACTION(void) {
+#if defined(SPI_HAS_TRANSACTION)
+ if(connection == TFT_HARD_SPI) {
+ hwspi._spi->endTransaction();
+ }
+#endif
+}
+
+/*!
+ @brief Issue a single 8-bit value to the display. Chip-select,
+ transaction and data/command selection must have been
+ previously set -- this ONLY issues the byte. This is another of
+ those functions in the library with a now-not-accurate name
+ that's being maintained for compatibility with outside code.
+ This function is used even if display connection is parallel.
+ @param b 8-bit value to write.
+*/
+void Adafruit_SPITFT::spiWrite(uint8_t b) {
+ if(connection == TFT_HARD_SPI) {
+#if defined(__AVR__)
+ AVR_WRITESPI(b);
+#elif defined(ESP8266) || defined(ESP32)
+ hwspi._spi->write(b);
+#else
+ hwspi._spi->transfer(b);
+#endif
+ } else if(connection == TFT_SOFT_SPI) {
+ for(uint8_t bit=0; bit<8; bit++) {
+ if(b & 0x80) SPI_MOSI_HIGH();
+ else SPI_MOSI_LOW();
+ SPI_SCK_HIGH();
+ b <<= 1;
+ SPI_SCK_LOW();
+ }
+ } else { // TFT_PARALLEL
+#if defined(__AVR__)
+ *tft8.writePort = b;
+#elif defined(USE_FAST_PINIO)
+ if(!tft8.wide) *tft8.writePort = b;
+ else *(volatile uint16_t *)tft8.writePort = b;
+#endif
+ TFT_WR_STROBE();
+ }
+}
+
+/*!
+ @brief Write a single command byte to the display. Chip-select and
+ transaction must have been previously set -- this ONLY sets
+ the device to COMMAND mode, issues the byte and then restores
+ DATA mode. There is no corresponding explicit writeData()
+ function -- just use spiWrite().
+ @param cmd 8-bit command to write.
+*/
+void Adafruit_SPITFT::writeCommand(uint8_t cmd) {
+ SPI_DC_LOW();
+ spiWrite(cmd);
+ SPI_DC_HIGH();
+}
+
+/*!
+ @brief Read a single 8-bit value from the display. Chip-select and
+ transaction must have been previously set -- this ONLY reads
+ the byte. This is another of those functions in the library
+ with a now-not-accurate name that's being maintained for
+ compatibility with outside code. This function is used even if
+ display connection is parallel.
+ @return Unsigned 8-bit value read (always zero if USE_FAST_PINIO is
+ not supported by the MCU architecture).
+*/
+uint8_t Adafruit_SPITFT::spiRead(void) {
+ uint8_t b = 0;
+ uint16_t w = 0;
+ if(connection == TFT_HARD_SPI) {
+ return hwspi._spi->transfer((uint8_t)0);
+ } else if(connection == TFT_SOFT_SPI) {
+ if(swspi._miso >= 0) {
+ for(uint8_t i=0; i<8; i++) {
+ SPI_SCK_HIGH();
+ b <<= 1;
+ if(SPI_MISO_READ()) b++;
+ SPI_SCK_LOW();
+ }
+ }
+ return b;
+ } else { // TFT_PARALLEL
+ if(tft8._rd >= 0) {
+#if defined(USE_FAST_PINIO)
+ TFT_RD_LOW(); // Read line LOW
+ #if defined(__AVR__)
+ *tft8.portDir = 0x00; // Set port to input state
+ w = *tft8.readPort; // Read value from port
+ *tft8.portDir = 0xFF; // Restore port to output
+ #else // !__AVR__
+ if(!tft8.wide) { // 8-bit TFT connection
+ #if defined(HAS_PORT_SET_CLR)
+ *tft8.dirClr = 0xFF; // Set port to input state
+ w = *tft8.readPort; // Read value from port
+ *tft8.dirSet = 0xFF; // Restore port to output
+ #else // !HAS_PORT_SET_CLR
+ *tft8.portDir = 0x00; // Set port to input state
+ w = *tft8.readPort; // Read value from port
+ *tft8.portDir = 0xFF; // Restore port to output
+ #endif // end HAS_PORT_SET_CLR
+ } else { // 16-bit TFT connection
+ #if defined(HAS_PORT_SET_CLR)
+ *(volatile uint16_t *)tft8.dirClr = 0xFFFF; // Input state
+ w = *(volatile uint16_t *)tft8.readPort; // 16-bit read
+ *(volatile uint16_t *)tft8.dirSet = 0xFFFF; // Output state
+ #else // !HAS_PORT_SET_CLR
+ *(volatile uint16_t *)tft8.portDir = 0x0000; // Input state
+ w = *(volatile uint16_t *)tft8.readPort; // 16-bit read
+ *(volatile uint16_t *)tft8.portDir = 0xFFFF; // Output state
+ #endif // end !HAS_PORT_SET_CLR
+ }
+ TFT_RD_HIGH(); // Read line HIGH
+ #endif // end !__AVR__
+#else // !USE_FAST_PINIO
+ w = 0; // Parallel TFT is NOT SUPPORTED without USE_FAST_PINIO
+#endif // end !USE_FAST_PINIO
+ }
+ return w;
+ }
+}
+
+/*!
+ @brief Set the software (bitbang) SPI MOSI line HIGH.
+*/
+inline void Adafruit_SPITFT::SPI_MOSI_HIGH(void) {
+#if defined(USE_FAST_PINIO)
+ #if defined(HAS_PORT_SET_CLR)
+ #if defined(KINETISK)
+ *swspi.mosiPortSet = 1;
+ #else // !KINETISK
+ *swspi.mosiPortSet = swspi.mosiPinMask;
+ #endif
+ #else // !HAS_PORT_SET_CLR
+ *swspi.mosiPort |= swspi.mosiPinMaskSet;
+ #endif // end !HAS_PORT_SET_CLR
+#else // !USE_FAST_PINIO
+ digitalWrite(swspi._mosi, HIGH);
+ #if defined(ESP32)
+ for(volatile uint8_t i=0; i<1; i++);
+ #endif // end ESP32
+#endif // end !USE_FAST_PINIO
+}
+
+/*!
+ @brief Set the software (bitbang) SPI MOSI line LOW.
+*/
+inline void Adafruit_SPITFT::SPI_MOSI_LOW(void) {
+#if defined(USE_FAST_PINIO)
+ #if defined(HAS_PORT_SET_CLR)
+ #if defined(KINETISK)
+ *swspi.mosiPortClr = 1;
+ #else // !KINETISK
+ *swspi.mosiPortClr = swspi.mosiPinMask;
+ #endif
+ #else // !HAS_PORT_SET_CLR
+ *swspi.mosiPort &= swspi.mosiPinMaskClr;
+ #endif // end !HAS_PORT_SET_CLR
+#else // !USE_FAST_PINIO
+ digitalWrite(swspi._mosi, LOW);
+ #if defined(ESP32)
+ for(volatile uint8_t i=0; i<1; i++);
+ #endif // end ESP32
+#endif // end !USE_FAST_PINIO
+}
+
+/*!
+ @brief Set the software (bitbang) SPI SCK line HIGH.
+*/
+inline void Adafruit_SPITFT::SPI_SCK_HIGH(void) {
+#if defined(USE_FAST_PINIO)
+ #if defined(HAS_PORT_SET_CLR)
+ #if defined(KINETISK)
+ *swspi.sckPortSet = 1;
+ #else // !KINETISK
+ *swspi.sckPortSet = swspi.sckPinMask;
+ #if defined(__IMXRT1052__) || defined(__IMXRT1062__) // Teensy 4.x
+ for(volatile uint8_t i=0; i<1; i++);
+ #endif
+ #endif
+ #else // !HAS_PORT_SET_CLR
+ *swspi.sckPort |= swspi.sckPinMaskSet;
+ #endif // end !HAS_PORT_SET_CLR
+#else // !USE_FAST_PINIO
+ digitalWrite(swspi._sck, HIGH);
+ #if defined(ESP32)
+ for(volatile uint8_t i=0; i<1; i++);
+ #endif // end ESP32
+#endif // end !USE_FAST_PINIO
+}
+
+/*!
+ @brief Set the software (bitbang) SPI SCK line LOW.
+*/
+inline void Adafruit_SPITFT::SPI_SCK_LOW(void) {
+#if defined(USE_FAST_PINIO)
+ #if defined(HAS_PORT_SET_CLR)
+ #if defined(KINETISK)
+ *swspi.sckPortClr = 1;
+ #else // !KINETISK
+ *swspi.sckPortClr = swspi.sckPinMask;
+ #if defined(__IMXRT1052__) || defined(__IMXRT1062__) // Teensy 4.x
+ for(volatile uint8_t i=0; i<1; i++);
+ #endif
+ #endif
+ #else // !HAS_PORT_SET_CLR
+ *swspi.sckPort &= swspi.sckPinMaskClr;
+ #endif // end !HAS_PORT_SET_CLR
+#else // !USE_FAST_PINIO
+ digitalWrite(swspi._sck, LOW);
+ #if defined(ESP32)
+ for(volatile uint8_t i=0; i<1; i++);
+ #endif // end ESP32
+#endif // end !USE_FAST_PINIO
+}
+
+/*!
+ @brief Read the state of the software (bitbang) SPI MISO line.
+ @return true if HIGH, false if LOW.
+*/
+inline bool Adafruit_SPITFT::SPI_MISO_READ(void) {
+#if defined(USE_FAST_PINIO)
+ #if defined(KINETISK)
+ return *swspi.misoPort;
+ #else // !KINETISK
+ return *swspi.misoPort & swspi.misoPinMask;
+ #endif // end !KINETISK
+#else // !USE_FAST_PINIO
+ return digitalRead(swspi._miso);
+#endif // end !USE_FAST_PINIO
+}
+
+/*!
+ @brief Issue a single 16-bit value to the display. Chip-select,
+ transaction and data/command selection must have been
+ previously set -- this ONLY issues the word. Despite the name,
+ this function is used even if display connection is parallel;
+ name was maintaned for backward compatibility. Naming is also
+ not consistent with the 8-bit version, spiWrite(). Sorry about
+ that. Again, staying compatible with outside code.
+ @param w 16-bit value to write.
+*/
+void Adafruit_SPITFT::SPI_WRITE16(uint16_t w) {
+ if(connection == TFT_HARD_SPI) {
+#if defined(__AVR__)
+ AVR_WRITESPI(w >> 8);
+ AVR_WRITESPI(w);
+#elif defined(ESP8266) || defined(ESP32)
+ hwspi._spi->write16(w);
+#else
+ hwspi._spi->transfer(w >> 8);
+ hwspi._spi->transfer(w);
+#endif
+ } else if(connection == TFT_SOFT_SPI) {
+ for(uint8_t bit=0; bit<16; bit++) {
+ if(w & 0x8000) SPI_MOSI_HIGH();
+ else SPI_MOSI_LOW();
+ SPI_SCK_HIGH();
+ SPI_SCK_LOW();
+ w <<= 1;
+ }
+ } else { // TFT_PARALLEL
+#if defined(__AVR__)
+ *tft8.writePort = w >> 8;
+ TFT_WR_STROBE();
+ *tft8.writePort = w;
+#elif defined(USE_FAST_PINIO)
+ if(!tft8.wide) {
+ *tft8.writePort = w >> 8;
+ TFT_WR_STROBE();
+ *tft8.writePort = w;
+ } else {
+ *(volatile uint16_t *)tft8.writePort = w;
+ }
+#endif
+ TFT_WR_STROBE();
+ }
+}
+
+/*!
+ @brief Issue a single 32-bit value to the display. Chip-select,
+ transaction and data/command selection must have been
+ previously set -- this ONLY issues the longword. Despite the
+ name, this function is used even if display connection is
+ parallel; name was maintaned for backward compatibility. Naming
+ is also not consistent with the 8-bit version, spiWrite().
+ Sorry about that. Again, staying compatible with outside code.
+ @param l 32-bit value to write.
+*/
+void Adafruit_SPITFT::SPI_WRITE32(uint32_t l) {
+ if(connection == TFT_HARD_SPI) {
+#if defined(__AVR__)
+ AVR_WRITESPI(l >> 24);
+ AVR_WRITESPI(l >> 16);
+ AVR_WRITESPI(l >> 8);
+ AVR_WRITESPI(l );
+#elif defined(ESP8266) || defined(ESP32)
+ hwspi._spi->write32(l);
+#else
+ hwspi._spi->transfer(l >> 24);
+ hwspi._spi->transfer(l >> 16);
+ hwspi._spi->transfer(l >> 8);
+ hwspi._spi->transfer(l);
+#endif
+ } else if(connection == TFT_SOFT_SPI) {
+ for(uint8_t bit=0; bit<32; bit++) {
+ if(l & 0x80000000) SPI_MOSI_HIGH();
+ else SPI_MOSI_LOW();
+ SPI_SCK_HIGH();
+ SPI_SCK_LOW();
+ l <<= 1;
+ }
+ } else { // TFT_PARALLEL
+#if defined(__AVR__)
+ *tft8.writePort = l >> 24;
+ TFT_WR_STROBE();
+ *tft8.writePort = l >> 16;
+ TFT_WR_STROBE();
+ *tft8.writePort = l >> 8;
+ TFT_WR_STROBE();
+ *tft8.writePort = l;
+#elif defined(USE_FAST_PINIO)
+ if(!tft8.wide) {
+ *tft8.writePort = l >> 24;
+ TFT_WR_STROBE();
+ *tft8.writePort = l >> 16;
+ TFT_WR_STROBE();
+ *tft8.writePort = l >> 8;
+ TFT_WR_STROBE();
+ *tft8.writePort = l;
+ } else {
+ *(volatile uint16_t *)tft8.writePort = l >> 16;
+ TFT_WR_STROBE();
+ *(volatile uint16_t *)tft8.writePort = l;
+ }
+#endif
+ TFT_WR_STROBE();
+ }
+}
+
+/*!
+ @brief Set the WR line LOW, then HIGH. Used for parallel-connected
+ interfaces when writing data.
+*/
+inline void Adafruit_SPITFT::TFT_WR_STROBE(void) {
+#if defined(USE_FAST_PINIO)
+ #if defined(HAS_PORT_SET_CLR)
+ #if defined(KINETISK)
+ *tft8.wrPortClr = 1;
+ *tft8.wrPortSet = 1;
+ #else // !KINETISK
+ *tft8.wrPortClr = tft8.wrPinMask;
+ *tft8.wrPortSet = tft8.wrPinMask;
+ #endif // end !KINETISK
+ #else // !HAS_PORT_SET_CLR
+ *tft8.wrPort &= tft8.wrPinMaskClr;
+ *tft8.wrPort |= tft8.wrPinMaskSet;
+ #endif // end !HAS_PORT_SET_CLR
+#else // !USE_FAST_PINIO
+ digitalWrite(tft8._wr, LOW);
+ digitalWrite(tft8._wr, HIGH);
+#endif // end !USE_FAST_PINIO
+}
+
+/*!
+ @brief Set the RD line HIGH. Used for parallel-connected interfaces
+ when reading data.
+*/
+inline void Adafruit_SPITFT::TFT_RD_HIGH(void) {
+#if defined(USE_FAST_PINIO)
+ #if defined(HAS_PORT_SET_CLR)
+ *tft8.rdPortSet = tft8.rdPinMask;
+ #else // !HAS_PORT_SET_CLR
+ *tft8.rdPort |= tft8.rdPinMaskSet;
+ #endif // end !HAS_PORT_SET_CLR
+#else // !USE_FAST_PINIO
+ digitalWrite(tft8._rd, HIGH);
+#endif // end !USE_FAST_PINIO
+}
+
+/*!
+ @brief Set the RD line LOW. Used for parallel-connected interfaces
+ when reading data.
+*/
+inline void Adafruit_SPITFT::TFT_RD_LOW(void) {
+#if defined(USE_FAST_PINIO)
+ #if defined(HAS_PORT_SET_CLR)
+ *tft8.rdPortClr = tft8.rdPinMask;
+ #else // !HAS_PORT_SET_CLR
+ *tft8.rdPort &= tft8.rdPinMaskClr;
+ #endif // end !HAS_PORT_SET_CLR
+#else // !USE_FAST_PINIO
+ digitalWrite(tft8._rd, LOW);
+#endif // end !USE_FAST_PINIO
+}
+
+#endif // end __AVR_ATtiny85__
diff --git a/lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SPITFT_Renderer.h b/lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SPITFT_Renderer.h
new file mode 100644
index 000000000..dcfc1646b
--- /dev/null
+++ b/lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SPITFT_Renderer.h
@@ -0,0 +1,520 @@
+/*!
+ * @file Adafruit_SPITFT.h
+ *
+ * Part of Adafruit's GFX graphics library. Originally this class was
+ * written to handle a range of color TFT displays connected via SPI,
+ * but over time this library and some display-specific subclasses have
+ * mutated to include some color OLEDs as well as parallel-interfaced
+ * displays. The name's been kept for the sake of older code.
+ *
+ * Adafruit invests time and resources providing this open source code,
+ * please support Adafruit and open-source hardware by purchasing
+ * products from Adafruit!
+ *
+ * Written by Limor "ladyada" Fried for Adafruit Industries,
+ * with contributions from the open source community.
+ *
+ * BSD license, all text here must be included in any redistribution.
+ */
+
+#ifndef _ADAFRUIT_SPITFT_H_
+#define _ADAFRUIT_SPITFT_H_
+
+#if !defined(__AVR_ATtiny85__) // Not for ATtiny, at all
+
+#include
+#include "Adafruit_GFX.h"
+#include "renderer.h"
+
+// HARDWARE CONFIG ---------------------------------------------------------
+
+#if defined(__AVR__)
+ typedef uint8_t ADAGFX_PORT_t; ///< PORT values are 8-bit
+ #define USE_FAST_PINIO ///< Use direct PORT register access
+#elif defined(ARDUINO_STM32_FEATHER) // WICED
+ typedef class HardwareSPI SPIClass; ///< SPI is a bit odd on WICED
+ typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit
+#elif defined(__arm__)
+ #if defined(ARDUINO_ARCH_SAMD)
+ // Adafruit M0, M4
+ typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit
+ #define USE_FAST_PINIO ///< Use direct PORT register access
+ #define HAS_PORT_SET_CLR ///< PORTs have set & clear registers
+ #elif defined(CORE_TEENSY)
+ // PJRC Teensy 4.x
+ #if defined(__IMXRT1052__) || defined(__IMXRT1062__) // Teensy 4.x
+ typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit
+ // PJRC Teensy 3.x
+ #else
+ typedef uint8_t ADAGFX_PORT_t; ///< PORT values are 8-bit
+ #endif
+ #define USE_FAST_PINIO ///< Use direct PORT register access
+ #define HAS_PORT_SET_CLR ///< PORTs have set & clear registers
+ #else
+ // Arduino Due?
+ typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit
+ // USE_FAST_PINIO not available here (yet)...Due has a totally different
+ // GPIO register set and will require some changes elsewhere (e.g. in
+ // constructors especially).
+ #endif
+#else // !ARM
+ // Probably ESP8266 or ESP32. USE_FAST_PINIO is not available here (yet)
+ // but don't worry about it too much...the digitalWrite() implementation
+ // on these platforms is reasonably efficient and already RAM-resident,
+ // only gotcha then is no parallel connection support for now.
+ typedef uint32_t ADAGFX_PORT_t; ///< PORT values are 32-bit
+#endif // end !ARM
+typedef volatile ADAGFX_PORT_t* PORTreg_t; ///< PORT register type
+
+#if defined(__AVR__)
+ #define DEFAULT_SPI_FREQ 8000000L ///< Hardware SPI default speed
+#else
+ #define DEFAULT_SPI_FREQ 16000000L ///< Hardware SPI default speed
+#endif
+
+#if defined(ADAFRUIT_PYPORTAL) || defined(ADAFRUIT_PYBADGE_M4_EXPRESS) || defined(ADAFRUIT_PYGAMER_M4_EXPRESS)
+ #define USE_SPI_DMA ///< Auto DMA if using PyPortal
+#else
+ //#define USE_SPI_DMA ///< If set, use DMA if available
+#endif
+// Another "oops" name -- this now also handles parallel DMA.
+// If DMA is enabled, Arduino sketch MUST #include
+// Estimated RAM usage:
+// 4 bytes/pixel on display major axis + 8 bytes/pixel on minor axis,
+// e.g. 320x240 pixels = 320 * 4 + 240 * 8 = 3,200 bytes.
+
+#if !defined(ARDUINO_ARCH_SAMD)
+ #undef USE_SPI_DMA ///< DMA currently for SAMD chips only
+#endif
+
+#if defined(USE_SPI_DMA)
+ #pragma message ("GFX DMA IS ENABLED. HIGHLY EXPERIMENTAL.")
+ #include
+#endif
+
+// This is kind of a kludge. Needed a way to disambiguate the software SPI
+// and parallel constructors via their argument lists. Originally tried a
+// bool as the first argument to the parallel constructor (specifying 8-bit
+// vs 16-bit interface) but the compiler regards this as equivalent to an
+// integer and thus still ambiguous. SO...the parallel constructor requires
+// an enumerated type as the first argument: tft8 (for 8-bit parallel) or
+// tft16 (for 16-bit)...even though 16-bit isn't fully implemented or tested
+// and might never be, still needed that disambiguation from soft SPI.
+enum tftBusWidth { tft8bitbus, tft16bitbus }; ///< For first arg to parallel constructor
+
+// CLASS DEFINITION --------------------------------------------------------
+
+/*!
+ @brief Adafruit_SPITFT is an intermediary class between Adafruit_GFX
+ and various hardware-specific subclasses for different displays.
+ It handles certain operations that are common to a range of
+ displays (address window, area fills, etc.). Originally these were
+ all color TFT displays interfaced via SPI, but it's since expanded
+ to include color OLEDs and parallel-interfaced TFTs. THE NAME HAS
+ BEEN KEPT TO AVOID BREAKING A LOT OF SUBCLASSES AND EXAMPLE CODE.
+ Many of the class member functions similarly live on with names
+ that don't necessarily accurately describe what they're doing,
+ again to avoid breaking a lot of other code. If in doubt, read
+ the comments.
+*/
+class Adafruit_SPITFT : public Renderer {
+
+ public:
+
+ // CONSTRUCTORS --------------------------------------------------------
+
+ // Software SPI constructor: expects width & height (at default rotation
+ // setting 0), 4 signal pins (cs, dc, mosi, sclk), 2 optional pins
+ // (reset, miso). cs argument is required but can be -1 if unused --
+ // rather than moving it to the optional arguments, it was done this way
+ // to avoid breaking existing code (-1 option was a later addition).
+ Adafruit_SPITFT(uint16_t w, uint16_t h,
+ int8_t cs, int8_t dc, int8_t mosi, int8_t sck,
+ int8_t rst = -1, int8_t miso = -1);
+
+ // Hardware SPI constructor using the default SPI port: expects width &
+ // height (at default rotation setting 0), 2 signal pins (cs, dc),
+ // optional reset pin. cs is required but can be -1 if unused -- rather
+ // than moving it to the optional arguments, it was done this way to
+ // avoid breaking existing code (-1 option was a later addition).
+ Adafruit_SPITFT(uint16_t w, uint16_t h,
+ int8_t cs, int8_t dc, int8_t rst = -1);
+
+#if !defined(ESP8266) // See notes in .cpp
+ // Hardware SPI constructor using an arbitrary SPI peripheral: expects
+ // width & height (rotation 0), SPIClass pointer, 2 signal pins (cs, dc)
+ // and optional reset pin. cs is required but can be -1 if unused.
+ Adafruit_SPITFT(uint16_t w, uint16_t h, SPIClass *spiClass,
+ int8_t cs, int8_t dc, int8_t rst = -1);
+#endif // end !ESP8266
+
+ // Parallel constructor: expects width & height (rotation 0), flag
+ // indicating whether 16-bit (true) or 8-bit (false) interface, 3 signal
+ // pins (d0, wr, dc), 3 optional pins (cs, rst, rd). 16-bit parallel
+ // isn't even fully implemented but the 'wide' flag was added as a
+ // required argument to avoid ambiguity with other constructors.
+ Adafruit_SPITFT(uint16_t w, uint16_t h, tftBusWidth busWidth,
+ int8_t d0, int8_t wr, int8_t dc,
+ int8_t cs = -1, int8_t rst = -1, int8_t rd = -1);
+
+ // CLASS MEMBER FUNCTIONS ----------------------------------------------
+
+ // These first two functions MUST be declared by subclasses:
+
+ /*!
+ @brief Display-specific initialization function.
+ @param freq SPI frequency, in hz (or 0 for default or unused).
+ */
+ virtual void begin(uint32_t freq) = 0;
+
+ /*!
+ @brief Set up the specific display hardware's "address window"
+ for subsequent pixel-pushing operations.
+ @param x Leftmost pixel of area to be drawn (MUST be within
+ display bounds at current rotation setting).
+ @param y Topmost pixel of area to be drawn (MUST be within
+ display bounds at current rotation setting).
+ @param w Width of area to be drawn, in pixels (MUST be >0 and,
+ added to x, within display bounds at current rotation).
+ @param h Height of area to be drawn, in pixels (MUST be >0 and,
+ added to x, within display bounds at current rotation).
+ */
+ virtual void setAddrWindow(
+ uint16_t x, uint16_t y, uint16_t w, uint16_t h) = 0;
+
+ // Remaining functions do not need to be declared in subclasses
+ // unless they wish to provide hardware-specific optimizations.
+ // Brief comments here...documented more thoroughly in .cpp file.
+
+ // Subclass' begin() function invokes this to initialize hardware.
+ // freq=0 to use default SPI speed. spiMode must be one of the SPI_MODEn
+ // values defined in SPI.h, which are NOT the same as 0 for SPI_MODE0,
+ // 1 for SPI_MODE1, etc...use ONLY the SPI_MODEn defines! Only!
+ // Name is outdated (interface may be parallel) but for compatibility:
+ void initSPI(uint32_t freq = 0, uint8_t spiMode = SPI_MODE0);
+ // Chip select and/or hardware SPI transaction start as needed:
+ void startWrite(void);
+ // Chip deselect and/or hardware SPI transaction end as needed:
+ void endWrite(void);
+ void sendCommand(uint8_t commandByte, uint8_t *dataBytes = NULL, uint8_t numDataBytes = 0);
+ void sendCommand(uint8_t commandByte, const uint8_t *dataBytes, uint8_t numDataBytes);
+ uint8_t readcommand8(uint8_t commandByte, uint8_t index = 0);
+
+ // These functions require a chip-select and/or SPI transaction
+ // around them. Higher-level graphics primitives might start a
+ // single transaction and then make multiple calls to these functions
+ // (e.g. circle or text rendering might make repeated lines or rects)
+ // before ending the transaction. It's more efficient than starting a
+ // transaction every time.
+ void writePixel(int16_t x, int16_t y, uint16_t color);
+ void writePixels(uint16_t *colors, uint32_t len,
+ bool block=true, bool bigEndian=false);
+ void writeColor(uint16_t color, uint32_t len);
+ void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h,
+ uint16_t color);
+ void writeFastHLine(int16_t x, int16_t y, int16_t w,
+ uint16_t color);
+ void writeFastVLine(int16_t x, int16_t y, int16_t h,
+ uint16_t color);
+ // This is a new function, similar to writeFillRect() except that
+ // all arguments MUST be onscreen, sorted and clipped. If higher-level
+ // primitives can handle their own sorting/clipping, it avoids repeating
+ // such operations in the low-level code, making it potentially faster.
+ // CALLING THIS WITH UNCLIPPED OR NEGATIVE VALUES COULD BE DISASTROUS.
+ inline void writeFillRectPreclipped(int16_t x, int16_t y,
+ int16_t w, int16_t h, uint16_t color);
+ // Another new function, companion to the new non-blocking
+ // writePixels() variant.
+ void dmaWait(void);
+
+
+ // These functions are similar to the 'write' functions above, but with
+ // a chip-select and/or SPI transaction built-in. They're typically used
+ // solo -- that is, as graphics primitives in themselves, not invoked by
+ // higher-level primitives (which should use the functions above).
+ void drawPixel(int16_t x, int16_t y, uint16_t color);
+ void fillRect(int16_t x, int16_t y, int16_t w, int16_t h,
+ uint16_t color);
+ void drawFastHLine(int16_t x, int16_t y, int16_t w,
+ uint16_t color);
+ void drawFastVLine(int16_t x, int16_t y, int16_t h,
+ uint16_t color);
+ // A single-pixel push encapsulated in a transaction. I don't think
+ // this is used anymore (BMP demos might've used it?) but is provided
+ // for backward compatibility, consider it deprecated:
+ void pushColor(uint16_t color);
+
+ using Adafruit_GFX::drawRGBBitmap; // Check base class first
+ void drawRGBBitmap(int16_t x, int16_t y,
+ uint16_t *pcolors, int16_t w, int16_t h);
+
+ void invertDisplay(bool i);
+ uint16_t color565(uint8_t r, uint8_t g, uint8_t b);
+
+ // Despite parallel additions, function names kept for compatibility:
+ void spiWrite(uint8_t b); // Write single byte as DATA
+ void writeCommand(uint8_t cmd); // Write single byte as COMMAND
+ uint8_t spiRead(void); // Read single byte of data
+
+ // Most of these low-level functions were formerly macros in
+ // Adafruit_SPITFT_Macros.h. Some have been made into inline functions
+ // to avoid macro mishaps. Despite the addition of code for a parallel
+ // display interface, the names have been kept for backward
+ // compatibility (some subclasses may be invoking these):
+ void SPI_WRITE16(uint16_t w); // Not inline
+ void SPI_WRITE32(uint32_t l); // Not inline
+ // Old code had both a spiWrite16() function and SPI_WRITE16 macro
+ // in addition to the SPI_WRITE32 macro. The latter two have been
+ // made into functions here, and spiWrite16() removed (use SPI_WRITE16()
+ // instead). It looks like most subclasses had gotten comfortable with
+ // SPI_WRITE16 and SPI_WRITE32 anyway so those names were kept rather
+ // than the less-obnoxious camelcase variants, oh well.
+
+ // Placing these functions entirely in the class definition inlines
+ // them implicitly them while allowing their use in other code:
+
+ /*!
+ @brief Set the chip-select line HIGH. Does NOT check whether CS pin
+ is set (>=0), that should be handled in calling function.
+ Despite function name, this is used even if the display
+ connection is parallel.
+ */
+ void SPI_CS_HIGH(void) {
+ #if defined(USE_FAST_PINIO)
+ #if defined(HAS_PORT_SET_CLR)
+ #if defined(KINETISK)
+ *csPortSet = 1;
+ #else // !KINETISK
+ *csPortSet = csPinMask;
+ #endif // end !KINETISK
+ #else // !HAS_PORT_SET_CLR
+ *csPort |= csPinMaskSet;
+ #endif // end !HAS_PORT_SET_CLR
+ #else // !USE_FAST_PINIO
+ digitalWrite(_cs, HIGH);
+ #endif // end !USE_FAST_PINIO
+ }
+
+ /*!
+ @brief Set the chip-select line LOW. Does NOT check whether CS pin
+ is set (>=0), that should be handled in calling function.
+ Despite function name, this is used even if the display
+ connection is parallel.
+ */
+ void SPI_CS_LOW(void) {
+ #if defined(USE_FAST_PINIO)
+ #if defined(HAS_PORT_SET_CLR)
+ #if defined(KINETISK)
+ *csPortClr = 1;
+ #else // !KINETISK
+ *csPortClr = csPinMask;
+ #endif // end !KINETISK
+ #else // !HAS_PORT_SET_CLR
+ *csPort &= csPinMaskClr;
+ #endif // end !HAS_PORT_SET_CLR
+ #else // !USE_FAST_PINIO
+ digitalWrite(_cs, LOW);
+ #endif // end !USE_FAST_PINIO
+ }
+
+ /*!
+ @brief Set the data/command line HIGH (data mode).
+ */
+ void SPI_DC_HIGH(void) {
+ #if defined(USE_FAST_PINIO)
+ #if defined(HAS_PORT_SET_CLR)
+ #if defined(KINETISK)
+ *dcPortSet = 1;
+ #else // !KINETISK
+ *dcPortSet = dcPinMask;
+ #endif // end !KINETISK
+ #else // !HAS_PORT_SET_CLR
+ *dcPort |= dcPinMaskSet;
+ #endif // end !HAS_PORT_SET_CLR
+ #else // !USE_FAST_PINIO
+ digitalWrite(_dc, HIGH);
+ #endif // end !USE_FAST_PINIO
+ }
+
+ /*!
+ @brief Set the data/command line LOW (command mode).
+ */
+ void SPI_DC_LOW(void) {
+ #if defined(USE_FAST_PINIO)
+ #if defined(HAS_PORT_SET_CLR)
+ #if defined(KINETISK)
+ *dcPortClr = 1;
+ #else // !KINETISK
+ *dcPortClr = dcPinMask;
+ #endif // end !KINETISK
+ #else // !HAS_PORT_SET_CLR
+ *dcPort &= dcPinMaskClr;
+ #endif // end !HAS_PORT_SET_CLR
+ #else // !USE_FAST_PINIO
+ digitalWrite(_dc, LOW);
+ #endif // end !USE_FAST_PINIO
+ }
+
+ protected:
+
+ // A few more low-level member functions -- some may have previously
+ // been macros. Shouldn't have a need to access these externally, so
+ // they've been moved to the protected section. Additionally, they're
+ // declared inline here and the code is in the .cpp file, since outside
+ // code doesn't need to see these.
+ inline void SPI_MOSI_HIGH(void);
+ inline void SPI_MOSI_LOW(void);
+ inline void SPI_SCK_HIGH(void);
+ inline void SPI_SCK_LOW(void);
+ inline bool SPI_MISO_READ(void);
+ inline void SPI_BEGIN_TRANSACTION(void);
+ inline void SPI_END_TRANSACTION(void);
+ inline void TFT_WR_STROBE(void); // Parallel interface write strobe
+ inline void TFT_RD_HIGH(void); // Parallel interface read high
+ inline void TFT_RD_LOW(void); // Parallel interface read low
+
+ // CLASS INSTANCE VARIABLES --------------------------------------------
+
+ // Here be dragons! There's a big union of three structures here --
+ // one each for hardware SPI, software (bitbang) SPI, and parallel
+ // interfaces. This is to save some memory, since a display's connection
+ // will be only one of these. The order of some things is a little weird
+ // in an attempt to get values to align and pack better in RAM.
+
+#if defined(USE_FAST_PINIO)
+#if defined(HAS_PORT_SET_CLR)
+ PORTreg_t csPortSet; ///< PORT register for chip select SET
+ PORTreg_t csPortClr; ///< PORT register for chip select CLEAR
+ PORTreg_t dcPortSet; ///< PORT register for data/command SET
+ PORTreg_t dcPortClr; ///< PORT register for data/command CLEAR
+#else // !HAS_PORT_SET_CLR
+ PORTreg_t csPort; ///< PORT register for chip select
+ PORTreg_t dcPort; ///< PORT register for data/command
+#endif // end HAS_PORT_SET_CLR
+#endif // end USE_FAST_PINIO
+#if defined(__cplusplus) && (__cplusplus >= 201100)
+ union {
+#endif
+ struct { // Values specific to HARDWARE SPI:
+ SPIClass *_spi; ///< SPI class pointer
+#if defined(SPI_HAS_TRANSACTION)
+ SPISettings settings; ///< SPI transaction settings
+#else
+ uint32_t _freq; ///< SPI bitrate (if no SPI transactions)
+#endif
+ uint32_t _mode; ///< SPI data mode (transactions or no)
+ } hwspi; ///< Hardware SPI values
+ struct { // Values specific to SOFTWARE SPI:
+#if defined(USE_FAST_PINIO)
+ PORTreg_t misoPort; ///< PORT (PIN) register for MISO
+#if defined(HAS_PORT_SET_CLR)
+ PORTreg_t mosiPortSet; ///< PORT register for MOSI SET
+ PORTreg_t mosiPortClr; ///< PORT register for MOSI CLEAR
+ PORTreg_t sckPortSet; ///< PORT register for SCK SET
+ PORTreg_t sckPortClr; ///< PORT register for SCK CLEAR
+ #if !defined(KINETISK)
+ ADAGFX_PORT_t mosiPinMask; ///< Bitmask for MOSI
+ ADAGFX_PORT_t sckPinMask; ///< Bitmask for SCK
+ #endif // end !KINETISK
+#else // !HAS_PORT_SET_CLR
+ PORTreg_t mosiPort; ///< PORT register for MOSI
+ PORTreg_t sckPort; ///< PORT register for SCK
+ ADAGFX_PORT_t mosiPinMaskSet; ///< Bitmask for MOSI SET (OR)
+ ADAGFX_PORT_t mosiPinMaskClr; ///< Bitmask for MOSI CLEAR (AND)
+ ADAGFX_PORT_t sckPinMaskSet; ///< Bitmask for SCK SET (OR bitmask)
+ ADAGFX_PORT_t sckPinMaskClr; ///< Bitmask for SCK CLEAR (AND)
+#endif // end HAS_PORT_SET_CLR
+ #if !defined(KINETISK)
+ ADAGFX_PORT_t misoPinMask; ///< Bitmask for MISO
+ #endif // end !KINETISK
+#endif // end USE_FAST_PINIO
+ int8_t _mosi; ///< MOSI pin #
+ int8_t _miso; ///< MISO pin #
+ int8_t _sck; ///< SCK pin #
+ } swspi; ///< Software SPI values
+ struct { // Values specific to 8-bit parallel:
+#if defined(USE_FAST_PINIO)
+
+ #if defined(__IMXRT1052__) || defined(__IMXRT1062__) // Teensy 4.x
+ volatile uint32_t *writePort; ///< PORT register for DATA WRITE
+ volatile uint32_t *readPort; ///< PORT (PIN) register for DATA READ
+ #else
+ volatile uint8_t *writePort; ///< PORT register for DATA WRITE
+ volatile uint8_t *readPort; ///< PORT (PIN) register for DATA READ
+ #endif
+#if defined(HAS_PORT_SET_CLR)
+ // Port direction register pointers are always 8-bit regardless of
+ // PORTreg_t -- even if 32-bit port, we modify a byte-aligned 8 bits.
+ #if defined(__IMXRT1052__) || defined(__IMXRT1062__) // Teensy 4.x
+ volatile uint32_t *dirSet; ///< PORT byte data direction SET
+ volatile uint32_t *dirClr; ///< PORT byte data direction CLEAR
+ #else
+ volatile uint8_t *dirSet; ///< PORT byte data direction SET
+ volatile uint8_t *dirClr; ///< PORT byte data direction CLEAR
+ #endif
+ PORTreg_t wrPortSet; ///< PORT register for write strobe SET
+ PORTreg_t wrPortClr; ///< PORT register for write strobe CLEAR
+ PORTreg_t rdPortSet; ///< PORT register for read strobe SET
+ PORTreg_t rdPortClr; ///< PORT register for read strobe CLEAR
+ #if !defined(KINETISK)
+ ADAGFX_PORT_t wrPinMask; ///< Bitmask for write strobe
+ #endif // end !KINETISK
+ ADAGFX_PORT_t rdPinMask; ///< Bitmask for read strobe
+#else // !HAS_PORT_SET_CLR
+ // Port direction register pointer is always 8-bit regardless of
+ // PORTreg_t -- even if 32-bit port, we modify a byte-aligned 8 bits.
+ volatile uint8_t *portDir; ///< PORT direction register
+ PORTreg_t wrPort; ///< PORT register for write strobe
+ PORTreg_t rdPort; ///< PORT register for read strobe
+ ADAGFX_PORT_t wrPinMaskSet; ///< Bitmask for write strobe SET (OR)
+ ADAGFX_PORT_t wrPinMaskClr; ///< Bitmask for write strobe CLEAR (AND)
+ ADAGFX_PORT_t rdPinMaskSet; ///< Bitmask for read strobe SET (OR)
+ ADAGFX_PORT_t rdPinMaskClr; ///< Bitmask for read strobe CLEAR (AND)
+#endif // end HAS_PORT_SET_CLR
+#endif // end USE_FAST_PINIO
+ int8_t _d0; ///< Data pin 0 #
+ int8_t _wr; ///< Write strobe pin #
+ int8_t _rd; ///< Read strobe pin # (or -1)
+ bool wide = 0; ///< If true, is 16-bit interface
+ } tft8; ///< Parallel interface settings
+#if defined(__cplusplus) && (__cplusplus >= 201100)
+ }; ///< Only one interface is active
+#endif
+#if defined(USE_SPI_DMA) // Used by hardware SPI and tft8
+ Adafruit_ZeroDMA dma; ///< DMA instance
+ DmacDescriptor *dptr = NULL; ///< 1st descriptor
+ DmacDescriptor *descriptor = NULL; ///< Allocated descriptor list
+ uint16_t *pixelBuf[2]; ///< Working buffers
+ uint16_t maxFillLen; ///< Max pixels per DMA xfer
+ uint16_t lastFillColor = 0; ///< Last color used w/fill
+ uint32_t lastFillLen = 0; ///< # of pixels w/last fill
+ uint8_t onePixelBuf; ///< For hi==lo fill
+#endif
+#if defined(USE_FAST_PINIO)
+#if defined(HAS_PORT_SET_CLR)
+ #if !defined(KINETISK)
+ ADAGFX_PORT_t csPinMask; ///< Bitmask for chip select
+ ADAGFX_PORT_t dcPinMask; ///< Bitmask for data/command
+ #endif // end !KINETISK
+#else // !HAS_PORT_SET_CLR
+ ADAGFX_PORT_t csPinMaskSet; ///< Bitmask for chip select SET (OR)
+ ADAGFX_PORT_t csPinMaskClr; ///< Bitmask for chip select CLEAR (AND)
+ ADAGFX_PORT_t dcPinMaskSet; ///< Bitmask for data/command SET (OR)
+ ADAGFX_PORT_t dcPinMaskClr; ///< Bitmask for data/command CLEAR (AND)
+#endif // end HAS_PORT_SET_CLR
+#endif // end USE_FAST_PINIO
+ uint8_t connection; ///< TFT_HARD_SPI, TFT_SOFT_SPI, etc.
+ int8_t _rst; ///< Reset pin # (or -1)
+ int8_t _cs; ///< Chip select pin # (or -1)
+ int8_t _dc; ///< Data/command pin #
+
+ int16_t _xstart = 0; ///< Internal framebuffer X offset
+ int16_t _ystart = 0; ///< Internal framebuffer Y offset
+ uint8_t invertOnCommand = 0; ///< Command to enable invert mode
+ uint8_t invertOffCommand = 0; ///< Command to disable invert mode
+
+ uint32_t _freq = 0; ///< Dummy var to keep subclasses happy
+};
+
+#endif // end __AVR_ATtiny85__
+#endif // end _ADAFRUIT_SPITFT_H_
diff --git a/lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SSD1331.cpp b/lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SSD1331.cpp
new file mode 100644
index 000000000..78d9901d6
--- /dev/null
+++ b/lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SSD1331.cpp
@@ -0,0 +1,190 @@
+/*!
+ * @file Adafruit_SSD1331.cpp
+ *
+ * @mainpage Adafruit SSD1331 Arduino Library
+ *
+ * @section intro_sec Introduction
+ *
+ * This is a library for the 0.96" 16-bit Color OLED with SSD1331 driver chip
+ *
+ * Pick one up today in the adafruit shop!
+ * ------> http://www.adafruit.com/products/684
+ *
+ * These displays use SPI to communicate, 4 or 5 pins are required to
+ * interface
+ * Adafruit invests time and resources providing this open source code,
+ * please support Adafruit and open-source hardware by purchasing
+ * products from Adafruit!
+ *
+ * @section author Author
+ *
+ * Written by Limor Fried/Ladyada for Adafruit Industries.
+ *
+ * @section license License
+ *
+ * BSD license, all text above must be included in any redistribution
+ */
+
+#include "Adafruit_SSD1331.h"
+#include "pins_arduino.h"
+#include "wiring_private.h"
+
+/***********************************/
+
+/*!
+ @brief SPI displays set an address window rectangle for blitting pixels
+ @param x Top left corner x coordinate
+ @param y Top left corner x coordinate
+ @param w Width of window
+ @param h Height of window
+*/
+void Adafruit_SSD1331::setAddrWindow(uint16_t x, uint16_t y, uint16_t w,
+ uint16_t h) {
+
+ uint8_t x1 = x;
+ uint8_t y1 = y;
+ if (x1 > 95)
+ x1 = 95;
+ if (y1 > 63)
+ y1 = 63;
+
+ uint8_t x2 = (x + w - 1);
+ uint8_t y2 = (y + h - 1);
+ if (x2 > 95)
+ x2 = 95;
+ if (y2 > 63)
+ y2 = 63;
+
+ if (x1 > x2) {
+ uint8_t t = x2;
+ x2 = x1;
+ x1 = t;
+ }
+ if (y1 > y2) {
+ uint8_t t = y2;
+ y2 = y1;
+ y1 = t;
+ }
+
+ sendCommand(0x15); // Column addr set
+ sendCommand(x1);
+ sendCommand(x2);
+
+ sendCommand(0x75); // Column addr set
+ sendCommand(y1);
+ sendCommand(y2);
+
+ startWrite();
+}
+
+/**************************************************************************/
+/*!
+ @brief Initialize SSD1331 chip
+ Connects to the SSD1331 over SPI and sends initialization procedure commands
+ @param freq Desired SPI clock frequency
+*/
+/**************************************************************************/
+void Adafruit_SSD1331::begin(uint32_t freq) {
+ initSPI(freq);
+
+ // Initialization Sequence
+ sendCommand(SSD1331_CMD_DISPLAYOFF); // 0xAE
+ sendCommand(SSD1331_CMD_SETREMAP); // 0xA0
+#if defined SSD1331_COLORORDER_RGB
+ sendCommand(0x72); // RGB Color
+#else
+ sendCommand(0x76); // BGR Color
+#endif
+ sendCommand(SSD1331_CMD_STARTLINE); // 0xA1
+ sendCommand(0x0);
+ sendCommand(SSD1331_CMD_DISPLAYOFFSET); // 0xA2
+ sendCommand(0x0);
+ sendCommand(SSD1331_CMD_NORMALDISPLAY); // 0xA4
+ sendCommand(SSD1331_CMD_SETMULTIPLEX); // 0xA8
+ sendCommand(0x3F); // 0x3F 1/64 duty
+ sendCommand(SSD1331_CMD_SETMASTER); // 0xAD
+ sendCommand(0x8E);
+ sendCommand(SSD1331_CMD_POWERMODE); // 0xB0
+ sendCommand(0x0B);
+ sendCommand(SSD1331_CMD_PRECHARGE); // 0xB1
+ sendCommand(0x31);
+ sendCommand(SSD1331_CMD_CLOCKDIV); // 0xB3
+ sendCommand(0xF0); // 7:4 = Oscillator Frequency, 3:0 = CLK Div Ratio
+ // (A[3:0]+1 = 1..16)
+ sendCommand(SSD1331_CMD_PRECHARGEA); // 0x8A
+ sendCommand(0x64);
+ sendCommand(SSD1331_CMD_PRECHARGEB); // 0x8B
+ sendCommand(0x78);
+ sendCommand(SSD1331_CMD_PRECHARGEC); // 0x8C
+ sendCommand(0x64);
+ sendCommand(SSD1331_CMD_PRECHARGELEVEL); // 0xBB
+ sendCommand(0x3A);
+ sendCommand(SSD1331_CMD_VCOMH); // 0xBE
+ sendCommand(0x3E);
+ sendCommand(SSD1331_CMD_MASTERCURRENT); // 0x87
+ sendCommand(0x06);
+ sendCommand(SSD1331_CMD_CONTRASTA); // 0x81
+ sendCommand(0x91);
+ sendCommand(SSD1331_CMD_CONTRASTB); // 0x82
+ sendCommand(0x50);
+ sendCommand(SSD1331_CMD_CONTRASTC); // 0x83
+ sendCommand(0x7D);
+ sendCommand(SSD1331_CMD_DISPLAYON); //--turn on oled panel
+ _width = TFTWIDTH;
+ _height = TFTHEIGHT;
+}
+
+/**************************************************************************/
+/*!
+ @brief Instantiate Adafruit SSD1331 driver with software SPI
+ @param cs Chip select pin #
+ @param dc Data/Command pin #
+ @param mosi SPI MOSI pin #
+ @param sclk SPI Clock pin #
+ @param rst Reset pin # (optional, pass -1 if unused)
+*/
+/**************************************************************************/
+Adafruit_SSD1331::Adafruit_SSD1331(int8_t cs, int8_t dc, int8_t mosi,
+ int8_t sclk, int8_t rst)
+ : Adafruit_SPITFT(TFTWIDTH, TFTHEIGHT, cs, dc, mosi, sclk, rst, -1) {}
+
+/**************************************************************************/
+/*!
+ @brief Instantiate Adafruit SSD1331 driver with hardware SPI
+ @param cs Chip select pin #
+ @param dc Data/Command pin #
+ @param rst Reset pin # (optional, pass -1 if unused)
+*/
+/**************************************************************************/
+Adafruit_SSD1331::Adafruit_SSD1331(int8_t cs, int8_t dc, int8_t rst)
+ : Adafruit_SPITFT(TFTWIDTH, TFTHEIGHT, cs, dc, rst) {}
+
+/**************************************************************************/
+/*!
+ @brief Instantiate Adafruit SSD1331 driver with hardware SPI
+ @param spi Pointer to an existing SPIClass instance (e.g. &SPI, the
+ microcontroller's primary SPI bus).
+ @param cs Chip select pin #
+ @param dc Data/Command pin #
+ @param rst Reset pin # (optional, pass -1 if unused)
+*/
+/**************************************************************************/
+Adafruit_SSD1331::Adafruit_SSD1331(SPIClass *spi, int8_t cs, int8_t dc,
+ int8_t rst)
+ :
+#if defined(ESP8266)
+ Adafruit_SPITFT(TFTWIDTH, TFTWIDTH, cs, dc, rst) {
+#else
+ Adafruit_SPITFT(TFTWIDTH, TFTWIDTH, spi, cs, dc, rst) {
+#endif
+}
+
+/**************************************************************************/
+/*!
+ @brief Change whether display is on or off
+ @param enable True if you want the display ON, false OFF
+*/
+/**************************************************************************/
+void Adafruit_SSD1331::enableDisplay(boolean enable) {
+ sendCommand(enable ? SSD1331_CMD_DISPLAYON : SSD1331_CMD_DISPLAYOFF);
+}
diff --git a/lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SSD1331.h b/lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SSD1331.h
new file mode 100644
index 000000000..7d9bc85a0
--- /dev/null
+++ b/lib/lib_display/Adafruit_SSD1331-1.2.0/Adafruit_SSD1331.h
@@ -0,0 +1,76 @@
+/*!
+ * @file Adafruit_SSD1331.h
+ */
+
+#include "Arduino.h"
+#include
+// Tasmota change: use custom version of Adafruit_SPITFT which extends Renderer instead of Adafruit_GFX
+#include
+#include
+#include
+
+/*!
+ * @brief Select one of these defines to set the pixel color order
+ */
+#define SSD1331_COLORORDER_RGB
+// #define SSD1331_COLORORDER_BGR
+
+#if defined SSD1331_COLORORDER_RGB && defined SSD1331_COLORORDER_BGR
+#error "RGB and BGR can not both be defined for SSD1331_COLORODER."
+#endif
+
+// Timing Delays
+#define SSD1331_DELAYS_HWFILL (3) //!< Fill delay
+#define SSD1331_DELAYS_HWLINE (1) //!< Line delay
+
+// SSD1331 Commands
+#define SSD1331_CMD_DRAWLINE 0x21 //!< Draw line
+#define SSD1331_CMD_DRAWRECT 0x22 //!< Draw rectangle
+#define SSD1331_CMD_FILL 0x26 //!< Fill enable/disable
+#define SSD1331_CMD_SETCOLUMN 0x15 //!< Set column address
+#define SSD1331_CMD_SETROW 0x75 //!< Set row adress
+#define SSD1331_CMD_CONTRASTA 0x81 //!< Set contrast for color A
+#define SSD1331_CMD_CONTRASTB 0x82 //!< Set contrast for color B
+#define SSD1331_CMD_CONTRASTC 0x83 //!< Set contrast for color C
+#define SSD1331_CMD_MASTERCURRENT 0x87 //!< Master current control
+#define SSD1331_CMD_SETREMAP 0xA0 //!< Set re-map & data format
+#define SSD1331_CMD_STARTLINE 0xA1 //!< Set display start line
+#define SSD1331_CMD_DISPLAYOFFSET 0xA2 //!< Set display offset
+#define SSD1331_CMD_NORMALDISPLAY 0xA4 //!< Set display to normal mode
+#define SSD1331_CMD_DISPLAYALLON 0xA5 //!< Set entire display ON
+#define SSD1331_CMD_DISPLAYALLOFF 0xA6 //!< Set entire display OFF
+#define SSD1331_CMD_INVERTDISPLAY 0xA7 //!< Invert display
+#define SSD1331_CMD_SETMULTIPLEX 0xA8 //!< Set multiplex ratio
+#define SSD1331_CMD_SETMASTER 0xAD //!< Set master configuration
+#define SSD1331_CMD_DISPLAYOFF 0xAE //!< Display OFF (sleep mode)
+#define SSD1331_CMD_DISPLAYON 0xAF //!< Normal Brightness Display ON
+#define SSD1331_CMD_POWERMODE 0xB0 //!< Power save mode
+#define SSD1331_CMD_PRECHARGE 0xB1 //!< Phase 1 and 2 period adjustment
+#define SSD1331_CMD_CLOCKDIV \
+ 0xB3 //!< Set display clock divide ratio/oscillator frequency
+#define SSD1331_CMD_PRECHARGEA 0x8A //!< Set second pre-charge speed for color A
+#define SSD1331_CMD_PRECHARGEB 0x8B //!< Set second pre-charge speed for color B
+#define SSD1331_CMD_PRECHARGEC 0x8C //!< Set second pre-charge speed for color C
+#define SSD1331_CMD_PRECHARGELEVEL 0xBB //!< Set pre-charge voltage
+#define SSD1331_CMD_VCOMH 0xBE //!< Set Vcomh voltge
+
+/// Class to manage hardware interface with SSD1331 chipset
+class Adafruit_SSD1331 : public Adafruit_SPITFT {
+public:
+ Adafruit_SSD1331(int8_t cs, int8_t dc, int8_t mosi, int8_t sclk, int8_t rst);
+ Adafruit_SSD1331(int8_t cs, int8_t dc, int8_t rst);
+ // 3-4 args using hardware SPI (must specify peripheral) (reset optional)
+ Adafruit_SSD1331(SPIClass *spi, int8_t cs, int8_t dc, int8_t rst = -1);
+
+ // commands
+ void begin(uint32_t begin = 8000000);
+
+ void setAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h);
+
+ void enableDisplay(boolean enable);
+
+ static const int16_t TFTWIDTH = 96; ///< The width of the display
+ static const int16_t TFTHEIGHT = 64; ///< The height of the display
+
+private:
+};
diff --git a/lib/lib_display/Adafruit_SSD1331-1.2.0/README.md b/lib/lib_display/Adafruit_SSD1331-1.2.0/README.md
new file mode 100644
index 000000000..24c404c59
--- /dev/null
+++ b/lib/lib_display/Adafruit_SSD1331-1.2.0/README.md
@@ -0,0 +1,24 @@
+# Adafruit SSD1331 Arduino Library [](https://github.com/adafruit/Adafruit-SSD1331-OLED-Driver-Library-for-Arduino/actions)[](http://adafruit.github.io/Adafruit-SSD1331-OLED-Driver-Library-for-Arduino/html/index.html)
+This is a library for the 0.96" 16-bit Color OLED with SSD1331 driver chip
+
+ Pick one up today in the adafruit shop!
+ ------> http://www.adafruit.com/products/684
+
+These displays use SPI to communicate, 4 or 5 pins are required to
+interface
+
+Adafruit invests time and resources providing this open source code,
+please support Adafruit and open-source hardware by purchasing
+products from Adafruit!
+
+Written by Limor Fried/Ladyada for Adafruit Industries.
+BSD license, check license.txt for more information
+All text above must be included in any redistribution
+
+To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_SSD1131. Check that the Adafruit_SSD1331 folder contains Adafruit_SSD1331.cpp and Adafruit_SSD1331.h
+
+Place the Adafruit_SSD1331 library folder your /libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE.
+
+You will also have to download the Adafruit GFX Graphics core which does all the circles, text, rectangles, etc. You can get it from
+https://github.com/adafruit/Adafruit-GFX-Library
+and download/install that library as well
diff --git a/lib/lib_display/Adafruit_SSD1331-1.2.0/library.properties b/lib/lib_display/Adafruit_SSD1331-1.2.0/library.properties
new file mode 100644
index 000000000..931f1aa38
--- /dev/null
+++ b/lib/lib_display/Adafruit_SSD1331-1.2.0/library.properties
@@ -0,0 +1,10 @@
+name=Adafruit SSD1331 OLED Driver Library for Arduino
+version=1.2.0
+author=Adafruit
+maintainer=Adafruit
+sentence=For 0.96" OLEDs in the Adafruit shop
+paragraph=For 0.96" OLEDs in the Adafruit shop
+category=Display
+url=https://github.com/adafruit/Adafruit-SSD1331-OLED-Driver-Library-for-Arduino
+architectures=*
+depends=Adafruit GFX Library
diff --git a/lib/lib_display/Adafruit_SSD1331-1.2.0/license.txt b/lib/lib_display/Adafruit_SSD1331-1.2.0/license.txt
new file mode 100644
index 000000000..f6a0f22b8
--- /dev/null
+++ b/lib/lib_display/Adafruit_SSD1331-1.2.0/license.txt
@@ -0,0 +1,26 @@
+Software License Agreement (BSD License)
+
+Copyright (c) 2012, Adafruit Industries
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+3. Neither the name of the copyright holders nor the
+names of its contributors may be used to endorse or promote products
+derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
From fb2c10cb97ca7644d9962b057dc9b0084bbb027f Mon Sep 17 00:00:00 2001
From: Theo Arends <11044339+arendst@users.noreply.github.com>
Date: Mon, 4 Jan 2021 14:26:27 +0100
Subject: [PATCH 25/78] Add SPI display driver SSD1331 Color oled
Add SPI display driver SSD1331 Color oled by Jeroen Vermeulen (#10376)
---
CHANGELOG.md | 1 +
RELEASENOTES.md | 1 +
tasmota/tasmota_configurations.h | 2 +-
3 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8b34c9ca0..1836bee70 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file.
- Command ``SetOption118 1`` to move ZbReceived from JSON message and into the subtopic replacing "SENSOR" default (#10353)
- Command ``SetOption119 1`` to remove the device addr from json payload, can be used with zb_topic_fname where the addr is already known from the topic (#10355)
- Command ``RuleTimer0`` to access all RuleTimers at once (#10352)
+- SPI display driver SSD1331 Color oled by Jeroen Vermeulen (#10376)
### Breaking Changed
- Replaced MFRC522 13.56MHz rfid card reader GPIO selection from ``SPI CS`` by ``RC522 CS``
diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index 814272bdf..01f4cc1fc 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -75,6 +75,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota
- Support for disabling 38kHz IR modulation using ``#define IR_SEND_USE_MODULATION false`` [#10301](https://github.com/arendst/Tasmota/issues/10301)
- Support for SPI display driver for ST7789 TFT by Gerhard Mutz [#9037](https://github.com/arendst/Tasmota/issues/9037)
- Basic support for ESP32 Odroid Go 16MB binary tasmota32-odroidgo.bin [#8630](https://github.com/arendst/Tasmota/issues/8630)
+- SPI display driver SSD1331 Color oled by Jeroen Vermeulen [#10376](https://github.com/arendst/Tasmota/issues/10376)
### Breaking Changed
- Replaced MFRC522 13.56MHz rfid card reader GPIO selection from ``SPI CS`` by ``RC522 CS``
diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h
index 87022257c..5dcce7502 100644
--- a/tasmota/tasmota_configurations.h
+++ b/tasmota/tasmota_configurations.h
@@ -310,7 +310,7 @@
#define USE_DISPLAY_SSD1351 // [DisplayModel 9]
#define USE_DISPLAY_RA8876 // [DisplayModel 10]
#define USE_DISPLAY_ST7789 // [DisplayModel 12] Enable ST7789 module
-// #define USE_DISPLAY_SSD1331 // [DisplayModel 14] Enable SSD1331 module
+ #define USE_DISPLAY_SSD1331 // [DisplayModel 14] Enable SSD1331 module
#undef DEBUG_THEO // Disable debug code
#undef USE_DEBUG_DRIVER // Disable debug code
From 24cbad3257d3d26826766fd587f81fe9fa9d2453 Mon Sep 17 00:00:00 2001
From: Vic
Date: Mon, 4 Jan 2021 14:57:32 +0100
Subject: [PATCH 26/78] more diagnostics
---
tasmota/.xdrv_47_ftc532.ino.kate-swp | Bin 0 -> 710 bytes
tasmota/xdrv_47_ftc532.ino | 99 ++++++++++++++++-----------
2 files changed, 58 insertions(+), 41 deletions(-)
create mode 100644 tasmota/.xdrv_47_ftc532.ino.kate-swp
diff --git a/tasmota/.xdrv_47_ftc532.ino.kate-swp b/tasmota/.xdrv_47_ftc532.ino.kate-swp
new file mode 100644
index 0000000000000000000000000000000000000000..46ab3cc1996b17b4471ee761f28e803930b1f42e
GIT binary patch
literal 710
zcmZ9}J4*vW5C`zx_zGx@im&)$F~)R~J2i#cNZ5$@Bzq`UN5B&f!eMbi?X2?|Y%Kj6
zehO1D(@2@8_M>XXok;mRH6g_OZ|~Kse7v9B^nQ}J
zueE+Y3XyuY(lA?I(Kz6mUo}#>r*#$UZPs1s@2z%@qxUT@fyVw0kZ8Vgw)41~)R@|nE_(}rk1q(JjFnk{TI>^8&wW?!4ztiGbnVDb?q@X4~9
zk;vS0MGlVGBk%)z6wWRW6UX4}^5AjU>7RfV_vgulX3*H*^+OXJ2Rh`n1=Kd!i|`eD
x3BF)2!`JK*e9m5hHG35f*lR=U>#%dy4RTI72{oL+%h<=j-@A_i_a9?V{{fF>QeprA
literal 0
HcmV?d00001
diff --git a/tasmota/xdrv_47_ftc532.ino b/tasmota/xdrv_47_ftc532.ino
index 5c076faa4..e88a80312 100644
--- a/tasmota/xdrv_47_ftc532.ino
+++ b/tasmota/xdrv_47_ftc532.ino
@@ -54,105 +54,122 @@
#define XDRV_47 47
#define FTC532_KEYS_MAX 8
+#define FTC532_RETRY 8 // number of reads before discarding
#define FTC532_STATE_WAITING false
#define FTC532_STATE_READING true
// Rising edge timing in microseconds
#define FTC532_BIT 377
+#define FTC532_NOISE (FTC532_BIT * 3 / 2)
#define FTC532_SHORT (FTC532_BIT * 2)
#define FTC532_LONG (FTC532_BIT * 4)
#define FTC532_IDLE (FTC532_BIT * 10)
#define FTC532_MAX (FTC532_BIT * 58)
+#define DEBUG_FTC532 //@@@@@@@@@@@@@@@@
+
struct FTC532 {
volatile uint32_t rxtime; // ISR timer memory
- volatile uint16_t sample = 0xF0F0; // buffer for bit-coded time samples
+ volatile uint16_t tsmp = 0xF0F0; // buffer for bit-coded time samples
+ volatile uint16_t sample = 0xF0F0; // complete samples
volatile uint16_t rxbit; // ISR bit counter
uint8_t keys = 0; // bitmap of active keys
uint8_t old_keys = 0; // previously active keys
volatile bool state; // ISR state
- bool present = false;
-#ifdef DEBUG_TASMOTA_DRIVER
- volatile uint16_t errors; // error counter
- volatile bool valid; // did we ever receive valid data?
-#endif // DEBUG_TASMOTA_DRIVER
+ bool present = false; // driver active
+#ifdef DEBUG_FTC532
+ volatile uint16_t errors = 0; // inv. key error counter
+ volatile uint16_t frame = 0; // frame error counter
+ volatile uint16_t noise = 0; // noise detection counter
+ volatile bool valid = 0; // did we ever receive valid data?
+#endif // DEBUG_FTC532
} Ftc532;
const char ftc532_json[] PROGMEM = "\"FTC532\":{\"KEYS\":\"";
-void ICACHE_RAM_ATTR ftc532_ISR(void) { // Hardware interrupt routine, triggers on rising edge
+void ICACHE_RAM_ATTR ftc532_ISR(void) { // Hardware interrupt routine, triggers on rising edge
uint32_t time = micros();
uint32_t time_diff = time - Ftc532.rxtime;
Ftc532.rxtime = time;
if (Ftc532.state == FTC532_STATE_WAITING) {
- if (time_diff > FTC532_LONG + FTC532_SHORT) { // new frame
+ if (time_diff > FTC532_LONG + FTC532_SHORT) { // new frame
Ftc532.rxbit = 0;
Ftc532.state = FTC532_STATE_READING;
}
return;
} // FTC532_STATE_READING starts here
if (time_diff > FTC532_LONG + FTC532_BIT) {
-#ifdef DEBUG_TASMOTA_DRIVER
- ++Ftc532.errors; // frame error
-#endif // DEBUG_TASMOTA_DRIVER
+#ifdef DEBUG_FTC532
+ ++Ftc532.frame; // frame error
+#endif // DEBUG_FTC532
Ftc532.state = FTC532_STATE_WAITING;
return;
}
if (time_diff > FTC532_SHORT + FTC532_BIT) {
- Ftc532.sample |= (1 << Ftc532.rxbit); // LONG
+ Ftc532.tsmp |= (1 << Ftc532.rxbit); // LONG
+ } else if (time_diff < FTC532_NOISE) { // noise detector
+#ifdef DEBUG_FTC532
+ ++Ftc532.noise;
+#endif // DEBUG_FTC532
+ Ftc532.state = FTC532_STATE_WAITING;
+ return;
} else {
- Ftc532.sample &= ~(1 << Ftc532.rxbit); // SHORT
+ Ftc532.tsmp &= ~(1 << Ftc532.rxbit); // SHORT
}
++Ftc532.rxbit;
- if (Ftc532.rxbit == FTC532_KEYS_MAX * 2) { // frame complete
+ if (Ftc532.rxbit == FTC532_KEYS_MAX * 2) { // frame complete
+ Ftc532.sample = Ftc532.tsmp; // copy frame
Ftc532.rxbit = 0;
-#ifdef DEBUG_TASMOTA_DRIVER
- Ftc532.valid = true;
-#endif // DEBUG_TASMOTA_DRIVER
Ftc532.state = FTC532_STATE_WAITING;
+#ifdef DEBUG_FTC532
+ Ftc532.valid = true;
+#endif // DEBUG_FTC532
}
}
-void ftc532_init(void) { // Initialize
+void ftc532_init(void) { // Initialize
if (!PinUsed(GPIO_FTC532)) { return; }
-#ifdef DEBUG_TASMOTA_DRIVER
- Ftc532.errors = 0;
- Ftc532.valid = false;
-#endif // DEBUG_TASMOTA_DRIVER
Ftc532.state = FTC532_STATE_WAITING;
- Ftc532.rxtime = micros();
pinMode(Pin(GPIO_FTC532), INPUT_PULLUP);
+ Ftc532.rxtime = micros();
attachInterrupt(Pin(GPIO_FTC532), ftc532_ISR, RISING);
Ftc532.present = true;
}
-void ftc532_update(void) { // Usually called every 50 ms
-#ifdef DEBUG_TASMOTA_DRIVER
-// WARNING: Reduce callback frequency if this code is enabled
-// if ((Ftc532.sample & 0xF) != ((~Ftc532.sample >> 4) & 0xF) || ((Ftc532.sample >> 8) & 0xF) != ((~Ftc532.sample >> 12) & 0xF)) {
-// AddLog_P(LOG_LEVEL_DEBUG, PSTR("FTC: inverted sample does not match %x %x %x %x"),
-// Ftc532.sample & 0xF, (~Ftc532.sample >> 4) & 0xF, (Ftc532.sample >> 8) & 0xF, (~Ftc532.sample >> 12) & 0xF);
-// }
-#endif // DEBUG_TASMOTA_DRIVER
- Ftc532.keys = (Ftc532.sample & 0xF) | ((Ftc532.sample >> 4) & 0xF0);
- if (Ftc532.keys != Ftc532.old_keys) {
-#ifdef DEBUG_TASMOTA_DRIVER
- AddLog_P(LOG_LEVEL_DEBUG, PSTR("FTC: SAM=%04X KEY=%02X OLD=%02X ERR=%u OK=%u TIME=%lu Pin=%u"),
- Ftc532.sample, Ftc532.keys, Ftc532.old_keys, Ftc532.errors, Ftc532.valid, Ftc532.rxtime, Pin(GPIO_FTC532));
-#endif // DEBUG_TASMOTA_DRIVER
- ftc532_publish();
- Ftc532.old_keys = Ftc532.keys;
+void ftc532_update(void) { // Usually called every 50 ms
+ uint16_t smp;
+ uint16_t i;
+
+ while (i++ < FTC532_RETRY) { // fix 'ghost' keys from bad hardware
+ smp = Ftc532.sample;
+ if ((smp & 0xF0F0) != ((~smp & 0x0F0F) << 4)) { // inverted keys don't match
+ ++Ftc532.errors;
+#ifdef DEBUG_FTC532
+ AddLog_P(LOG_LEVEL_DEBUG, PSTR("FTC: SAM=%04X"), smp);
+#endif // DEBUG_FTC532
+ } else {
+ Ftc532.keys = (smp & 0xF) | ((smp >> 4) & 0xF0);
+ if (Ftc532.keys != Ftc532.old_keys) {
+#ifdef DEBUG_FTC532
+ AddLog_P(LOG_LEVEL_DEBUG, PSTR("FTC: SAM=%04X KEY=%02X OLD=%02X ERR=%u NOI=%u FRM=%u OK=%u TIME=%lu Pin=%u"),
+ Ftc532.sample, Ftc532.keys, Ftc532.old_keys, Ftc532.errors, Ftc532.noise, Ftc532.frame, Ftc532.valid, Ftc532.rxtime, Pin(GPIO_FTC532));
+#endif // DEBUG_FTC532
+ ftc532_publish();
+ Ftc532.old_keys = Ftc532.keys;
+ }
+ break;
+ }
}
}
void ftc532_show() {
- ResponseAppend_P(PSTR(",%s%02X\"}"), ftc532_json, Ftc532.keys); // Hex keys need JSON quotes
+ ResponseAppend_P(PSTR(",%s%02X\"}"), ftc532_json, Ftc532.keys);
}
void ftc532_publish(void) {
- Response_P(PSTR("{%s%02X\"}}"), ftc532_json, Ftc532.keys); // Hex keys need JSON quotes
+ Response_P(PSTR("{%s%02X\"}}"), ftc532_json, Ftc532.keys);
MqttPublishTeleSensor();
}
From 928f6f94477dab4777f236e189641ed48482f010 Mon Sep 17 00:00:00 2001
From: Theo Arends <11044339+arendst@users.noreply.github.com>
Date: Mon, 4 Jan 2021 15:03:56 +0100
Subject: [PATCH 27/78] Prep SPI SDCard support
---
tasmota/language/af_AF.h | 1 +
tasmota/language/bg_BG.h | 1 +
tasmota/language/cs_CZ.h | 1 +
tasmota/language/de_DE.h | 1 +
tasmota/language/el_GR.h | 1 +
tasmota/language/en_GB.h | 1 +
tasmota/language/es_ES.h | 1 +
tasmota/language/fr_FR.h | 1 +
tasmota/language/he_HE.h | 1 +
tasmota/language/hu_HU.h | 1 +
tasmota/language/it_IT.h | 1 +
tasmota/language/ko_KO.h | 1 +
tasmota/language/nl_NL.h | 1 +
tasmota/language/pl_PL.h | 1 +
tasmota/language/pt_BR.h | 1 +
tasmota/language/pt_PT.h | 1 +
tasmota/language/ro_RO.h | 1 +
tasmota/language/ru_RU.h | 1 +
tasmota/language/sk_SK.h | 1 +
tasmota/language/sv_SE.h | 1 +
tasmota/language/tr_TR.h | 1 +
tasmota/language/uk_UA.h | 1 +
tasmota/language/vi_VN.h | 1 +
tasmota/language/zh_CN.h | 1 +
tasmota/language/zh_TW.h | 1 +
tasmota/tasmota_template.h | 15 +++++++++------
26 files changed, 34 insertions(+), 6 deletions(-)
diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h
index 4eab30241..476726bfb 100644
--- a/tasmota/language/af_AF.h
+++ b/tasmota/language/af_AF.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h
index e9003a386..51a355887 100644
--- a/tasmota/language/bg_BG.h
+++ b/tasmota/language/bg_BG.h
@@ -777,6 +777,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h
index 159d00878..571cdc769 100644
--- a/tasmota/language/cs_CZ.h
+++ b/tasmota/language/cs_CZ.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h
index cdbc1f994..e05128033 100644
--- a/tasmota/language/de_DE.h
+++ b/tasmota/language/de_DE.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h
index 8e2e3f093..cfe86a0bb 100644
--- a/tasmota/language/el_GR.h
+++ b/tasmota/language/el_GR.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h
index 2d6a47f43..fa8ab091d 100644
--- a/tasmota/language/en_GB.h
+++ b/tasmota/language/en_GB.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h
index 31640385e..716048851 100644
--- a/tasmota/language/es_ES.h
+++ b/tasmota/language/es_ES.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h
index 7bb645751..61e494c29 100644
--- a/tasmota/language/fr_FR.h
+++ b/tasmota/language/fr_FR.h
@@ -774,6 +774,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h
index ab7ff6d77..c69b67765 100644
--- a/tasmota/language/he_HE.h
+++ b/tasmota/language/he_HE.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h
index e2d335ce6..71271e34e 100644
--- a/tasmota/language/hu_HU.h
+++ b/tasmota/language/hu_HU.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h
index 9aa08db46..04e295d97 100644
--- a/tasmota/language/it_IT.h
+++ b/tasmota/language/it_IT.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 - DC"
#define D_SENSOR_SSD1331_CS "SSD1331 - CS"
#define D_SENSOR_SSD1331_DC "SSD1331 - DC"
+#define D_SENSOR_SDCARD_CS "SDCard - CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h
index 0d9f91af4..d535c6f38 100644
--- a/tasmota/language/ko_KO.h
+++ b/tasmota/language/ko_KO.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h
index 8087a8770..d7f11bd99 100644
--- a/tasmota/language/nl_NL.h
+++ b/tasmota/language/nl_NL.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h
index 5919b35b5..b5fac0432 100644
--- a/tasmota/language/pl_PL.h
+++ b/tasmota/language/pl_PL.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h
index 8069a265f..feb940b36 100644
--- a/tasmota/language/pt_BR.h
+++ b/tasmota/language/pt_BR.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h
index af9ee37a0..31d3b4a27 100644
--- a/tasmota/language/pt_PT.h
+++ b/tasmota/language/pt_PT.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h
index bf23a7c8d..0b8d26d20 100644
--- a/tasmota/language/ro_RO.h
+++ b/tasmota/language/ro_RO.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h
index 965f5f5d7..7191969b7 100644
--- a/tasmota/language/ru_RU.h
+++ b/tasmota/language/ru_RU.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "А"
diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h
index 20a691be6..787d841cb 100644
--- a/tasmota/language/sk_SK.h
+++ b/tasmota/language/sk_SK.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h
index 18822f2b8..db6e9fc48 100644
--- a/tasmota/language/sv_SE.h
+++ b/tasmota/language/sv_SE.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h
index f307a9e73..5014afcd6 100644
--- a/tasmota/language/tr_TR.h
+++ b/tasmota/language/tr_TR.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h
index 2626572ae..b027a95ac 100644
--- a/tasmota/language/uk_UA.h
+++ b/tasmota/language/uk_UA.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "А"
diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h
index d8d9d5124..0fb6cd6a4 100644
--- a/tasmota/language/vi_VN.h
+++ b/tasmota/language/vi_VN.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h
index 1895fc690..05ca75c7b 100644
--- a/tasmota/language/zh_CN.h
+++ b/tasmota/language/zh_CN.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "安"
diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h
index 2f2ec544e..384103e01 100644
--- a/tasmota/language/zh_TW.h
+++ b/tasmota/language/zh_TW.h
@@ -778,6 +778,7 @@
#define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
+#define D_SENSOR_SDCARD_CS "SDCard CS"
// Units
#define D_UNIT_AMPERE "安培"
diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h
index 874f5ab2f..8e8de6142 100644
--- a/tasmota/tasmota_template.h
+++ b/tasmota/tasmota_template.h
@@ -142,6 +142,7 @@ enum UserSelectablePins {
GPIO_RA8876_CS,
GPIO_ST7789_CS, GPIO_ST7789_DC,
GPIO_SSD1331_CS, GPIO_SSD1331_DC,
+ GPIO_SDCARD_CS,
GPIO_SENSOR_END };
enum ProgramSelectablePins {
@@ -304,6 +305,7 @@ const char kSensorNames[] PROGMEM =
D_SENSOR_RA8876_CS "|"
D_SENSOR_ST7789_CS "|" D_SENSOR_ST7789_DC "|"
D_SENSOR_SSD1331_CS "|" D_SENSOR_SSD1331_DC "|"
+ D_SENSOR_SDCARD_CS "|"
;
const char kSensorNamesFixed[] PROGMEM =
@@ -374,12 +376,9 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_RC522_CS), // RC522 Rfid Chip Select
AGPIO(GPIO_RC522_RST), // RC522 Rfid Reset
#endif
-#ifdef USE_DISPLAY
-#ifdef USE_DISPLAY_ILI9341
- AGPIO(GPIO_ILI9341_CS),
- AGPIO(GPIO_ILI9341_DC),
-#endif // USE_DISPLAY_ILI9341
-#endif // USE_DISPLAY
+#ifdef USE_SDCARD
+ AGPIO(GPIO_SDCARD_CS),
+#endif // USE_SDCARD
#endif // USE_SPI
AGPIO(GPIO_SSPI_MISO), // Software SPI Master Input Client Output
AGPIO(GPIO_SSPI_MOSI), // Software SPI Master Output Client Input
@@ -387,6 +386,10 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_SSPI_CS), // Software SPI Chip Select
AGPIO(GPIO_SSPI_DC), // Software SPI Data or Command
#ifdef USE_DISPLAY
+#ifdef USE_DISPLAY_ILI9341
+ AGPIO(GPIO_ILI9341_CS),
+ AGPIO(GPIO_ILI9341_DC),
+#endif // USE_DISPLAY_ILI9341
#ifdef USE_DISPLAY_ILI9488
AGPIO(GPIO_ILI9488_CS),
#endif // USE_DISPLAY_ILI9488
From 0a882f53baa301229fc3c7379102c772c7eaea06 Mon Sep 17 00:00:00 2001
From: Theo Arends <11044339+arendst@users.noreply.github.com>
Date: Mon, 4 Jan 2021 15:52:32 +0100
Subject: [PATCH 28/78] Update xdrv_98_filesystem.ino
---
tasmota/xdrv_98_filesystem.ino | 338 +++++++++++++++++----------------
1 file changed, 174 insertions(+), 164 deletions(-)
diff --git a/tasmota/xdrv_98_filesystem.ino b/tasmota/xdrv_98_filesystem.ino
index 932185c0c..1fadd6427 100644
--- a/tasmota/xdrv_98_filesystem.ino
+++ b/tasmota/xdrv_98_filesystem.ino
@@ -17,17 +17,19 @@
along with this program. If not, see .
*/
-/*
-this driver adds universal file system support for
-ESP8266 (sd card or littlfs on > 1 M devices with special linker file e.g. eagle.flash.4m2m.ld)
-(makes no sense on 1M devices without sd card)
-and
-ESP32 (sd card or little fs or sfatfile system)
-the sd card chip select is the standard SPI_CS or when not found SDCARD_CS_PIN
-initializes the FS System Pointer ufsp which can be used by all standard file system calls
-the only specific call is ufs_fsinfo() which gets the total size (0) and free size (1)
-a button is created in the setup section to show up the file directory to download and upload files
-subdirectories are supported
+#ifdef USE_UFILESYS
+/*********************************************************************************************\
+This driver adds universal file system support for ESP8266 (sd card or littlfs on > 1 M devices
+with special linker file e.g. eagle.flash.4m2m.ld) (makes no sense on 1M devices without sd card)
+and ESP32 (sd card or little fs or sfatfile system).
+
+The sd card chip select is the standard SDCARD_CS or when not found SDCARD_CS_PIN and initializes
+the FS System Pointer ufsp which can be used by all standard file system calls.
+
+The only specific call is ufs_fsinfo() which gets the total size (0) and free size (1).
+
+A button is created in the setup section to show up the file directory to download and upload files
+subdirectories are supported.
console calls :
@@ -36,16 +38,14 @@ ufstype get filesytem type 0=none 1=SD 2=Flashfile
ufssize total size in kB
ufsfree free size in kB
-driver enabled by
+The driver enabled by #define USE_UFILESYS
+\*********************************************************************************************/
-#define USE_UFILESYS
+#define XDRV_98 98
-*/
-
-
-#ifdef USE_UFILESYS
-
-#define XDRV_98 98
+#ifndef SDCARD_CS_PIN
+#define SDCARD_CS_PIN 4
+#endif
#ifdef ESP8266
#include
@@ -53,15 +53,17 @@ driver enabled by
#ifdef USE_SDCARD
#include
#include
-#endif
-#else
+#endif // USE_SDCARD
+#endif // ESP8266
+
+#ifdef ESP32
#include
#ifdef USE_SDCARD
#include
-#endif
+#endif // USE_SDCARD
#include "FFat.h"
#include "FS.h"
-#endif
+#endif // ESP32
#define UFS_FILE_WRITE "w"
#define UFS_FILE_READ "r"
@@ -71,11 +73,6 @@ FS *ufsp;
char ufs_path[48];
File ufs_upload_file;
-
-#ifndef SDCARD_CS_PIN
-#define SDCARD_CS_PIN 4
-#endif
-
// 0 = none, 1 = SD, 2 = ffat, 3 = littlefs
// spiffs should be obsolete
uint8_t ufs_type;
@@ -92,19 +89,20 @@ void UFSInit(void) {
#ifdef USE_SDCARD
-// if (TasmotaGlobal.spi_enabled) {
- if (1) {
+ if (TasmotaGlobal.spi_enabled) {
+// if (1) {
int8_t cs = SDCARD_CS_PIN;
- if (PinUsed(GPIO_SPI_CS)) {
- cs = Pin(GPIO_SPI_CS);
+ if (PinUsed(GPIO_SDCARD_CS)) {
+ cs = Pin(GPIO_SDCARD_CS);
}
if (SD.begin(cs)) {
#ifdef ESP8266
ufsp = (FS*)&SD;
-#else
+#endif // ESP8266
+#ifdef ESP32
ufsp = &SD;
-#endif
+#endif // ESP32
ufs_type = UFS_TSDC;
return;
}
@@ -117,7 +115,8 @@ void UFSInit(void) {
if (!LittleFS.begin()) {
return;
}
-#else
+#endif // ESP8266
+#ifdef ESP32
// try lfs first
ufsp = &LITTLEFS;
if (!LITTLEFS.begin(true)) {
@@ -129,33 +128,35 @@ void UFSInit(void) {
ufs_type = UFS_TFAT;
return;
}
-#endif // ESP8266
+#endif // ESP32
ufs_type = UFS_TLFS;
return;
}
uint32_t ufs_fsinfo(uint32_t sel) {
-uint32_t result = 0;
+ uint32_t result = 0;
+
#ifdef ESP8266
-FSInfo64 fsinfo;
-#endif
+ FSInfo64 fsinfo;
+#endif // ESP8266
switch (ufs_type) {
case UFS_TSDC:
#ifdef USE_SDCARD
-#ifdef ESP32
- if (sel == 0) {
- result = SD.totalBytes();
- } else {
- result = (SD.totalBytes() - SD.usedBytes());
- }
-#else
+#ifdef ESP8266
ufsp->info64(fsinfo);
if (sel == 0) {
result = fsinfo.totalBytes;
} else {
result = (fsinfo.totalBytes - fsinfo.usedBytes);
}
+#endif // ESP8266
+#ifdef ESP32
+ if (sel == 0) {
+ result = SD.totalBytes();
+ } else {
+ result = (SD.totalBytes() - SD.usedBytes());
+ }
#endif
#endif //USE_SDCARD
break;
@@ -168,13 +169,14 @@ FSInfo64 fsinfo;
} else {
result = (fsinfo.totalBytes - fsinfo.usedBytes);
}
-#else
+#endif // ESP8266
+#ifdef ESP32
if (sel == 0) {
result = LITTLEFS.totalBytes();
} else {
result = LITTLEFS.totalBytes() - LITTLEFS.usedBytes();
}
-#endif // ESP8266
+#endif // ESP32
break;
case UFS_TFAT:
@@ -200,21 +202,20 @@ FSInfo64 fsinfo;
#endif
uint8_t ufs_reject(char *name) {
-
char *lcp = strrchr(name,'/');
if (lcp) {
name = lcp + 1;
}
- while (*name=='/') name++;
- if (*name=='_') return 1;
- if (*name=='.') return 1;
+ while (*name=='/') { name++; }
+ if (*name=='_') { return 1; }
+ if (*name=='.') { return 1; }
- if (!strncasecmp(name, "SPOTLI~1", REJCMPL)) return 1;
- if (!strncasecmp(name, "TRASHE~1", REJCMPL)) return 1;
- if (!strncasecmp(name, "FSEVEN~1", REJCMPL)) return 1;
- if (!strncasecmp(name, "SYSTEM~1", REJCMPL)) return 1;
- if (!strncasecmp(name, "System Volume", 13)) return 1;
+ if (!strncasecmp(name, "SPOTLI~1", REJCMPL)) { return 1; }
+ if (!strncasecmp(name, "TRASHE~1", REJCMPL)) { return 1; }
+ if (!strncasecmp(name, "FSEVEN~1", REJCMPL)) { return 1; }
+ if (!strncasecmp(name, "SYSTEM~1", REJCMPL)) { return 1; }
+ if (!strncasecmp(name, "System Volume", 13)) { return 1; }
return 0;
}
@@ -225,35 +226,35 @@ void UFS_form1000(uint32_t number, char *dp, char sc) {
char *sp = str;
uint32_t inum = strlen(sp)/3;
uint32_t fnum = strlen(sp)%3;
- if (!fnum) inum--;
- for (uint32_t count=0; count<=inum; count++) {
- if (fnum){
- memcpy(dp,sp,fnum);
- dp+=fnum;
- sp+=fnum;
- fnum=0;
+ if (!fnum) { inum--; }
+ for (uint32_t count = 0; count <= inum; count++) {
+ if (fnum) {
+ memcpy(dp, sp, fnum);
+ dp += fnum;
+ sp += fnum;
+ fnum = 0;
} else {
- memcpy(dp,sp,3);
- dp+=3;
- sp+=3;
+ memcpy(dp, sp, 3);
+ dp += 3;
+ sp += 3;
}
- if (count!=inum) {
- *dp++=sc;
+ if (count != inum) {
+ *dp++ = sc;
}
}
- *dp=0;
+ *dp = 0;
}
-
-const char kUFSCommands[] PROGMEM = "UFS" "|" // Prefix
- "|" "TYPE" "|" "SIZE" "|" "FREE";
+const char kUFSCommands[] PROGMEM = "Ufs" "|" // Prefix
+ "|" "Type" "|" "Size" "|" "Free";
void (* const kUFSCommand[])(void) PROGMEM = {
&UFS_info, &UFS_type, &UFS_size, &UFS_free};
void UFS_info(void) {
- Response_P(PSTR("{\"UFS\":{\"TYPE\":%d,\"SIZE\":%d,\"FREE\":%d}}"),ufs_type,ufs_fsinfo(0),ufs_fsinfo(1));
+ Response_P(PSTR("{\"Ufs\":{\"Type\":%d,\"Size\":%d,\"Free\":%d}}"), ufs_type, ufs_fsinfo(0), ufs_fsinfo(1));
}
+
void UFS_type(void) {
ResponseCmndNumber(ufs_type);
}
@@ -268,28 +269,28 @@ const char UFS_WEB_DIR[] PROGMEM =
"";
const char UFS_FILE_UPLOAD[] PROGMEM = D_SDCARD_DIR;
const char UFS_FORM_FILE_UPLOAD[] PROGMEM =
-"
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/IRtimer_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/IRtimer_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/IRtimer_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/IRtimer_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/IRtimer_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/IRtimer_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/IRtimer_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/IRtimer_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/IRtimer_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/IRtimer_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/IRtimer_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/IRtimer_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/IRutils_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/IRutils_8cpp.html
similarity index 99%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/IRutils_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/IRutils_8cpp.html
index 91423607c..6d047aadf 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/IRutils_8cpp.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/IRutils_8cpp.html
@@ -162,9 +162,9 @@ Functions
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/bc_s.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/bc_s.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/bc_s.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/bc_s.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/bdwn.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/bdwn.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/bdwn.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/bdwn.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAirwellAc-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAirwellAc-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAirwellAc-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAirwellAc-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAirwellAc.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAirwellAc.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAirwellAc.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAirwellAc.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAirwellAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAirwellAc__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAirwellAc__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAirwellAc__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAirwellAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAirwellAc__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAirwellAc__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAirwellAc__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAirwellAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAirwellAc__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAirwellAc__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAirwellAc__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAmcorAc-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAmcorAc-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAmcorAc-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAmcorAc-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAmcorAc.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAmcorAc.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAmcorAc.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAmcorAc.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAmcorAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAmcorAc__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAmcorAc__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAmcorAc__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAmcorAc__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAmcorAc__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAmcorAc__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAmcorAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAmcorAc__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRAmcorAc__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRAmcorAc__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRArgoAC-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRArgoAC-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRArgoAC-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRArgoAC-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRArgoAC.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRArgoAC.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRArgoAC.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRArgoAC.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRArgoAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRArgoAC__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRArgoAC__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRArgoAC__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRArgoAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRArgoAC__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRArgoAC__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRArgoAC__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRArgoAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRArgoAC__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRArgoAC__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRArgoAC__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCarrierAc64-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCarrierAc64-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCarrierAc64-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCarrierAc64-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCarrierAc64.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCarrierAc64.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCarrierAc64.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCarrierAc64.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCarrierAc64__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCarrierAc64__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCarrierAc64__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCarrierAc64__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCarrierAc64__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCarrierAc64__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCarrierAc64__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCarrierAc64__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoolixAC-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoolixAC-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoolixAC-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoolixAC-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoolixAC.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoolixAC.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoolixAC.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoolixAC.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoolixAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoolixAC__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoolixAC__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoolixAC__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoolixAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoolixAC__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoolixAC__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoolixAC__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoolixAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoolixAC__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoolixAC__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoolixAC__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoronaAc-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoronaAc-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoronaAc-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoronaAc-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoronaAc.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoronaAc.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoronaAc.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoronaAc.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoronaAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoronaAc__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoronaAc__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoronaAc__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoronaAc__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoronaAc__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoronaAc__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoronaAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoronaAc__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRCoronaAc__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRCoronaAc__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin128-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin128-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin128-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin128-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin128.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin128.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin128.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin128.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin128__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin128__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin128__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin128__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin128__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin128__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin128__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin128__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin128__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin128__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin128__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin128__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin152-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin152-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin152-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin152-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin152.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin152.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin152.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin152.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin152__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin152__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin152__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin152__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin152__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin152__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin152__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin152__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin152__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin152__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin152__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin152__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin160-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin160-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin160-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin160-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin160.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin160.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin160.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin160.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin160__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin160__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin160__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin160__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin160__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin160__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin160__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin160__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin160__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin160__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin160__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin160__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin176-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin176-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin176-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin176-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin176.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin176.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin176.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin176.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin176__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin176__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin176__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin176__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin176__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin176__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin176__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin176__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin176__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin176__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin176__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin176__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin2-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin2-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin2-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin2-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin2.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin2.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin2.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin2.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin216-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin216-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin216-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin216-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin216.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin216.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin216.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin216.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin216__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin216__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin216__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin216__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin216__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin216__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin216__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin216__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin216__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin216__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin216__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin216__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin2__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin2__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin2__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin2__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin2__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin2__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin2__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin2__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin2__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin2__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin2__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin2__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin64-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin64-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin64-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin64-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin64.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin64.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin64.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin64.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin64__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin64__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin64__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin64__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin64__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin64__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin64__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin64__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin64__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin64__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikin64__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikin64__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikinESP-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikinESP-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikinESP-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikinESP-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikinESP.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikinESP.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikinESP.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikinESP.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikinESP__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikinESP__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikinESP__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikinESP__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikinESP__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikinESP__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikinESP__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikinESP__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikinESP__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikinESP__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDaikinESP__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDaikinESP__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDelonghiAc-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDelonghiAc-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDelonghiAc-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDelonghiAc-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDelonghiAc.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDelonghiAc.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDelonghiAc.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDelonghiAc.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDelonghiAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDelonghiAc__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDelonghiAc__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDelonghiAc__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDelonghiAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDelonghiAc__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRDelonghiAc__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRDelonghiAc__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRElectraAc-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRElectraAc-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRElectraAc-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRElectraAc-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRElectraAc.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRElectraAc.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRElectraAc.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRElectraAc.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRElectraAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRElectraAc__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRElectraAc__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRElectraAc__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRElectraAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRElectraAc__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRElectraAc__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRElectraAc__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRElectraAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRElectraAc__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRElectraAc__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRElectraAc__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRFujitsuAC-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRFujitsuAC-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRFujitsuAC-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRFujitsuAC-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRFujitsuAC.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRFujitsuAC.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRFujitsuAC.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRFujitsuAC.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRFujitsuAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRFujitsuAC__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRFujitsuAC__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRFujitsuAC__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRFujitsuAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRFujitsuAC__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRFujitsuAC__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRFujitsuAC__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGoodweatherAc-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGoodweatherAc-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGoodweatherAc-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGoodweatherAc-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGoodweatherAc.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGoodweatherAc.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGoodweatherAc.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGoodweatherAc.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGreeAC-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGreeAC-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGreeAC-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGreeAC-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGreeAC.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGreeAC.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGreeAC.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGreeAC.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGreeAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGreeAC__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGreeAC__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGreeAC__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGreeAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGreeAC__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGreeAC__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGreeAC__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGreeAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGreeAC__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRGreeAC__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRGreeAC__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierAC-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierAC-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierAC-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierAC-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierAC.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierAC.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierAC.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierAC.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierACYRW02-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierACYRW02-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierACYRW02-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierACYRW02-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierACYRW02.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierACYRW02.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierACYRW02.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierACYRW02.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierAC__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierAC__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierAC__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierAC__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierAC__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierAC__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierAC__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHaierAC__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHaierAC__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc1-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc1-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc1-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc1-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc1.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc1.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc1.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc1.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc1__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc1__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc1__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc1__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc1__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc1__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc1__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc1__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc3-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc3-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc3-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc3-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc3.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc3.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc3.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc3.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344__inherit__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344__inherit__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344__inherit__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344__inherit__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc3__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc3__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc3__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc3__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc3__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc3__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc3__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc3__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424__inherit__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424__inherit__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424__inherit__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424__inherit__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRHitachiAc__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRHitachiAc__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRKelvinatorAC-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRKelvinatorAC-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRKelvinatorAC-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRKelvinatorAC-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRKelvinatorAC.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRKelvinatorAC.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRKelvinatorAC.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRKelvinatorAC.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRLgAc-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRLgAc-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRLgAc-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRLgAc-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRLgAc.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRLgAc.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRLgAc.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRLgAc.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRLgAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRLgAc__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRLgAc__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRLgAc__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRLgAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRLgAc__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRLgAc__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRLgAc__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRLgAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRLgAc__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRLgAc__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRLgAc__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMideaAC-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMideaAC-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMideaAC-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMideaAC-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMideaAC.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMideaAC.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMideaAC.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMideaAC.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMideaAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMideaAC__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMideaAC__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMideaAC__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMideaAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMideaAC__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMideaAC__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMideaAC__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMideaAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMideaAC__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMideaAC__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMideaAC__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi112-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi112-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi112-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi112-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi112.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi112.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi112.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi112.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi112__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi112__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi112__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi112__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi112__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi112__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi112__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi112__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi136-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi136-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi136-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi136-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi136.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi136.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi136.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi136.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi136__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi136__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi136__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi136__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi136__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi136__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishi136__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishi136__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiAC-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiAC-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiAC-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiAC-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiAC.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiAC.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiAC.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiAC.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy152Ac-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy152Ac-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy152Ac-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy152Ac-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRNeoclimaAc-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRNeoclimaAc-members.html
similarity index 67%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRNeoclimaAc-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRNeoclimaAc-members.html
index 620331bac..bae33a328 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRNeoclimaAc-members.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRNeoclimaAc-members.html
@@ -68,36 +68,36 @@ $(function() {
This is the complete list of members for IRNeoclimaAc, including all inherited members.
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRac__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRac__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRac__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRac__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRac__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRac__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRac__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRac__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRac__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRac__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRac__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRac__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRrecv-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRrecv-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRrecv-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRrecv-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRrecv.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRrecv.html
similarity index 99%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRrecv.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRrecv.html
index f66d0ec4d..9f218d4f8 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRrecv.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRrecv.html
@@ -4788,7 +4788,7 @@ LG 32bit protocol appears near identical to the Samsung protocol. They possibly
Returns
True if it can decode it, false if it can't.
Note
The 'toggle' bit is included as the 6th (MSB) address bit, the MSB of data, & in the count of bits decoded.
Need to ensure capture of the inverted message as it can be missed due to the interrupt timeout used to detect an end of message. Several compliance checks are disabled until that is resolved.
Need to ensure capture of the inverted message as it can be missed due to the interrupt timeout used to detect an end of message. Several compliance checks are disabled until that is resolved.
@@ -7248,7 +7248,7 @@ LG 32bit protocol appears near identical to the Samsung protocol. They possibly
Clean up and optimise this. It is just "get it working code" atm.
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRrecv__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRrecv__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRrecv__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRrecv__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRrecv__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRrecv__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRrecv__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRrecv__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRrecv__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRrecv__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRrecv__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRrecv__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRsend-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRsend-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRsend-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRsend-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRsend.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRsend.html
similarity index 99%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRsend.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRsend.html
index bee572388..0cd2190e9 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRsend.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRsend.html
@@ -5531,7 +5531,7 @@ Use this method if you want to send the results of decodePanasonic.
Note
Caller needs to take care of flipping the toggle bit. That bit differentiates between key press & key release. For RC-5 it is the MSB of the data. For RC-5X it is the 2nd MSB of the data.
Confirm that is actually how Samsung sends a repeat. The refdoc doesn't indicate it is true.
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRtimer-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRtimer-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRtimer-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRtimer-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRtimer.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRtimer.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classIRtimer.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classIRtimer.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classTimerMs-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classTimerMs-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classTimerMs-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classTimerMs-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classTimerMs.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classTimerMs.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classTimerMs.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classTimerMs.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classdecode__results-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classdecode__results-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classdecode__results-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classdecode__results-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classdecode__results.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classdecode__results.html
similarity index 91%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classdecode__results.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classdecode__results.html
index 349113e76..91a0dab27 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/classdecode__results.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/classdecode__results.html
@@ -78,20 +78,20 @@ $(function() {
Public Attributes
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/closed.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/closed.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/closed.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/closed.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/de-CH_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/de-CH_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/de-CH_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/de-CH_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/de-CH_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/de-CH_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/de-CH_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/de-CH_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/de-DE_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/de-DE_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/de-DE_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/de-DE_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/de-DE_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/de-DE_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/de-DE_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/de-DE_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/defaults_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/defaults_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/defaults_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/defaults_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/defaults_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/defaults_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/defaults_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/defaults_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/deprecated.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/deprecated.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/deprecated.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/deprecated.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/dir_49e56c817e5e54854c35e136979f97ca.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/dir_49e56c817e5e54854c35e136979f97ca.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/dir_49e56c817e5e54854c35e136979f97ca.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/dir_49e56c817e5e54854c35e136979f97ca.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/dir_84fe998d1eb06414cc389ad334e77e63.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/dir_84fe998d1eb06414cc389ad334e77e63.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/dir_84fe998d1eb06414cc389ad334e77e63.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/dir_84fe998d1eb06414cc389ad334e77e63.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/doc.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/doc.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/doc.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/doc.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/doxygen.css b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/doxygen.css
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/doxygen.css
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/doxygen.css
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/doxygen.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/doxygen.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/doxygen.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/doxygen.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/doxygen__index_8md.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/doxygen__index_8md.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/doxygen__index_8md.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/doxygen__index_8md.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/dynsections.js b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/dynsections.js
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/dynsections.js
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/dynsections.js
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-AU_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-AU_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-AU_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-AU_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-AU_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-AU_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-AU_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-AU_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-IE_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-IE_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-IE_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-IE_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-IE_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-IE_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-IE_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-IE_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-UK_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-UK_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-UK_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-UK_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-UK_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-UK_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-UK_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-UK_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-US_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-US_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-US_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-US_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-US_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-US_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/en-US_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/en-US_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/es-ES_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/es-ES_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/es-ES_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/es-ES_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/es-ES_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/es-ES_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/es-ES_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/es-ES_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/files.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/files.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/files.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/files.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/folderclosed.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/folderclosed.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/folderclosed.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/folderclosed.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/folderopen.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/folderopen.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/folderopen.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/folderopen.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/fr-FR_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/fr-FR_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/fr-FR_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/fr-FR_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/fr-FR_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/fr-FR_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/fr-FR_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/fr-FR_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions.html
similarity index 87%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions.html
index 7e54e240f..ceea7e7af 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions.html
@@ -96,6 +96,11 @@ $(function() {
, IRMitsubishiAC
, IRMitsubishiHeavy152Ac
, IRMitsubishiHeavy88Ac
+, IRNeoclimaAc
+, IRPanasonicAc32
+, IRSamsungAc
+, IRSanyoAc
+, IRSharpAc
, IRVoltas
isProtocolSupported()
: IRac
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_func_k.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_func_k.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_func_k.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_func_k.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_func_l.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_func_l.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_func_l.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_func_l.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_func_m.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_func_m.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_func_m.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_func_m.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_func_n.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_func_n.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_func_n.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_func_n.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_func_o.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_func_o.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_func_o.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_func_o.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_func_p.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_func_p.html
similarity index 96%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_func_p.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_func_p.html
index fb659551b..4af972009 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_func_p.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_func_p.html
@@ -67,6 +67,9 @@ $(function() {
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_vars_v.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_vars_v.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_vars_v.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_vars_v.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_vars_w.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_vars_w.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_vars_w.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_vars_w.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_vars_x.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_vars_x.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_vars_x.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_vars_x.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_vars_z.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_vars_z.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_vars_z.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_vars_z.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_w.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_w.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_w.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_w.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_x.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_x.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_x.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_x.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_z.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_z.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_z.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_z.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_~.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_~.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/functions_~.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/functions_~.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_a.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_a.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_a.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_a.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_c.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_c.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_c.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_c.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_d.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_d.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_d.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_d.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_e.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_e.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_e.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_e.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_enum.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_enum.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_enum.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_enum.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_eval.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_eval.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_eval.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_eval.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_f.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_f.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_f.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_f.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_func.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_func.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_func.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_func.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_g.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_g.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_g.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_g.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_h.html
similarity index 97%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_h.html
index fb077717b..317031034 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_h.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_h.html
@@ -95,6 +95,9 @@ $(function() {
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_l.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_l.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_l.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_l.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_m.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_m.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_m.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_m.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_n.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_n.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_n.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_n.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_p.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_p.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_p.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_p.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_r.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_r.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_r.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_r.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_s.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_s.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_s.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_s.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_t.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_t.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_t.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_t.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_type.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_type.html
similarity index 96%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_type.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_type.html
index 5f3e05a75..ce5fb8cc9 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_type.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_type.html
@@ -62,6 +62,9 @@ $(function() {
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_u.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_u.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_u.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_u.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_v.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_v.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_v.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_v.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_vars.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_vars.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_vars.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_vars.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_vars_i.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_vars_i.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_vars_i.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_vars_i.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_vars_k.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_vars_k.html
similarity index 94%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_vars_k.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_vars_k.html
index 8ffd8e7e5..2a03fd02d 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_vars_k.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_vars_k.html
@@ -4059,16 +4059,16 @@ $(function() {
, IRtext.h
kWifiStr
: IRtext.cpp
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_w.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_w.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_w.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_w.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_x.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_x.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_x.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_x.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_y.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_y.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_y.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_y.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_z.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_z.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/globals_z.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/globals_z.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/graph_legend.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/graph_legend.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/graph_legend.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/graph_legend.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/graph_legend.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/graph_legend.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/graph_legend.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/graph_legend.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/graph_legend.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/graph_legend.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/graph_legend.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/graph_legend.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/hierarchy.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/hierarchy.html
similarity index 80%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/hierarchy.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/hierarchy.html
index 61fe3baae..6a1edaee4 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/hierarchy.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/hierarchy.html
@@ -131,35 +131,41 @@ This inheritance list is sorted roughly, but not completely, alphabetically:
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/i18n_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/i18n_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/i18n_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/i18n_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/i18n_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/i18n_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/i18n_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/i18n_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/index.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/index.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/index.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/index.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_0.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_0.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_0.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_0.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_0.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_0.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_0.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_0.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_0.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_0.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_0.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_0.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_1.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_1.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_1.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_1.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_1.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_1.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_1.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_1.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_1.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_1.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_1.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_1.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_10.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_10.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_10.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_10.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_10.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_10.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_10.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_10.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_10.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_10.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_10.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_10.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_11.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_11.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_11.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_11.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_11.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_11.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_11.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_11.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_11.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_11.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_11.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_11.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_12.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_12.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_12.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_12.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_12.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_12.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_12.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_12.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_12.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_12.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_12.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_12.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_13.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_13.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_13.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_13.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_13.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_13.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_13.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_13.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_13.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_13.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_13.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_13.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_14.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_14.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_14.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_14.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_14.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_14.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_14.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_14.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_14.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_14.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_14.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_14.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_15.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_15.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_15.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_15.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_15.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_15.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_15.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_15.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_15.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_15.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_15.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_15.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_16.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_16.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_16.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_16.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_16.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_16.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_16.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_16.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_16.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_16.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_16.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_16.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_17.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_17.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_17.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_17.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_17.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_17.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_17.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_17.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_17.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_17.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_17.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_17.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_18.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_18.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_18.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_18.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_18.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_18.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_18.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_18.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_18.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_18.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_18.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_18.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_19.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_19.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_19.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_19.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_19.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_19.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_19.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_19.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_19.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_19.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_19.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_19.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_2.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_2.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_2.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_2.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_2.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_2.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_2.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_2.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_2.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_2.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_2.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_2.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_20.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_20.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_20.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_20.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_20.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_20.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_20.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_20.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_20.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_20.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_20.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_20.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_21.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_21.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_21.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_21.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_21.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_21.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_21.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_21.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_21.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_21.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_21.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_21.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_22.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_22.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_22.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_22.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_22.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_22.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_22.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_22.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_22.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_22.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_22.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_22.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_23.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_23.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_23.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_23.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_23.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_23.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_23.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_23.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_23.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_23.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_23.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_23.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_24.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_24.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_24.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_24.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_24.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_24.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_24.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_24.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_24.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_24.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_24.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_24.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_25.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_25.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_25.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_25.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_25.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_25.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_25.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_25.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_25.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_25.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_25.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_25.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_26.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_26.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_26.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_26.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_26.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_26.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_26.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_26.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_26.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_26.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_26.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_26.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_27.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_27.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_27.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_27.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_27.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_27.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_27.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_27.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_27.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_27.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_27.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_27.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_28.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_28.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_28.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_28.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_28.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_28.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_28.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_28.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_28.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_28.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_28.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_28.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_29.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_29.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_29.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_29.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_29.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_29.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_29.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_29.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_29.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_29.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_29.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_29.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_3.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_3.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_3.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_3.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_3.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_3.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_3.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_3.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_3.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_3.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_3.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_3.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_30.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_30.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_30.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_30.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_30.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_30.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_30.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_30.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_30.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_30.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_30.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_30.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_31.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_31.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_31.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_31.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_31.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_31.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_31.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_31.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_31.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_31.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_31.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_31.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_32.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_32.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_32.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_32.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_32.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_32.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_32.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_32.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_32.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_32.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_32.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_32.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_33.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_33.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_33.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_33.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_33.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_33.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_33.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_33.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_33.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_33.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_33.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_33.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_34.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_34.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_34.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_34.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_34.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_34.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_34.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_34.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_34.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_34.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_34.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_34.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_35.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_35.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_35.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_35.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_35.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_35.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_35.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_35.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_35.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_35.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_35.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_35.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_36.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_36.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_36.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_36.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_36.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_36.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_36.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_36.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_36.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_36.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_36.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_36.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_37.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_37.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_37.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_37.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_37.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_37.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_37.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_37.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_37.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_37.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_37.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_37.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_38.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_38.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_38.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_38.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_38.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_38.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_38.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_38.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_38.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_38.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_38.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_38.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_39.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_39.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_39.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_39.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_39.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_39.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_39.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_39.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_39.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_39.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_39.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_39.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_4.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_4.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_4.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_4.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_4.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_4.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_4.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_4.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_4.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_4.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_4.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_4.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_40.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_40.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_40.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_40.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_40.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_40.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_40.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_40.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_40.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_40.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_40.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_40.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_41.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_41.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_41.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_41.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_41.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_41.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_41.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_41.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_41.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_41.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_41.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_41.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_42.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_42.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_42.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_42.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_42.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_42.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_42.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_42.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_42.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_42.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_42.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_42.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_43.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_43.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_43.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_43.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_43.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_43.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_43.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_43.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_43.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_43.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_43.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_43.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_44.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_44.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_44.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_44.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_44.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_44.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_44.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_44.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_44.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_44.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_44.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_44.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_45.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_45.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_45.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_45.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_45.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_45.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_45.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_45.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_45.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_45.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_45.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_45.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_46.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_46.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_46.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_46.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_46.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_46.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_46.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_46.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_46.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_46.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_46.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_46.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_47.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_47.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_47.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_47.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_47.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_47.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_47.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_47.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_47.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_47.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_47.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_47.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_48.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_48.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_48.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_48.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_48.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_48.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_48.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_48.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_48.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_48.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_48.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_48.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_49.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_49.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_49.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_49.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_49.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_49.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_49.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_49.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_49.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_49.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_49.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_49.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_5.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_5.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_5.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_5.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_5.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_5.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_5.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_5.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_5.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_5.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_5.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_5.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_50.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_50.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_50.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_50.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_50.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_50.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_50.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_50.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_50.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_50.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_50.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_50.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_51.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_51.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_51.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_51.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_51.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_51.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_51.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_51.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_51.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_51.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_51.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_51.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_52.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_52.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_52.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_52.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_52.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_52.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_52.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_52.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_52.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_52.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_52.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_52.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_53.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_53.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_53.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_53.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_53.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_53.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_53.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_53.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_53.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_53.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_53.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_53.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_54.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_54.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_54.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_54.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_54.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_54.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_54.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_54.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_54.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_54.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_54.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_54.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_55.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_55.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_55.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_55.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_55.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_55.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_55.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_55.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_55.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_55.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_55.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_55.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_56.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_56.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_56.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_56.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_56.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_56.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_56.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_56.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_56.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_56.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_56.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_56.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_57.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_57.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_57.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_57.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_57.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_57.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_57.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_57.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_57.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_57.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_57.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_57.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_58.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_58.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_58.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_58.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_58.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_58.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_58.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_58.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_58.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_58.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_58.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_58.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_59.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_59.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_59.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_59.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_59.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_59.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_59.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_59.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_59.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_59.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_59.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_59.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_6.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_6.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_6.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_6.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_6.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_6.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_6.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_6.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_6.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_6.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_6.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_6.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_60.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_60.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_60.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_60.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_60.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_60.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_60.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_60.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_60.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_60.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_60.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_60.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_61.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_61.map
new file mode 100644
index 000000000..8234a7463
--- /dev/null
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_61.map
@@ -0,0 +1,3 @@
+
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_61.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_61.md5
new file mode 100644
index 000000000..fb2602ca0
--- /dev/null
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_61.md5
@@ -0,0 +1 @@
+a933b42bdde6be117985126166b7d49e
\ No newline at end of file
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_61.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_61.png
new file mode 100644
index 0000000000000000000000000000000000000000..1c2d7082b418d96f9a2f6b56e6828ec922732ec8
GIT binary patch
literal 1882
zcmV-g2c`IlP)(MdZj5TDFMSUsH>~8%
z;NV~c2L~e~BLjnjgKS)_RwFq%8G(U;h=_>5sZ*z5u~@ts!ySuubBz=gk=$9E3z7!T$aGF)}i;SS9_F*zI=I)YRbk@#Cnfs`5(v;K2hNK71Ix
zy}jt_>caT=IF1}S!p2KVN^tJnIT(#bw6?aQy}ca;1qFYs_C-H!`TF`IKR+J~!$7Om
z&YQ#M^KtX$P5k`%6B>;Msi~=87zWFhErUoTLP<#pX8&^}K0Y27FJ6RHDg~dNJt1mLql=&=uwP~jd?uw+|!oD
zVu4&Phe#wsP*4y~oH&7BzkadtSFc_{C=}xU{rfN&3{F2VclxrjG8{a35CVY!QBhII
z&CNw;XD6#|Yiq;4efz-Y^AQ&phrGNzym|9x;V;cY7Tr8ns}=X|-2=lgNJvQVNYmWh
z3_=K|rl#=x`ExvZ@&pYH4GuYVb#=IL;|7L@hmoC~4Vg^F8pNIc%a<=GDk?&KeLa5s
z_<`HEZ#(pzo}Lb~*^Hi^9&~ng!e}%?CX;zQ_FQB#8M?c>@$%(M7z_qTBoe4pDmGqK
zRfRKW&Va|`AwNGKj~+epNAYsefL8ym?ytKE{6
zltkomxkDQOyYP5C(%jtaQe!roNnv3j2?z)v!^6W){Z~{}kc^BBw!LZ7CQ?>b#@a;nLHYM>(;HLy1JSW
zLP%d<9|1smdwb`tYjALoL`FuE$;nAV2qB}Rqa-{$oLH?^kMx8PQd?Wg?q{)B>~bGe
zR#p0|O4)kdP4e^Qu*=000vc69C{=FA|B+(9nSM=g%V{
zApto#Ie7p6J%Il{*IT}PIijPZ*}m7UTgS#c8GAP0zI}s_j}O+aT|4hSs;Q}g(P#vZ
z#{-PfJTfOG^vhy?Y0#REosJL|Cm>L`FtpdU_iD{rzmNPNxF^L`Ft>z3tJ_
z(XiQU(ChV1F}vLkg+hT(pFV*Q!Y*xXZS1Mboqje9!yqgy48_I8=0Duh}HaKV!6BD7;YN6F?-Rf;N8`9I$(bLm|
z-@kvOudff6FJH!*HER$X8w&uqaNzD)~#E}%*+Iz&&S!bXL0DzA&iq@<)EC@2W!<>gQ+mGJlX2LLoS
zHp1WEA7Zf>5{U#65fNU`zs#n-z8)JlZbVX25@KRv(ACw2y?ghfs;UYpDJf3*JRT2H
zsg%8Kccu67@qtVx!^x8;AruO+efxG;EEcF#Dy&$s0^{T3C@n2Te}6yLuV2s3sjXbO
zlJmCAg(1Z8Heu!wJfSaDP~g@N^z8`>cc^(NoT28SaE6+P!Wn8F3TLQ!D4e0@p>W3K
zt2aueaw+Se{G(_z8kaGb=5h6|4uvv<(+o3(;vsZ~nZg}v9tvluc_^Hr=Am%rKiW2-
U7kwyhA^-pY07*qoM6N<$f-PZlw*UYD
literal 0
HcmV?d00001
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_61.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_62.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_61.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_62.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_61.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_62.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_61.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_62.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_61.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_62.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_61.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_62.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_62.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_63.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_62.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_63.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_62.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_63.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_62.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_63.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_62.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_63.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_62.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_63.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_63.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_64.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_63.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_64.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_63.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_64.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_63.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_64.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_63.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_64.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_63.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_64.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_64.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_65.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_64.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_65.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_64.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_65.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_64.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_65.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_64.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_65.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_64.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_65.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_65.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_66.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_65.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_66.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_65.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_66.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_65.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_66.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_65.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_66.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_65.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_66.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_66.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_67.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_66.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_67.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_66.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_67.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_66.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_67.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_66.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_67.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_66.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_67.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_67.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_68.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_67.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_68.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_67.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_68.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_67.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_68.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_67.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_68.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_67.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_68.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_68.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_69.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_68.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_69.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_68.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_69.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_68.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_69.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_68.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_69.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_68.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_69.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_7.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_7.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_7.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_7.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_7.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_7.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_7.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_7.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_7.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_7.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_7.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_7.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_69.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_70.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_69.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_70.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_69.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_70.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_69.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_70.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_69.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_70.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_69.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_70.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_70.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_71.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_70.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_71.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_70.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_71.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_70.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_71.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_70.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_71.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_70.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_71.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_71.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_72.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_71.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_72.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_71.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_72.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_71.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_72.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_71.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_72.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_71.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_72.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_72.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_73.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_72.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_73.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_72.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_73.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_72.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_73.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_72.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_73.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_72.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_73.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_73.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_74.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_73.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_74.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_73.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_74.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_73.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_74.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_73.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_74.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_73.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_74.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_74.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_75.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_74.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_75.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_74.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_75.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_74.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_75.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_74.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_75.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_74.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_75.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_75.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_76.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_75.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_76.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_75.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_76.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_75.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_76.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_75.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_76.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_75.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_76.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_76.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_77.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_76.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_77.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_76.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_77.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_76.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_77.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_76.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_77.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_76.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_77.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_77.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_78.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_77.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_78.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_77.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_78.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_77.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_78.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_77.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_78.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_77.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_78.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_78.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_79.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_78.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_79.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_78.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_79.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_78.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_79.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_78.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_79.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_78.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_79.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_8.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_8.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_8.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_8.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_8.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_8.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_8.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_8.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_8.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_8.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_8.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_8.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_79.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_80.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_79.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_80.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_79.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_80.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_79.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_80.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_79.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_80.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_79.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_80.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_80.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_81.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_80.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_81.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_80.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_81.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_80.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_81.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_80.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_81.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_80.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_81.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_81.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_82.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_81.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_82.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_81.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_82.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_81.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_82.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_81.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_82.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_81.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_82.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_82.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_83.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_82.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_83.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_82.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_83.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_82.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_83.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_82.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_83.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_82.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_83.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_83.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_84.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_83.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_84.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_83.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_84.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_83.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_84.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_83.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_84.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_83.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_84.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_84.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_85.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_84.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_85.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_84.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_85.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_84.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_85.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_84.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_85.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_84.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_85.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_85.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_86.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_85.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_86.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_85.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_86.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_85.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_86.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_85.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_86.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_85.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_86.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_86.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_87.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_86.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_87.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_86.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_87.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_86.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_87.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_86.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_87.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/inherit_graph_86.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_87.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_88.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_88.map
new file mode 100644
index 000000000..c4d102c45
--- /dev/null
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_88.map
@@ -0,0 +1,3 @@
+
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_88.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_88.md5
new file mode 100644
index 000000000..d7cc2880d
--- /dev/null
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_88.md5
@@ -0,0 +1 @@
+50d913fa42aa3a270fa531be27c6d9e7
\ No newline at end of file
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_88.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_88.png
new file mode 100644
index 0000000000000000000000000000000000000000..a70fc3a2739164d0464ed19f7432e428018aa291
GIT binary patch
literal 1434
zcmV;L1!ek)P)B;0nocwxV#+j4)<
z4!`$v^`7TE=Q-bJ-}9dH?jNKm3Sj67{UDo8|55Ye`TrQ1E}58DS62rieD&&8EFzQ1?%utdJ5_(+
za5!$=x|NesNI8U%!{J=GaA9t4F0I35GTDO%4|1X;CuBJDjvYJJ*Vh+`L~^TUAJAwt
z6h--bK7t?`8yo$8|3NFtoD9uVtJT3^aD04x_pVSVq|sH{U^1CboH$WfSlHRw8I49!nnIy~5Hc7Hi9|9uIJo<3FD{pBG#WQIH|OW)QCXc%
zclq*V4u@m2*%C@^X=!n}TsLptgb>Q*@^m{&mYfY4n#W?X3Px
z91dq~Z4H%06O^K;WKvO^$h;J32|G$rGrqgj008WEdweAG)h2|{WHOmdCZEq23wpg?
z0Dw>^MC$@3lNk&KmzI`DlFZA?6N|+tO)8ZF07#NtT3TWU0E6-0%av9~DQadzw(s+dMx)JULlX`FAQFih8ynSX^`}pte*XOV=FJQ@hK5us6_?A^YPHv{T}!t@GO7Lj{V!j>JaXg+T5YD)QL^N$h`+z>alwK)5I_zW
zESLian@3}?c{B!_M`N&gGzObTW3YKNCc#ht9zTA(|2i-kkifj==H~s^fyn?!;s58+
o7W~YkG1xpBgUzEc*gP8Z8@#@5aAH{cQUCw|07*qoM6N<$g4{Z?WdHyG
literal 0
HcmV?d00001
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_89.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_89.map
new file mode 100644
index 000000000..533a66ce3
--- /dev/null
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_89.map
@@ -0,0 +1,3 @@
+
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_89.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_89.md5
new file mode 100644
index 000000000..0df68f458
--- /dev/null
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_89.md5
@@ -0,0 +1 @@
+c46308bc905d013a43886037b1dfc5ef
\ No newline at end of file
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_89.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_89.png
new file mode 100644
index 0000000000000000000000000000000000000000..2bb74dcfd61a445b7a8cd0230f3b6c715baed5e3
GIT binary patch
literal 1936
zcmV;B2XFX^P)id;ECD^c`~N>32vG?;`%
zP?FN)ixu@ku_(%{7iDUi2<8m&g_UJ6^o=Vr%n?D(Os7*Lqsh`rx9j)f|M#HI&9j<4
z9PSSccFuKw@B6;4`@5U7vj>id2n>e!s9*A@XTV@A7R=lX(ZbBl5G~By4AJ5}_e6Vp
zJFZ>3_9y1TVEi=o_4N+t9CmJ#$%F?F9{iRGF&Mwfz`%f0zdG#P)6DluU@-nRv|24x
zD%HF(cFoNYEzH~u(ZbBl5G~ByjK7BX_;{3;mwT)~W^NaFy4Z~0i$~0zmX-#NpzNKug9T7huqQ>78ZizI8;|xyQMQ4jo80`KZ1gS5EK*yl}d%d
z!9hOW+S-b=v^4np`y(_o6i1I9#n{*wA76|$h>eX!RaMn5_3Z-Sg?;<>p}V^q9UUF8TCK>;%;e*R
zg@rhI@+3?q6P`YOing{k96NSwRv&B)=0J0(tE;1VPP-&EHI?%7^ZDbiU%wK^an#t@
zNIQ1yAOOU19LeQ!Dkvx*yWP&WRVWm6?%X*_PEIC2KR=3!ilQe^p78O7^d%)FB$vx+
z*|KGnkdQzf9UXjZWMqW0va%>BD2RfCgDE>Zn?^@R1&n#Kqe$_7eHFr}}6Nm_t
zlapv@Xu!RD_fT6~JF87~bu}(sx`g53VPt1#L#}#Q>dw_!RY8H
zu3Wh?tM81A3|K4{bar;)<;#~anM_ct)q=;Ki(0M5t5>h^@Zm%B_Vz-lR6?iI@$u5q
zQXD^i91@8Hxw*NxbLWm*`f1E&GpeepuxHO6r*&;@ZN=uzo1Mnzh`$DcocCIB=rFfi{}GxhJ^zo+HPms3|)mqWXro*n`~y}iBsIfKDK
z0LW}M3mSXoPSV%cM*yh1yL;Yw4Gs=cSXdbS`0;~?h(3M#L?Iy|G(J8qNKZsmSy{>N
zl+n@APHS-E#tjM#3?!q`$e&wi4HOCm6&4n{RUf5NNtKnAf;Fyk6f)jlyK|S6lz`(n
zgoK3P`Sa&!Y;45p)vHloUyqoW7)Yg3a2$vH{Co@y49wC72M6=deSLia0231v0N_#|
z5fOpf+FG1GeHyW`vB=5E!Ryzr0sQYfGTz?akjv$K-|N<`<6}a`p2>#~AK>NXg|%zf
z&YOQlMFmVI6C@G|IF7@rRjXh&n^9L+CrA$f2M!#7-EN23Y(_#t0=948j`8vFS#56K
zyorK>0z7;6%%Lx5YcNfCcsT!DXnkg~kj7PxKQrF1;_)|>R;v|yy&fqkDHs_UK~`24
z&YwSzp`jtz?RFFw7h`H_N>HCd^t*QLLUVI7Uc7jLl#~=CCMIHhd>mn6VVIhlLVtfh
z-_~d}0sz9o!rabJE|fq%F)y7A%sP}=AM|C
zfZc9~zrQ~u5()HrJ&KEqJ*IDIX@N$gfzfEh8?ElewKscz8H=?%au-oE*G;`xX|91!ZMrXliOgb8|BQV8ezDvowi`i7*%p
zFc=Ij^){Og85tSq?Ciw1Z{N_@*M|!iE?~`?HCVrXJpkbB*|WHP`!?Fz+OTosMz`lb
z7a{eL$zf$$(g*2{m^z?cNVNuO3m&oI*&QW63J
z0+61bj+HA{qPVyiTCEmRsT2TES62tAREp^6XegCRgocK?egAnTH8nNZv}qGkQ&SNc
z8HtXL4kRZhqqMXX>FMbX?IjWkQc_a*+k(#YUS3{MtJOGiC&aJTCFH5DnfsMKcb?d`1{#DK0ZI43$So~&YU@e$B!Sw*Vh;E@$rH*&T{|oVUm+y+qj<(YfD6B}U%xZN3o|!Ev@mlsL<=)FL$ok+GeiqBH$${Ab2CJX)4z7m
zYPG*}9t_4$(ca$fH0IRY&i)I6!T48j_=J+d5DDxPN``o0=4OZ%W^RUPVdiFtmj3{T
W+LUsTh%7+>0000
+
+
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_90.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_90.md5
new file mode 100644
index 000000000..8ff77f63b
--- /dev/null
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_90.md5
@@ -0,0 +1 @@
+b1b834fb334b5d9cab86238a149def7d
\ No newline at end of file
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_90.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_90.png
new file mode 100644
index 0000000000000000000000000000000000000000..e72427254a141eadec3edf0acb3218ad9ccea2ae
GIT binary patch
literal 1790
zcmV-K~!jg?VDXp(p?}^VXO@28nJpP5B_-FdUr*seJhSv8mCS~QhW78@PovSORH|4ke(~bPqT5<@_Uze%
zVHk#CWHNc%wr$U!KTqoNqN1W3H*WkMYe|zzW)g{nL?T(OR;SacQmHOoy0qxFeg{gW
z5<=+lcmx7LO-+s0>s@L`DUx(%|jMx$Xc7&$pPM~)nc#bQWy<;oQ{n@uDVOG`_w
zRx2tp7>p-Ro}jVY?Zz-H5D1{27cN{7i9{3%W#h(;j~_oq8jr^#kw_>MNLx&E1{rVLE
zAeYMr1_l}%8!-$kDJcN}%qjx_eEarIsZ_GrY$}y{^ytxWIGjM7Ixr4{!SG9ECb3v-
z!-fs}_U$v7Op!=rrXU)PTCG+dk9Yg_ZB!{NEM&1*uV25OoSbZIY$TJ(hYuhA^5x6W
z&`@4pp3!K85PtaZAuB8E<;$0mNW^3^ojiFGT}!9adwYA)*yVBo0Q`PG>d9m>Efz~S
z9ByrGrO{}ySPVkAefxH~T<-OH?RNXtty=*A6B82vX!rcN;<|lgVT60KcjYfm&=$-3!yKOex
zbVv}wzP`ShnFWKv=H_NHnf&?lXVeG%Nq`XA?REgb$B!S;^zGZX0Dw=QKEal>e{kp3yDO+Fifdb
zy4~*SOV+Geg9gi&FJG}@1(8Uco<<@O005iKzH{f!sZ*zlii(<=n%=y5Gp`LAjfMsU
z0s#OJi9|de4~axty?QmOb2yxMeS3R5hGA>huC-V!-QC@}xw)v$WHQmf<#J_aX0li;
zH0AMlsQAnC&LtZe8CkY$8JEjlhgq?29=&??N+c4Mm6d(}{v7~7AP`Wf0DyT<4Rks^6bemmU=D{P
z{!z5fLZOh^Y!-<`({&8P&|uxVb2#v$@bEAy0st~H{=HFi$yhAb)YKGOSo4Y(
zcu!^}>C8MHPjz*5Utgc!?+*rp9UUDbBO}Gd#gRxP7K`QN-W&y-0zGdi7q?AS52TFvEhnM|fmr_<~8m6eq&7VGlm%k}m36beP9QXM#OAgQ+H
z<>f0^t`v*KR4P@g)f$aP5{U!=P^;BGpN~$bOQq6<^fVX@fk1%EH*cc)>C>klK72?Z5YV}CF4?VHw>E9sR8>{Q;cx~91}Z8l
z5{OeLesf#k86;ik>FJ?TsY~tRzcTX-GRya8X^p{P$jr>#y?eLA;b>`Tk;~;v?P&4&
z+dglstgP(n>RP{ky;Ld{i9{NWW~m)5K7ZRfTeWIcXJ_Y9yZF8QZR_m+0G?U;foGO}
z;F+Z#vz$SUM&qCNfio9wx0}IW#8+m?tgf!^Px--F5Hgu8eu_c-_h;z_zMrKZcxLGb
go>}^VXO@2a1KKkspE2LBH~;_u07*qoM6N<$f=SJ9LI3~&
literal 0
HcmV?d00001
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_91.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_91.map
new file mode 100644
index 000000000..5f72a83ce
--- /dev/null
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_91.map
@@ -0,0 +1,3 @@
+
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_91.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_91.md5
new file mode 100644
index 000000000..3f5947724
--- /dev/null
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_91.md5
@@ -0,0 +1 @@
+1cd8b2819fa996d3eee012c4f24f4015
\ No newline at end of file
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_91.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_91.png
new file mode 100644
index 0000000000000000000000000000000000000000..d1b63c50d8bbf79cdd627e534fcc00c51ec71d95
GIT binary patch
literal 1449
zcmV;a1y=frP)|=>95Z60KNbirg27;8EA>UaSj1o!E4|i~wQx=Bh4bvi0e}9M
z`b+EQg>^r#&Ut*E=YH>(bMLucg$N-)lXe(X3pl0FzEcD3J2lY0Qv)-4Vzb$vK7C4+
zl)szu@^XX05SjjKy}RA+nVFfiOZxk<+wC@+Ejq$HoMf?B(xvCL(Ae1cM})q=Qv>Zg
zHPF6O1MT~D=SN>RK9=z{={X)q_(yeLI@$`
za5&elU3>TLT~g&&uU;J+8~cBxB~2>6t5hmBo4vBK;&QnR2E&slPflD`JoI`!LdfIs
zNTt&H`g)(wm$pNnEJ^$B^?ElpHhOw`^7HdK98Pt0_5A!i{;0054noLaFoZ&3Z*Onp
z4RdK}>7z%F6bc1F5SK4se*OA20KjN878Mmm+B%(1CX>0fwFLn1`Fyu;-{x|;xw*OR
z?d{*cfB!=RK@fd?ef#_S_{&IXY3aj<53gUp&f#z-CnsZ;H#avgFE8J@a|c3LR#uka
zC_jGu(ChU=p)e~e>)yS4fk5CWl9C2RF*P;yN8~W!aJZnL;O5PnHk&ON3?5Dhg+ePU
zD-wz1<;#~iQc_aF=kpy7M<5XB?d|1qx#4hle}A7Khz}n=;GCYGp4!@4Jg%y$QmIrP
zkH_V5$>nmDN`>P!H8ps>BZLBh0EEzLwc`F4E?ih#TnvRm3Cg8Xso89f=!}Px+~0XT-th3S
z)9L*7?OSVWYhz>M+qZ8402Yho%9Sf@HXA~y*Xv1=jFfP>Ts&a0SO9=vFbDwX>gt-A
znc3alwOA}nCR43e0|4A^HHSK?pBiyy$Q^tX6AoZZ3}V`FuP`
zTpl4_+UDlwnKNg^V)0RuQ?M?=v7RFdg3#%70)b$0anbAbwzRZ7e*Ac6XD1vE4-O87
zLZQUvg@uJOnQUxq%xE-rbaZ57WB>pzUAhzsg;31?pLV-lp-@Cx
zK?w06K{TxVdw#!vbaZrcb5kah
z1%ttGIGmZ8dG_pCyWKuGICzw9U0q%M{ryWzOP!saI3f~>Dl02>I^E9Bj@#|-?(SA9
zm3eu2N0gVKJTEWrOs`(OI;NzUB<(wo$Gd<3
zeqUdoSS;rA`6iReY&PGxaYG;w^!N9-w6qWeVK5kO-MV#@ZW@h-!C=Vca(wY(rlzLY
zY<6*Ru~aJM@p$9o<4GxuSN`C^gN20!7K??SXX2&3c=4jBsHmoEqT00000NkvXXu0mjf
D5vtI`
literal 0
HcmV?d00001
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_92.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_92.map
new file mode 100644
index 000000000..a44385de0
--- /dev/null
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_92.map
@@ -0,0 +1,3 @@
+
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_92.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_92.md5
new file mode 100644
index 000000000..6d52458cf
--- /dev/null
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_92.md5
@@ -0,0 +1 @@
+af127f8efd7b9214f504e0a64933888e
\ No newline at end of file
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_92.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/inherit_graph_92.png
new file mode 100644
index 0000000000000000000000000000000000000000..cd719b8bcf48a8bfceb8eb3a7219b5bd1226963b
GIT binary patch
literal 1530
zcmVeZ{c
zsD&dVgM))feMwh#AP~UayLVTlAddWqqL|jdq$~S7sm=_}>c`{pps}$r{#R61R^rBu8?wdYSGIzX#q76l-=d+R0a~pV8jS|EwY7Nm
z?3o;)|CmFE4uLTS#u(IUHFoXVg^`hwWyRdFV+U^DyeUtCIY1V(Z8jTJDitOtC*k+|
z(bm?6&dyFbLN5!4!vP{fFc^f@YDIm0Jwl;SuFJ|9%Qky%ZVo=559iLELrF;q)M_;j
z9z2NQ;o*dNZ{EB?b#*laLBN(RTkz=7BWbLzt`3YbeMOB&(8w@jvqgciHQlEK7AUDF;rGo0>Cdd0Py9@7dRXal$Mr4qtW2Z
znKOt)B3Wr=hkjyUV1QC|rzIYb)8@^a>Bx~I6_#YHDi8;c!SXB9RC%O40C~eGr`}UE|W}{#*NPfScs;a8UX0u5#tX3=a_Vy;!
zoJmt(Ur)Pt@1|F;UeUtB0=Zl+x_|$ER@#b+3Ua&MS$jeBOaDB}Hk*h@6h*Sz?PM~U
zXzkjyv~%Z9x_9rMG;TJV>B^NWQhR=Wo&b<2iYepu^z=|;V`GBe>2xN{F`LcQ-rk1nC&<;#}@fIfcwNJPnIXVQH5
z@PPo()YMecF=mrbZnI@svvoQhu3fu^si`S^{`?syPoBiFW5@9H=~HQrR;!gh7Zel#
z0HV<-fdBrQEiW&JN~Hp03=W3_q9`Wh(ChU{d5uP6Qu{|;PfrgRV<;{z#`yR+hK7bv
zSXh`cW*`tiettd-27}aRGMS{YRAkc3%*xOnj*W@l#+kH^v7-Hli*mN1VomZY7Yo=#}LfBzmOB_&e(`v&dn*RL2G
z8$)$NuBqM@PTkB-A=G-B`Gy|CNun4O(PAP_)nYb$DNYf)5G1OO;1D#D8w
zFQgMOlSZ%Cqpq$F&CSht{rWY+;V|58Hy%8AkX1gpS+?0aoepQuo<&zz7s|@Ypx5i+
zcDvEr+lvDS4rJ6D3kxm#LV(9zL>;^JcT_xEFXco-Wt
zZ204285kIVN~OZ~?b~6sTA|bFaO>7BY5e^8^LY61Aqol#q}_NXO
-
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Airwell_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Airwell_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Airwell_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Airwell_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Airwell_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Airwell_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Airwell_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Airwell_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Airwell_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Airwell_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Airwell_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Airwell_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Aiwa_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Aiwa_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Aiwa_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Aiwa_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Amcor_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Amcor_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Amcor_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Amcor_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Amcor_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Amcor_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Amcor_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Amcor_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Amcor_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Amcor_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Amcor_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Amcor_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Argo_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Argo_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Argo_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Argo_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Argo_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Argo_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Argo_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Argo_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Argo_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Argo_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Argo_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Argo_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Carrier_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Carrier_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Carrier_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Carrier_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Carrier_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Carrier_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Carrier_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Carrier_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Carrier_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Carrier_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Carrier_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Carrier_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Coolix_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Coolix_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Coolix_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Coolix_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Coolix_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Coolix_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Coolix_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Coolix_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Coolix_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Coolix_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Coolix_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Coolix_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Corona_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Corona_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Corona_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Corona_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Corona_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Corona_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Corona_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Corona_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Corona_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Corona_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Corona_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Corona_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Daikin_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Daikin_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Daikin_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Daikin_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Daikin_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Daikin_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Daikin_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Daikin_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Daikin_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Daikin_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Daikin_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Daikin_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Delonghi_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Delonghi_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Delonghi_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Delonghi_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Delonghi_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Delonghi_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Delonghi_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Delonghi_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Delonghi_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Delonghi_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Delonghi_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Delonghi_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Denon_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Denon_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Denon_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Denon_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Dish_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Dish_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Dish_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Dish_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Doshisha_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Doshisha_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Doshisha_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Doshisha_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Electra_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Electra_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Electra_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Electra_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Electra_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Electra_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Electra_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Electra_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Electra_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Electra_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Electra_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Electra_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__EliteScreens_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__EliteScreens_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__EliteScreens_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__EliteScreens_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Epson_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Epson_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Epson_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Epson_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Fujitsu_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Fujitsu_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Fujitsu_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Fujitsu_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Fujitsu_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Fujitsu_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Fujitsu_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Fujitsu_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Fujitsu_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Fujitsu_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Fujitsu_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Fujitsu_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__GICable_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__GICable_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__GICable_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__GICable_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__GlobalCache_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__GlobalCache_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__GlobalCache_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__GlobalCache_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Goodweather_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Goodweather_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Goodweather_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Goodweather_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Goodweather_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Goodweather_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Goodweather_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Goodweather_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Goodweather_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Goodweather_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Goodweather_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Goodweather_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Gree_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Gree_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Gree_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Gree_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Gree_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Gree_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Gree_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Gree_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Gree_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Gree_8h_source.html
similarity index 83%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Gree_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Gree_8h_source.html
index 05719cc38..2a68e331c 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Gree_8h_source.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Gree_8h_source.html
@@ -81,312 +81,314 @@ $(function() {
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Haier_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Haier_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Haier_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Haier_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Haier_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Haier_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Haier_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Haier_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Haier_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Haier_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Haier_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Haier_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Hitachi_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Hitachi_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Hitachi_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Hitachi_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Hitachi_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Hitachi_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Hitachi_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Hitachi_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Hitachi_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Hitachi_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Hitachi_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Hitachi_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Inax_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Inax_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Inax_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Inax_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__JVC_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__JVC_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__JVC_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__JVC_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Kelvinator_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Kelvinator_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Kelvinator_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Kelvinator_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Kelvinator_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Kelvinator_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Kelvinator_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Kelvinator_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Kelvinator_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Kelvinator_8h_source.html
similarity index 82%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Kelvinator_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Kelvinator_8h_source.html
index 86ce2067a..49f19b536 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Kelvinator_8h_source.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Kelvinator_8h_source.html
@@ -84,190 +84,191 @@ $(function() {
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__LG_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__LG_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__LG_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__LG_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__LG_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__LG_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__LG_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__LG_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__LG_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__LG_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__LG_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__LG_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Lasertag_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Lasertag_8cpp.html
similarity index 99%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Lasertag_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Lasertag_8cpp.html
index 568c1faa2..75211b610 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Lasertag_8cpp.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Lasertag_8cpp.html
@@ -87,7 +87,7 @@ Variables
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Lego_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Lego_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Lego_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Lego_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Lutron_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Lutron_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Lutron_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Lutron_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__MWM_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__MWM_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__MWM_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__MWM_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Magiquest_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Magiquest_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Magiquest_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Magiquest_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Magiquest_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Magiquest_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Magiquest_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Magiquest_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Magiquest_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Magiquest_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Magiquest_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Magiquest_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Metz_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Metz_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Metz_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Metz_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Midea_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Midea_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Midea_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Midea_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Midea_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Midea_8h.html
similarity index 99%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Midea_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Midea_8h.html
index d5c6c5109..9a8f24801 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Midea_8h.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Midea_8h.html
@@ -159,7 +159,9 @@ Variables
Detailed Description
Support for Midea protocols. Midea added by crankyoldgit & bwze.
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Mirage_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Mirage_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Mirage_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Mirage_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__MitsubishiHeavy_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__MitsubishiHeavy_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__MitsubishiHeavy_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__MitsubishiHeavy_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__MitsubishiHeavy_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__MitsubishiHeavy_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__MitsubishiHeavy_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__MitsubishiHeavy_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__MitsubishiHeavy_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__MitsubishiHeavy_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__MitsubishiHeavy_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__MitsubishiHeavy_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Mitsubishi_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Mitsubishi_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Mitsubishi_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Mitsubishi_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Mitsubishi_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Mitsubishi_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Mitsubishi_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Mitsubishi_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Mitsubishi_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Mitsubishi_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Mitsubishi_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Mitsubishi_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Multibrackets_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Multibrackets_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Multibrackets_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Multibrackets_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__NEC_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__NEC_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__NEC_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__NEC_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__NEC_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__NEC_8h.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__NEC_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__NEC_8h.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__NEC_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__NEC_8h_source.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__NEC_8h_source.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__NEC_8h_source.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Neoclima_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Neoclima_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Neoclima_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Neoclima_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Neoclima_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Neoclima_8h.html
similarity index 62%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Neoclima_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Neoclima_8h.html
index 0a463de87..85a11028c 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Neoclima_8h.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Neoclima_8h.html
@@ -80,40 +80,15 @@ $(function() {
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Pioneer_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Pioneer_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Pioneer_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Pioneer_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Pronto_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Pronto_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Pronto_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Pronto_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__RC5__RC6_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__RC5__RC6_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__RC5__RC6_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__RC5__RC6_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__RCMM_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__RCMM_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__RCMM_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__RCMM_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Samsung_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Samsung_8cpp.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Samsung_8cpp.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Samsung_8cpp.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Samsung_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Samsung_8h.html
similarity index 58%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Samsung_8h.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Samsung_8h.html
index 09282ae84..9d9f6386f 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/ir__Samsung_8h.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/ir__Samsung_8h.html
@@ -80,60 +80,31 @@ $(function() {
Need to ensure capture of the inverted message as it can be missed due to the interrupt timeout used to detect an end of message. Several compliance checks are disabled until that is resolved.
+
Need to ensure capture of the inverted message as it can be missed due to the interrupt timeout used to detect an end of message. Several compliance checks are disabled until that is resolved.
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionAirwellProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionAirwellProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionAirwellProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionAirwellProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionAirwellProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionAirwellProtocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionAirwellProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionAirwellProtocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionAmcorProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionAmcorProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionAmcorProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionAmcorProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionAmcorProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionAmcorProtocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionAmcorProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionAmcorProtocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionArgoProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionArgoProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionArgoProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionArgoProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionArgoProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionArgoProtocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionArgoProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionArgoProtocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCarrierProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCarrierProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCarrierProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCarrierProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCarrierProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCarrierProtocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCarrierProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCarrierProtocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCoolixProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCoolixProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCoolixProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCoolixProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCoolixProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCoolixProtocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCoolixProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCoolixProtocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCoronaProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCoronaProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCoronaProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCoronaProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCoronaProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCoronaProtocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCoronaProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCoronaProtocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCoronaProtocol__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCoronaProtocol__coll__graph.map
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCoronaProtocol__coll__graph.map
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCoronaProtocol__coll__graph.map
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCoronaProtocol__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCoronaProtocol__coll__graph.md5
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCoronaProtocol__coll__graph.md5
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCoronaProtocol__coll__graph.md5
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCoronaProtocol__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCoronaProtocol__coll__graph.png
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionCoronaProtocol__coll__graph.png
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionCoronaProtocol__coll__graph.png
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin128Protocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin128Protocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin128Protocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin128Protocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin128Protocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin128Protocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin128Protocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin128Protocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin152Protocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin152Protocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin152Protocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin152Protocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin152Protocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin152Protocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin152Protocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin152Protocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin160Protocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin160Protocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin160Protocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin160Protocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin160Protocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin160Protocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin160Protocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin160Protocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin176Protocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin176Protocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin176Protocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin176Protocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin176Protocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin176Protocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin176Protocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin176Protocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin216Protocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin216Protocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin216Protocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin216Protocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin216Protocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin216Protocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin216Protocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin216Protocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin2Protocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin2Protocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin2Protocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin2Protocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin2Protocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin2Protocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin2Protocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin2Protocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin64Protocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin64Protocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin64Protocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin64Protocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin64Protocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin64Protocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikin64Protocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikin64Protocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikinESPProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikinESPProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikinESPProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikinESPProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikinESPProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikinESPProtocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDaikinESPProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDaikinESPProtocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDelonghiProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDelonghiProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDelonghiProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDelonghiProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDelonghiProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDelonghiProtocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionDelonghiProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionDelonghiProtocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionElectraProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionElectraProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionElectraProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionElectraProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionElectraProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionElectraProtocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionElectraProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionElectraProtocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionGoodweatherProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionGoodweatherProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionGoodweatherProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionGoodweatherProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionGoodweatherProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionGoodweatherProtocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionGoodweatherProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionGoodweatherProtocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionGreeProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionGreeProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionGreeProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionGreeProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionGreeProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionGreeProtocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionGreeProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionGreeProtocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHaierProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHaierProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHaierProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHaierProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHaierProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHaierProtocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHaierProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHaierProtocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHaierYRW02Protocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHaierYRW02Protocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHaierYRW02Protocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHaierYRW02Protocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHaierYRW02Protocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHaierYRW02Protocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHaierYRW02Protocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHaierYRW02Protocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHitachi1Protocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHitachi1Protocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHitachi1Protocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHitachi1Protocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHitachi1Protocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHitachi1Protocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHitachi1Protocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHitachi1Protocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHitachi424Protocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHitachi424Protocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHitachi424Protocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHitachi424Protocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHitachi424Protocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHitachi424Protocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHitachi424Protocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHitachi424Protocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHitachiProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHitachiProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHitachiProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHitachiProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHitachiProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHitachiProtocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionHitachiProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionHitachiProtocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionKelvinatorProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionKelvinatorProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionKelvinatorProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionKelvinatorProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionKelvinatorProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionKelvinatorProtocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionKelvinatorProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionKelvinatorProtocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionLGProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionLGProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionLGProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionLGProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionLGProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionLGProtocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionLGProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionLGProtocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMideaProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMideaProtocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMideaProtocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMideaProtocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMideaProtocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMideaProtocol.html
similarity index 93%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMideaProtocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMideaProtocol.html
index 1af0bfa81..9a581e01d 100644
--- a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMideaProtocol.html
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMideaProtocol.html
@@ -106,6 +106,7 @@ Public Attributes
Compile-time model specific overrides. Uncomment one of these if you have such a devices to better match your A/C. It changes some of the special commands/settings.
+
+Some Pioneer Systems have required a special bit to be set in order for the A/C unit to accept the message. We don't currently understand what this bit does. See the link for details of how to set this if needed.
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi112Protocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi112Protocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi112Protocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi112Protocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi112Protocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi112Protocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi112Protocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi112Protocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi136Protocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi136Protocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi136Protocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi136Protocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi136Protocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi136Protocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi136Protocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi136Protocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi144Protocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi144Protocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi144Protocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi144Protocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi144Protocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi144Protocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi144Protocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi144Protocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi152Protocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi152Protocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi152Protocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi152Protocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi152Protocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi152Protocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi152Protocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi152Protocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi88Protocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi88Protocol-members.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi88Protocol-members.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi88Protocol-members.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi88Protocol.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi88Protocol.html
similarity index 100%
rename from lib/lib_basic/IRremoteESP8266-2.7.13/docs/doxygen/html/unionMitsubishi88Protocol.html
rename to lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionMitsubishi88Protocol.html
diff --git a/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionNeoclimaProtocol-members.html b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionNeoclimaProtocol-members.html
new file mode 100644
index 000000000..e50af24a4
--- /dev/null
+++ b/lib/lib_basic/IRremoteESP8266-2.7.14/docs/doxygen/html/unionNeoclimaProtocol-members.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+IRremoteESP8266: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
IRremoteESP8266
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
NeoclimaProtocol Member List
+
+
+
+
This is the complete list of members for NeoclimaProtocol, including all inherited members.