From b3dc33f3a0d2af634888a53a88b0036d5c2cb6a3 Mon Sep 17 00:00:00 2001 From: Janusz Date: Tue, 18 Aug 2020 22:09:33 +0200 Subject: [PATCH 001/119] SDM630 optional import active energy --- tasmota/i18n.h | 1 + tasmota/my_user_config.h | 1 + tasmota/xdrv_03_energy.ino | 31 ++++++++++++++++++++++++++++++- tasmota/xnrg_10_sdm630.ino | 22 +++++++++++++++++++--- 4 files changed, 51 insertions(+), 4 deletions(-) diff --git a/tasmota/i18n.h b/tasmota/i18n.h index a1623fe14..519679b38 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -192,6 +192,7 @@ #define D_JSON_PV2_POWER "Pv2Power" #define D_JSON_SOLAR_POWER "SolarPower" #define D_JSON_USAGE "Usage" +#define D_JSON_IMPORT "Import" #define D_JSON_EXPORT "Export" #define D_JSON_TOTAL_ACTIVE "TotalActive" diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index c1bdcdb79..e8dac6109 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -637,6 +637,7 @@ #define SDM120_SPEED 2400 // SDM120-Modbus RS485 serial speed (default: 2400 baud) //#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy monitor (+0k6 code) #define SDM630_SPEED 9600 // SDM630-Modbus RS485 serial speed (default: 9600 baud) +//#define SDM630_IMPORT // Show import active energy in MQTT and Web (+0k3 code) //#define USE_DDS2382 // Add support for Hiking DDS2382 Modbus energy monitor (+0k6 code) #define DDS2382_SPEED 9600 // Hiking DDS2382 Modbus RS485 serial speed (default: 9600 baud) //#define USE_DDSU666 // Add support for Chint DDSU666 Modbus energy monitor (+0k6 code) diff --git a/tasmota/xdrv_03_energy.ino b/tasmota/xdrv_03_energy.ino index 4d53af77c..9f61960a0 100644 --- a/tasmota/xdrv_03_energy.ino +++ b/tasmota/xdrv_03_energy.ino @@ -80,7 +80,9 @@ struct ENERGY { float power_factor[3] = { NAN, NAN, NAN }; // 0.12 float frequency[3] = { NAN, NAN, NAN }; // 123.1 Hz -// float import_active[3] = { NAN, NAN, NAN }; // 123.123 kWh + #ifdef SDM630_IMPORT + float import_active[3] = { NAN, NAN, NAN }; // 123.123 kWh +#endif float export_active[3] = { NAN, NAN, NAN }; // 123.123 kWh float start_energy = 0; // 12345.12345 kWh total previous @@ -879,6 +881,11 @@ const char HTTP_ENERGY_SNS2[] PROGMEM = const char HTTP_ENERGY_SNS3[] PROGMEM = "{s}" D_EXPORT_ACTIVE "{m}%s " D_UNIT_KILOWATTHOUR "{e}"; + +#ifdef SDM630_IMPORT +const char HTTP_ENERGY_SNS4[] PROGMEM = + "{s}" D_IMPORT_ACTIVE "{m}%s " D_UNIT_KILOWATTHOUR "{e}"; +#endif // SDM630_IMPORT #endif // USE_WEBSERVER char* EnergyFormatIndex(char* result, char* input, bool json, uint32_t index, bool single = false) @@ -966,11 +973,17 @@ void EnergyShow(bool json) char voltage_chr[Energy.phase_count][FLOATSZ]; char current_chr[Energy.phase_count][FLOATSZ]; char active_power_chr[Energy.phase_count][FLOATSZ]; +#ifdef SDM630_IMPORT + char import_active_chr[Energy.phase_count][FLOATSZ]; +#endif char export_active_chr[Energy.phase_count][FLOATSZ]; for (uint32_t i = 0; i < Energy.phase_count; i++) { dtostrfd(Energy.voltage[i], Settings.flag2.voltage_resolution, voltage_chr[i]); dtostrfd(Energy.current[i], Settings.flag2.current_resolution, current_chr[i]); dtostrfd(Energy.active_power[i], Settings.flag2.wattage_resolution, active_power_chr[i]); +#ifdef SDM630_IMPORT + dtostrfd(Energy.import_active[i], Settings.flag2.energy_resolution, import_active_chr[i]); +#endif dtostrfd(Energy.export_active[i], Settings.flag2.energy_resolution, export_active_chr[i]); } @@ -1013,6 +1026,17 @@ void EnergyShow(bool json) energy_yesterday_chr, energy_daily_chr); + #ifdef SDM630_IMPORT + if (!isnan(Energy.import_active[0])) { + ResponseAppend_P(PSTR(",\"" D_JSON_IMPORT_ACTIVE "\":%s"), + EnergyFormat(value_chr, import_active_chr[0], json)); + if (energy_tariff) { + ResponseAppend_P(PSTR(",\"" D_JSON_IMPORT D_CMND_TARIFF "\":%s"), + EnergyFormatIndex(value_chr, energy_return_chr[0], json, 2)); + } + } +#endif + if (!isnan(Energy.export_active[0])) { ResponseAppend_P(PSTR(",\"" D_JSON_EXPORT_ACTIVE "\":%s"), EnergyFormat(value_chr, export_active_chr[0], json)); @@ -1117,6 +1141,11 @@ void EnergyShow(bool json) if (!isnan(Energy.export_active[0])) { WSContentSend_PD(HTTP_ENERGY_SNS3, EnergyFormat(value_chr, export_active_chr[0], json)); } + #ifdef SDM630_IMPORT + if (!isnan(Energy.import_active[0])) { + WSContentSend_PD(HTTP_ENERGY_SNS4, EnergyFormat(value_chr, import_active_chr[0], json)); + } +#endif XnrgCall(FUNC_WEB_SENSOR); #endif // USE_WEBSERVER diff --git a/tasmota/xnrg_10_sdm630.ino b/tasmota/xnrg_10_sdm630.ino index d239c1c73..92b8e98e4 100644 --- a/tasmota/xnrg_10_sdm630.ino +++ b/tasmota/xnrg_10_sdm630.ino @@ -60,9 +60,11 @@ const uint16_t sdm630_start_addresses[] { 0x0160, // + + + kWh Phase 1 export active energy 0x0162, // + + + kWh Phase 2 export active energy 0x0164, // + + + kWh Phase 3 export active energy -// 0x015A, // + + + kWh Phase 1 import active energy -// 0x015C, // + + + kWh Phase 2 import active energy -// 0x015E, // + + + kWh Phase 3 import active energy + #ifdef SDM630_IMPORT + 0x015A, // + + + kWh Phase 1 import active energy + 0x015C, // + + + kWh Phase 2 import active energy + 0x015E, // + + + kWh Phase 3 import active energy +#endif 0x0156 // + + + kWh Total active energy }; @@ -177,6 +179,20 @@ void SDM630Every250ms(void) break; case 19: + #ifdef SDM630_IMPORT + Energy.import_active[0] = value; + break; + + case 20: + Energy.import_active[1] = value; + break; + + case 21: + Energy.import_active[2] = value; + break; + + case 22: +#endif EnergyUpdateTotal(value, true); break; } From cb0df141f487e0e0c7d0dface90530ab5931da88 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 1 Sep 2020 17:24:36 +0200 Subject: [PATCH 002/119] Squashed commit of the following: commit 0917b430c3b76e26fad584ddacb1fc389e1b4c36 Author: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue Sep 1 17:13:53 2020 +0200 Domoticz commit e878ae5ac4e2b72443598d699f76f1efbe90b5c2 Merge: 77957d70 46789ef4 Author: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue Sep 1 13:24:37 2020 +0200 Merge pull request #118 from device111/vl53l1x VL53L1X correction commit 46789ef40b6b8a3fbf730ed69712e0790b876075 Author: device111 <48546979+device111@users.noreply.github.com> Date: Sun Aug 30 11:41:32 2020 +0200 Update support_features.ino commit 8f8720d37e5d81d6c483620a83936b2f5ffd9f43 Author: device111 <48546979+device111@users.noreply.github.com> Date: Sun Aug 30 11:36:24 2020 +0200 VL53L1X correction sorry, but i have killed all of my repos..:-( commit 77957d70435e99bb42b64b39acb7b7a176ecac79 Author: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri Aug 28 13:54:25 2020 +0200 use registry commit d85954db359fb789c685fbf1ceb6d80fadc5132c Author: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Thu Aug 27 14:43:20 2020 +0200 No DOMOTICZ commit e6d763f10b0d34420f908382442af21581358a84 Merge: 788e4681 6c5fdb4d Author: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Thu Aug 27 14:42:29 2020 +0200 Merge remote-tracking branch 'Tasmota/development' into vl53l1x commit 788e468145520f3832255d92bf50d0ee70c18e0c Merge: 51491df1 33f3f9ef Author: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Wed Aug 26 14:50:28 2020 +0200 Merge remote-tracking branch 'Tasmota/development' into vl53l1x commit 51491df1419fa50d1327565b61a40ca5f81a99d6 Author: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Wed Aug 26 14:49:56 2020 +0200 Real 0x52 is 0x29 in Arduino 7 bit commit 00dad36b086b03a93dd02ffa28e5d097ba479f10 Author: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Mon Aug 24 11:41:11 2020 +0200 1.01 commit 50e88038c3de477f6b657b3d3caa5e53992ca838 Author: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun Aug 23 20:04:47 2020 +0200 correct support_feature commit e5baabc41c1c016066a0ba9d3a8d8006cadd32ec Author: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun Aug 23 19:53:15 2020 +0200 VL53L1X --- I2CDEVICES.md | 3 +- lib/vl53l1x-arduino-1.01/LICENSE.txt | 42 + lib/vl53l1x-arduino-1.01/README.md | 167 ++ lib/vl53l1x-arduino-1.01/VL53L1X.cpp | 788 ++++++++++ lib/vl53l1x-arduino-1.01/VL53L1X.h | 1384 +++++++++++++++++ .../examples/Continuous/Continuous.ino | 44 + .../ContinuousWithDetails.ino | 55 + lib/vl53l1x-arduino-1.01/keywords.txt | 41 + lib/vl53l1x-arduino-1.01/library.properties | 9 + tasmota/my_user_config.h | 1 + tasmota/support_features.ino | 4 +- tasmota/tasmota_configurations.h | 1 + tasmota/xsns_77_vl53l1x.ino | 128 ++ 13 files changed, 2665 insertions(+), 2 deletions(-) create mode 100644 lib/vl53l1x-arduino-1.01/LICENSE.txt create mode 100644 lib/vl53l1x-arduino-1.01/README.md create mode 100644 lib/vl53l1x-arduino-1.01/VL53L1X.cpp create mode 100644 lib/vl53l1x-arduino-1.01/VL53L1X.h create mode 100644 lib/vl53l1x-arduino-1.01/examples/Continuous/Continuous.ino create mode 100644 lib/vl53l1x-arduino-1.01/examples/ContinuousWithDetails/ContinuousWithDetails.ino create mode 100644 lib/vl53l1x-arduino-1.01/keywords.txt create mode 100644 lib/vl53l1x-arduino-1.01/library.properties create mode 100644 tasmota/xsns_77_vl53l1x.ino diff --git a/I2CDEVICES.md b/I2CDEVICES.md index 457116347..60e43db44 100644 --- a/I2CDEVICES.md +++ b/I2CDEVICES.md @@ -74,4 +74,5 @@ Index | Define | Driver | Device | Address(es) | Description 49 | USE_VEML6075 | xsns_70 | VEML6075 | 0x10 | UVA/UVB/UVINDEX Sensor 50 | USE_VEML7700 | xsns_71 | VEML7700 | 0x10 | Ambient light intensity sensor 51 | USE_MCP9808 | xsns_72 | MCP9808 | 0x18 - 0x1F | Temperature sensor - 52 | USE_HP303B | xsns_73 | HP303B | 0x76 - 0x77 | Pressure and temperature sensor \ No newline at end of file + 52 | USE_HP303B | xsns_73 | HP303B | 0x76 - 0x77 | Pressure and temperature sensor + 53 | USE_VL53L1X | xsns_77 | VL53L1X | 0x29 | Time-of-flight (ToF) distance sensor \ No newline at end of file diff --git a/lib/vl53l1x-arduino-1.01/LICENSE.txt b/lib/vl53l1x-arduino-1.01/LICENSE.txt new file mode 100644 index 000000000..8a2abe9ed --- /dev/null +++ b/lib/vl53l1x-arduino-1.01/LICENSE.txt @@ -0,0 +1,42 @@ +Most of the functionality of this library is based on the VL53L1X API provided +provided by ST (STSW-IMG007), and some of the explanatory comments are quoted +or paraphrased from the API source code, API user manual (UM2356), and VL53L1X +datasheet. Therefore, the license terms for the API source code (BSD 3-clause +"New" or "Revised" License) also apply to this derivative work, as specified +below. + +For more information, see + +https://www.pololu.com/ +https://forum.pololu.com/ + +-------------------------------------------------------------------------------- + +Copyright (c) 2017, STMicroelectronics +Copyright (c) 2018, Pololu Corporation +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 holder 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 AND CONTRIBUTORS "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 OR CONTRIBUTORS 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. diff --git a/lib/vl53l1x-arduino-1.01/README.md b/lib/vl53l1x-arduino-1.01/README.md new file mode 100644 index 000000000..41ec21d9f --- /dev/null +++ b/lib/vl53l1x-arduino-1.01/README.md @@ -0,0 +1,167 @@ +# VL53L1X library for Arduino + +Version: 1.0.1
+Release date: 2018-09-19
+[![Build Status](https://travis-ci.org/pololu/vl53l1x-arduino.svg?branch=master)](https://travis-ci.org/pololu/vl53l1x-arduino)
+[www.pololu.com](https://www.pololu.com/) + +## Summary + +This is a library for the Arduino IDE that helps interface with ST's [VL53L1X time-of-flight distance sensor](https://www.pololu.com/product/3415). The library makes it simple to configure the sensor and read range data from it via I²C. + +## Supported platforms + +This library is designed to work with the Arduino IDE versions 1.6.x or later; we have not tested it with earlier versions. This library should support any Arduino-compatible board, including the [Pololu A-Star controllers](https://www.pololu.com/category/149/a-star-programmable-controllers). + +## Getting started + +### Hardware + +A [VL53L1X carrier](https://www.pololu.com/product/3415) can be purchased from Pololu's website. Before continuing, careful reading of the [product page](https://www.pololu.com/product/3415) as well as the VL53L1X datasheet is recommended. + +Make the following connections between the Arduino and the VL53L1X board: + +#### 5V Arduino boards + +(including Arduino Uno, Leonardo, Mega; Pololu A-Star 32U4) + + Arduino VL53L1X board + ------- ------------- + 5V - VIN + GND - GND + SDA - SDA + SCL - SCL + +#### 3.3V Arduino boards + +(including Arduino Due) + + Arduino VL53L1X board + ------- ------------- + 3V3 - VIN + GND - GND + SDA - SDA + SCL - SCL + +### Software + +If you are using version 1.6.2 or later of the [Arduino software (IDE)](http://www.arduino.cc/en/Main/Software), you can use the Library Manager to install this library: + +1. In the Arduino IDE, open the "Sketch" menu, select "Include Library", then "Manage Libraries...". +2. Search for "VL53L1X". +3. Click the VL53L1X entry in the list. +4. Click "Install". + +If this does not work, you can manually install the library: + +1. Download the [latest release archive from GitHub](https://github.com/pololu/vl53l1x-arduino/releases) and decompress it. +2. Rename the folder "vl53l1x-arduino-master" to "VL53L1X". +3. Move the "VL53L1X" folder into the "libraries" directory inside your Arduino sketchbook directory. You can view your sketchbook location by opening the "File" menu and selecting "Preferences" in the Arduino IDE. If there is not already a "libraries" folder in that location, you should make the folder yourself. +4. After installing the library, restart the Arduino IDE. + +## Examples + +Several example sketches are available that show how to use the library. You can access them from the Arduino IDE by opening the "File" menu, selecting "Examples", and then selecting "VL53L1X". If you cannot find these examples, the library was probably installed incorrectly and you should retry the installation instructions above. + +## ST's VL53L1X API and this library + +Most of the functionality of this library is based on the [VL53L1X API](http://www.st.com/content/st_com/en/products/embedded-software/proximity-sensors-software/stsw-img007.html) provided by ST (STSW-IMG007), and some of the explanatory comments in the code are quoted or paraphrased from the API source code, API user manual (UM2356), and the VL53L1X datasheet. For more explanation about the library code and how it was derived from the API, see the comments in VL53L1X.cpp. + +This library is intended to provide a quicker and easier way to get started using the VL53L1X with an Arduino-compatible controller, in contrast to using ST's API on the Arduino. The library has a more streamlined interface, as well as smaller storage and memory footprints. However, it does not currently implement some of the more advanced functionality available in the API (for example, calibrating the sensor to work well under a cover glass or selecting a smaller region of interest (ROI)), and it has less robust error checking. For advanced applications, especially when storage and memory are less of an issue, consider using the VL53L1X API directly. We have an [implementation of ST's VL53L1X API for Arduino](https://github.com/pololu/vl53l1x-st-api-arduino) available. + +## Library reference + +* `RangingData ranging_data`
+ This struct contains information about the last ranging measurement. Its members are: + * `uint16_t range_mm`
+ Range reading from the last measurement, in millimeters. (This reading can also be obtained as the return value of `read()`.) + * `RangeStatus range_status`
+ Status of the last measurement; see the definition of the `RangeStatus` enumeration type in VL53L1X.h (or the API user manual and source code) for descriptions of the possible statuses. A status of `VL53L1X::RangeValid` means there were no problems with the measurement. + * `float peak_signal_count_rate_MCPS`
+ Peak signal count rate of the last measurement, in units of mega counts per second. + * `float ambient_count_rate_MCPS`
+ Ambient count rate of the last measurement, in units of mega counts per second. + +* `uint8_t last_status`
+ The status of the last I²C write transmission. See the [`Wire.endTransmission()` documentation](http://arduino.cc/en/Reference/WireEndTransmission) for return values. + +* `VL53L1X()`
+ Constructor. + +* `void setAddress(uint8_t new_addr)`
+ Changes the I²C slave device address of the VL53L1X to the given value (7-bit). + +* `uint8_t getAddress()`
+ Returns the current I²C address. + +* `bool init(bool io_2v8 = true)`
+ Iniitializes and configures the sensor. If the optional argument `io_2v8` is true (the default if not specified), the sensor is configured for 2V8 mode (2.8 V I/O); if false, the sensor is left in 1V8 mode. The return value is a boolean indicating whether the initialization completed successfully. + +* `void writeReg(uint16_t reg, uint8_t value)`
+ Writes an 8-bit sensor register with the given value. + + Register address constants are defined by the `regAddr` enumeration type in VL53L1X.h.
+ Example use: `sensor.writeReg(VL53L1X::SOFT_RESET, 0x00);` + +* `void writeReg16Bit(uint16_t reg, uint16_t value)`
+ Writes a 16-bit sensor register with the given value. + +* `void writeReg32Bit(uint16_t reg, uint32_t value)`
+ Writes a 32-bit sensor register with the given value. + +* `uint8_t readReg(uint16_t reg)`
+ Reads an 8-bit sensor register and returns the value read. + +* `uint16_t readReg16Bit(uint16_t reg)`
+ Reads a 16-bit sensor register and returns the value read. + +* `uint32_t readReg32Bit(uint16_t reg)`
+ Reads a 32-bit sensor register and returns the value read. + +* `bool setDistanceMode(DistanceMode mode)`
+ Sets the distance mode of the sensor (`VL53L1X::Short`, `VL53L1X::Medium`, or `VL53L1X::Long`). Shorter distance modes are less affected by ambient light but have lower maximum ranges. See the datasheet for more information. The return value is a boolean indicating whether the requested mode was valid. + +* `DistanceMode getDistanceMode()`
+ Returns the previously set distance mode. + +* `bool setMeasurementTimingBudget(uint32_t budget_us)`
+ Sets the measurement timing budget to the given value in microseconds. This is the time allowed for one range measurement; a longer timing budget allows for more accurate measurements. The minimum budget is 20 ms (20000 us) in short distance mode and 33 ms for medium and long distance modes. See the VL53L1X datasheet for more information on range and timing limits. The return value is a boolean indicating whether the requested budget was valid. + +* `uint32_t getMeasurementTimingBudget()`
+ Returns the current measurement timing budget in microseconds. + +* `void startContinuous(uint32_t period_ms)`
+ Starts continuous ranging measurements. The specified inter-measurement period in milliseconds determines how often the sensor takes a measurement; if it is shorter than the timing budget, the sensor will start a new measurement as soon as the previous one finishes. + +* `void stopContinuous()`
+ Stops continuous mode. + +* `uint16_t read(bool blocking = true)`
+ After continuous ranging measurements have been started, calling this function returns a range reading in millimeters and updates the `ranging_data` struct with details about the last measurement. If the optional argument `blocking` is true (the default if not specified), this function will wait until data from a new measurement is available before returning. + + If you do not want this function to block, you can use the `dataReady()` function to check if new data is available before calling `read(false)`. Calling `read(false)` before new data is available will return a reading of 0, and `ranging_data.range_status` will have the value `VL53L1X::None`, indicating that there has been no update. + +* `uint16_t readRangeContinuousMillimeters(bool blocking = true)`
+ Alias of `read()` for convenience. + +* `bool dataReady()`
+ Returns a boolean indicating whether data from a new measurement is available from the sensor. + +* `static const char * rangeStatusToString(RangeStatus status)`
+ Converts a `RangeStatus` into a readable string describing that status. + + Note that on an AVR, the strings in this function are stored in RAM (dynamic memory), which makes working with them easier but uses up 200+ bytes of RAM (many AVR-based Arduinos only have about 2000 bytes of RAM). You can avoid this memory usage if you do not call this function in your sketch. + +* `void setTimeout(uint16_t timeout)`
+ Sets a timeout period in milliseconds after which read operations will abort if the sensor is not ready. A value of 0 disables the timeout. + +* `uint16_t getTimeout()`
+ Returns the current timeout period setting. + +* `bool timeoutOccurred()`
+ Indicates whether a read timeout has occurred since the last call to `timeoutOccurred()`. + +## Version history + +* 1.0.1 (2018-09-19): Fix Arduino 101 hanging in init(). +* 1.0.0 (2018-05-31): Original release. diff --git a/lib/vl53l1x-arduino-1.01/VL53L1X.cpp b/lib/vl53l1x-arduino-1.01/VL53L1X.cpp new file mode 100644 index 000000000..78d93e2d2 --- /dev/null +++ b/lib/vl53l1x-arduino-1.01/VL53L1X.cpp @@ -0,0 +1,788 @@ +// Most of the functionality of this library is based on the VL53L1X API +// provided by ST (STSW-IMG007), and some of the explanatory comments are quoted +// or paraphrased from the API source code, API user manual (UM2356), and +// VL53L1X datasheet. + +#include +#include + +// Constructors //////////////////////////////////////////////////////////////// + +VL53L1X::VL53L1X() + : address(AddressDefault) + , io_timeout(0) // no timeout + , did_timeout(false) + , calibrated(false) + , saved_vhv_init(0) + , saved_vhv_timeout(0) + , distance_mode(Unknown) +{ +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void VL53L1X::setAddress(uint8_t new_addr) +{ + writeReg(I2C_SLAVE__DEVICE_ADDRESS, new_addr & 0x7F); + address = new_addr; +} + +// Initialize sensor using settings taken mostly from VL53L1_DataInit() and +// VL53L1_StaticInit(). +// If io_2v8 (optional) is true or not given, the sensor is configured for 2V8 +// mode. +bool VL53L1X::init(bool io_2v8) +{ + // check model ID and module type registers (values specified in datasheet) + if (readReg16Bit(IDENTIFICATION__MODEL_ID) != 0xEACC) { return false; } + + // VL53L1_software_reset() begin + + writeReg(SOFT_RESET, 0x00); + delayMicroseconds(100); + writeReg(SOFT_RESET, 0x01); + + // give it some time to boot; otherwise the sensor NACKs during the readReg() + // call below and the Arduino 101 doesn't seem to handle that well + delay(1); + + // VL53L1_poll_for_boot_completion() begin + + startTimeout(); + + // check last_status in case we still get a NACK to try to deal with it correctly + while ((readReg(FIRMWARE__SYSTEM_STATUS) & 0x01) == 0 || last_status != 0) + { + if (checkTimeoutExpired()) + { + did_timeout = true; + return false; + } + } + // VL53L1_poll_for_boot_completion() end + + // VL53L1_software_reset() end + + // VL53L1_DataInit() begin + + // sensor uses 1V8 mode for I/O by default; switch to 2V8 mode if necessary + if (io_2v8) + { + writeReg(PAD_I2C_HV__EXTSUP_CONFIG, + readReg(PAD_I2C_HV__EXTSUP_CONFIG) | 0x01); + } + + // store oscillator info for later use + fast_osc_frequency = readReg16Bit(OSC_MEASURED__FAST_OSC__FREQUENCY); + osc_calibrate_val = readReg16Bit(RESULT__OSC_CALIBRATE_VAL); + + // VL53L1_DataInit() end + + // VL53L1_StaticInit() begin + + // Note that the API does not actually apply the configuration settings below + // when VL53L1_StaticInit() is called: it keeps a copy of the sensor's + // register contents in memory and doesn't actually write them until a + // measurement is started. Writing the configuration here means we don't have + // to keep it all in memory and avoids a lot of redundant writes later. + + // the API sets the preset mode to LOWPOWER_AUTONOMOUS here: + // VL53L1_set_preset_mode() begin + + // VL53L1_preset_mode_standard_ranging() begin + + // values labeled "tuning parm default" are from vl53l1_tuning_parm_defaults.h + // (API uses these in VL53L1_init_tuning_parm_storage_struct()) + + // static config + // API resets PAD_I2C_HV__EXTSUP_CONFIG here, but maybe we don't want to do + // that? (seems like it would disable 2V8 mode) + writeReg16Bit(DSS_CONFIG__TARGET_TOTAL_RATE_MCPS, TargetRate); // should already be this value after reset + writeReg(GPIO__TIO_HV_STATUS, 0x02); + writeReg(SIGMA_ESTIMATOR__EFFECTIVE_PULSE_WIDTH_NS, 8); // tuning parm default + writeReg(SIGMA_ESTIMATOR__EFFECTIVE_AMBIENT_WIDTH_NS, 16); // tuning parm default + writeReg(ALGO__CROSSTALK_COMPENSATION_VALID_HEIGHT_MM, 0x01); + writeReg(ALGO__RANGE_IGNORE_VALID_HEIGHT_MM, 0xFF); + writeReg(ALGO__RANGE_MIN_CLIP, 0); // tuning parm default + writeReg(ALGO__CONSISTENCY_CHECK__TOLERANCE, 2); // tuning parm default + + // general config + writeReg16Bit(SYSTEM__THRESH_RATE_HIGH, 0x0000); + writeReg16Bit(SYSTEM__THRESH_RATE_LOW, 0x0000); + writeReg(DSS_CONFIG__APERTURE_ATTENUATION, 0x38); + + // timing config + // most of these settings will be determined later by distance and timing + // budget configuration + writeReg16Bit(RANGE_CONFIG__SIGMA_THRESH, 360); // tuning parm default + writeReg16Bit(RANGE_CONFIG__MIN_COUNT_RATE_RTN_LIMIT_MCPS, 192); // tuning parm default + + // dynamic config + + writeReg(SYSTEM__GROUPED_PARAMETER_HOLD_0, 0x01); + writeReg(SYSTEM__GROUPED_PARAMETER_HOLD_1, 0x01); + writeReg(SD_CONFIG__QUANTIFIER, 2); // tuning parm default + + // VL53L1_preset_mode_standard_ranging() end + + // from VL53L1_preset_mode_timed_ranging_* + // GPH is 0 after reset, but writing GPH0 and GPH1 above seem to set GPH to 1, + // and things don't seem to work if we don't set GPH back to 0 (which the API + // does here). + writeReg(SYSTEM__GROUPED_PARAMETER_HOLD, 0x00); + writeReg(SYSTEM__SEED_CONFIG, 1); // tuning parm default + + // from VL53L1_config_low_power_auto_mode + writeReg(SYSTEM__SEQUENCE_CONFIG, 0x8B); // VHV, PHASECAL, DSS1, RANGE + writeReg16Bit(DSS_CONFIG__MANUAL_EFFECTIVE_SPADS_SELECT, 200 << 8); + writeReg(DSS_CONFIG__ROI_MODE_CONTROL, 2); // REQUESTED_EFFFECTIVE_SPADS + + // VL53L1_set_preset_mode() end + + // default to long range, 50 ms timing budget + // note that this is different than what the API defaults to + setDistanceMode(Long); + setMeasurementTimingBudget(50000); + + // VL53L1_StaticInit() end + + // the API triggers this change in VL53L1_init_and_start_range() once a + // measurement is started; assumes MM1 and MM2 are disabled + writeReg16Bit(ALGO__PART_TO_PART_RANGE_OFFSET_MM, + readReg16Bit(MM_CONFIG__OUTER_OFFSET_MM) * 4); + + return true; +} + +// Write an 8-bit register +void VL53L1X::writeReg(uint16_t reg, uint8_t value) +{ + Wire.beginTransmission(address); + Wire.write((reg >> 8) & 0xFF); // reg high byte + Wire.write( reg & 0xFF); // reg low byte + Wire.write(value); + last_status = Wire.endTransmission(); +} + +// Write a 16-bit register +void VL53L1X::writeReg16Bit(uint16_t reg, uint16_t value) +{ + Wire.beginTransmission(address); + Wire.write((reg >> 8) & 0xFF); // reg high byte + Wire.write( reg & 0xFF); // reg low byte + Wire.write((value >> 8) & 0xFF); // value high byte + Wire.write( value & 0xFF); // value low byte + last_status = Wire.endTransmission(); +} + +// Write a 32-bit register +void VL53L1X::writeReg32Bit(uint16_t reg, uint32_t value) +{ + Wire.beginTransmission(address); + Wire.write((reg >> 8) & 0xFF); // reg high byte + Wire.write( reg & 0xFF); // reg low byte + Wire.write((value >> 24) & 0xFF); // value highest byte + Wire.write((value >> 16) & 0xFF); + Wire.write((value >> 8) & 0xFF); + Wire.write( value & 0xFF); // value lowest byte + last_status = Wire.endTransmission(); +} + +// Read an 8-bit register +uint8_t VL53L1X::readReg(regAddr reg) +{ + uint8_t value; + + Wire.beginTransmission(address); + Wire.write((reg >> 8) & 0xFF); // reg high byte + Wire.write( reg & 0xFF); // reg low byte + last_status = Wire.endTransmission(); + + Wire.requestFrom(address, (uint8_t)1); + value = Wire.read(); + + return value; +} + +// Read a 16-bit register +uint16_t VL53L1X::readReg16Bit(uint16_t reg) +{ + uint16_t value; + + Wire.beginTransmission(address); + Wire.write((reg >> 8) & 0xFF); // reg high byte + Wire.write( reg & 0xFF); // reg low byte + last_status = Wire.endTransmission(); + + Wire.requestFrom(address, (uint8_t)2); + value = (uint16_t)Wire.read() << 8; // value high byte + value |= Wire.read(); // value low byte + + return value; +} + +// Read a 32-bit register +uint32_t VL53L1X::readReg32Bit(uint16_t reg) +{ + uint32_t value; + + Wire.beginTransmission(address); + Wire.write((reg >> 8) & 0xFF); // reg high byte + Wire.write( reg & 0xFF); // reg low byte + last_status = Wire.endTransmission(); + + Wire.requestFrom(address, (uint8_t)4); + value = (uint32_t)Wire.read() << 24; // value highest byte + value |= (uint32_t)Wire.read() << 16; + value |= (uint16_t)Wire.read() << 8; + value |= Wire.read(); // value lowest byte + + return value; +} + +// set distance mode to Short, Medium, or Long +// based on VL53L1_SetDistanceMode() +bool VL53L1X::setDistanceMode(DistanceMode mode) +{ + // save existing timing budget + uint32_t budget_us = getMeasurementTimingBudget(); + + switch (mode) + { + case Short: + // from VL53L1_preset_mode_standard_ranging_short_range() + + // timing config + writeReg(RANGE_CONFIG__VCSEL_PERIOD_A, 0x07); + writeReg(RANGE_CONFIG__VCSEL_PERIOD_B, 0x05); + writeReg(RANGE_CONFIG__VALID_PHASE_HIGH, 0x38); + + // dynamic config + writeReg(SD_CONFIG__WOI_SD0, 0x07); + writeReg(SD_CONFIG__WOI_SD1, 0x05); + writeReg(SD_CONFIG__INITIAL_PHASE_SD0, 6); // tuning parm default + writeReg(SD_CONFIG__INITIAL_PHASE_SD1, 6); // tuning parm default + + break; + + case Medium: + // from VL53L1_preset_mode_standard_ranging() + + // timing config + writeReg(RANGE_CONFIG__VCSEL_PERIOD_A, 0x0B); + writeReg(RANGE_CONFIG__VCSEL_PERIOD_B, 0x09); + writeReg(RANGE_CONFIG__VALID_PHASE_HIGH, 0x78); + + // dynamic config + writeReg(SD_CONFIG__WOI_SD0, 0x0B); + writeReg(SD_CONFIG__WOI_SD1, 0x09); + writeReg(SD_CONFIG__INITIAL_PHASE_SD0, 10); // tuning parm default + writeReg(SD_CONFIG__INITIAL_PHASE_SD1, 10); // tuning parm default + + break; + + case Long: // long + // from VL53L1_preset_mode_standard_ranging_long_range() + + // timing config + writeReg(RANGE_CONFIG__VCSEL_PERIOD_A, 0x0F); + writeReg(RANGE_CONFIG__VCSEL_PERIOD_B, 0x0D); + writeReg(RANGE_CONFIG__VALID_PHASE_HIGH, 0xB8); + + // dynamic config + writeReg(SD_CONFIG__WOI_SD0, 0x0F); + writeReg(SD_CONFIG__WOI_SD1, 0x0D); + writeReg(SD_CONFIG__INITIAL_PHASE_SD0, 14); // tuning parm default + writeReg(SD_CONFIG__INITIAL_PHASE_SD1, 14); // tuning parm default + + break; + + default: + // unrecognized mode - do nothing + return false; + } + + // reapply timing budget + setMeasurementTimingBudget(budget_us); + + // save mode so it can be returned by getDistanceMode() + distance_mode = mode; + + return true; +} + +// Set the measurement timing budget in microseconds, which is the time allowed +// for one measurement. A longer timing budget allows for more accurate +// measurements. +// based on VL53L1_SetMeasurementTimingBudgetMicroSeconds() +bool VL53L1X::setMeasurementTimingBudget(uint32_t budget_us) +{ + // assumes PresetMode is LOWPOWER_AUTONOMOUS + + if (budget_us <= TimingGuard) { return false; } + + uint32_t range_config_timeout_us = budget_us -= TimingGuard; + if (range_config_timeout_us > 1100000) { return false; } // FDA_MAX_TIMING_BUDGET_US * 2 + + range_config_timeout_us /= 2; + + // VL53L1_calc_timeout_register_values() begin + + uint32_t macro_period_us; + + // "Update Macro Period for Range A VCSEL Period" + macro_period_us = calcMacroPeriod(readReg(RANGE_CONFIG__VCSEL_PERIOD_A)); + + // "Update Phase timeout - uses Timing A" + // Timeout of 1000 is tuning parm default (TIMED_PHASECAL_CONFIG_TIMEOUT_US_DEFAULT) + // via VL53L1_get_preset_mode_timing_cfg(). + uint32_t phasecal_timeout_mclks = timeoutMicrosecondsToMclks(1000, macro_period_us); + if (phasecal_timeout_mclks > 0xFF) { phasecal_timeout_mclks = 0xFF; } + writeReg(PHASECAL_CONFIG__TIMEOUT_MACROP, phasecal_timeout_mclks); + + // "Update MM Timing A timeout" + // Timeout of 1 is tuning parm default (LOWPOWERAUTO_MM_CONFIG_TIMEOUT_US_DEFAULT) + // via VL53L1_get_preset_mode_timing_cfg(). With the API, the register + // actually ends up with a slightly different value because it gets assigned, + // retrieved, recalculated with a different macro period, and reassigned, + // but it probably doesn't matter because it seems like the MM ("mode + // mitigation"?) sequence steps are disabled in low power auto mode anyway. + writeReg16Bit(MM_CONFIG__TIMEOUT_MACROP_A, encodeTimeout( + timeoutMicrosecondsToMclks(1, macro_period_us))); + + // "Update Range Timing A timeout" + writeReg16Bit(RANGE_CONFIG__TIMEOUT_MACROP_A, encodeTimeout( + timeoutMicrosecondsToMclks(range_config_timeout_us, macro_period_us))); + + // "Update Macro Period for Range B VCSEL Period" + macro_period_us = calcMacroPeriod(readReg(RANGE_CONFIG__VCSEL_PERIOD_B)); + + // "Update MM Timing B timeout" + // (See earlier comment about MM Timing A timeout.) + writeReg16Bit(MM_CONFIG__TIMEOUT_MACROP_B, encodeTimeout( + timeoutMicrosecondsToMclks(1, macro_period_us))); + + // "Update Range Timing B timeout" + writeReg16Bit(RANGE_CONFIG__TIMEOUT_MACROP_B, encodeTimeout( + timeoutMicrosecondsToMclks(range_config_timeout_us, macro_period_us))); + + // VL53L1_calc_timeout_register_values() end + + return true; +} + +// Get the measurement timing budget in microseconds +// based on VL53L1_SetMeasurementTimingBudgetMicroSeconds() +uint32_t VL53L1X::getMeasurementTimingBudget() +{ + // assumes PresetMode is LOWPOWER_AUTONOMOUS and these sequence steps are + // enabled: VHV, PHASECAL, DSS1, RANGE + + // VL53L1_get_timeouts_us() begin + + // "Update Macro Period for Range A VCSEL Period" + uint32_t macro_period_us = calcMacroPeriod(readReg(RANGE_CONFIG__VCSEL_PERIOD_A)); + + // "Get Range Timing A timeout" + + uint32_t range_config_timeout_us = timeoutMclksToMicroseconds(decodeTimeout( + readReg16Bit(RANGE_CONFIG__TIMEOUT_MACROP_A)), macro_period_us); + + // VL53L1_get_timeouts_us() end + + return 2 * range_config_timeout_us + TimingGuard; +} + +// Start continuous ranging measurements, with the given inter-measurement +// period in milliseconds determining how often the sensor takes a measurement. +void VL53L1X::startContinuous(uint32_t period_ms) +{ + // from VL53L1_set_inter_measurement_period_ms() + writeReg32Bit(SYSTEM__INTERMEASUREMENT_PERIOD, period_ms * osc_calibrate_val); + + writeReg(SYSTEM__INTERRUPT_CLEAR, 0x01); // sys_interrupt_clear_range + writeReg(SYSTEM__MODE_START, 0x40); // mode_range__timed +} + +// Stop continuous measurements +// based on VL53L1_stop_range() +void VL53L1X::stopContinuous() +{ + writeReg(SYSTEM__MODE_START, 0x80); // mode_range__abort + + // VL53L1_low_power_auto_data_stop_range() begin + + calibrated = false; + + // "restore vhv configs" + if (saved_vhv_init != 0) + { + writeReg(VHV_CONFIG__INIT, saved_vhv_init); + } + if (saved_vhv_timeout != 0) + { + writeReg(VHV_CONFIG__TIMEOUT_MACROP_LOOP_BOUND, saved_vhv_timeout); + } + + // "remove phasecal override" + writeReg(PHASECAL_CONFIG__OVERRIDE, 0x00); + + // VL53L1_low_power_auto_data_stop_range() end +} + +// Returns a range reading in millimeters when continuous mode is active +// (readRangeSingleMillimeters() also calls this function after starting a +// single-shot range measurement) +uint16_t VL53L1X::read(bool blocking) +{ + if (blocking) + { + startTimeout(); + while (!dataReady()) + { + if (checkTimeoutExpired()) + { + did_timeout = true; + ranging_data.range_status = None; + ranging_data.range_mm = 0; + ranging_data.peak_signal_count_rate_MCPS = 0; + ranging_data.ambient_count_rate_MCPS = 0; + return ranging_data.range_mm; + } + } + } + + readResults(); + + if (!calibrated) + { + setupManualCalibration(); + calibrated = true; + } + + updateDSS(); + + getRangingData(); + + writeReg(SYSTEM__INTERRUPT_CLEAR, 0x01); // sys_interrupt_clear_range + + return ranging_data.range_mm; +} + +// convert a RangeStatus to a readable string +// Note that on an AVR, these strings are stored in RAM (dynamic memory), which +// makes working with them easier but uses up 200+ bytes of RAM (many AVR-based +// Arduinos only have about 2000 bytes of RAM). You can avoid this memory usage +// if you do not call this function in your sketch. +const char * VL53L1X::rangeStatusToString(RangeStatus status) +{ + switch (status) + { + case RangeValid: + return "range valid"; + + case SigmaFail: + return "sigma fail"; + + case SignalFail: + return "signal fail"; + + case RangeValidMinRangeClipped: + return "range valid, min range clipped"; + + case OutOfBoundsFail: + return "out of bounds fail"; + + case HardwareFail: + return "hardware fail"; + + case RangeValidNoWrapCheckFail: + return "range valid, no wrap check fail"; + + case WrapTargetFail: + return "wrap target fail"; + + case XtalkSignalFail: + return "xtalk signal fail"; + + case SynchronizationInt: + return "synchronization int"; + + case MinRangeFail: + return "min range fail"; + + case None: + return "no update"; + + default: + return "unknown status"; + } +} + +// Did a timeout occur in one of the read functions since the last call to +// timeoutOccurred()? +bool VL53L1X::timeoutOccurred() +{ + bool tmp = did_timeout; + did_timeout = false; + return tmp; +} + +// Private Methods ///////////////////////////////////////////////////////////// + +// "Setup ranges after the first one in low power auto mode by turning off +// FW calibration steps and programming static values" +// based on VL53L1_low_power_auto_setup_manual_calibration() +void VL53L1X::setupManualCalibration() +{ + // "save original vhv configs" + saved_vhv_init = readReg(VHV_CONFIG__INIT); + saved_vhv_timeout = readReg(VHV_CONFIG__TIMEOUT_MACROP_LOOP_BOUND); + + // "disable VHV init" + writeReg(VHV_CONFIG__INIT, saved_vhv_init & 0x7F); + + // "set loop bound to tuning param" + writeReg(VHV_CONFIG__TIMEOUT_MACROP_LOOP_BOUND, + (saved_vhv_timeout & 0x03) + (3 << 2)); // tuning parm default (LOWPOWERAUTO_VHV_LOOP_BOUND_DEFAULT) + + // "override phasecal" + writeReg(PHASECAL_CONFIG__OVERRIDE, 0x01); + writeReg(CAL_CONFIG__VCSEL_START, readReg(PHASECAL_RESULT__VCSEL_START)); +} + +// read measurement results into buffer +void VL53L1X::readResults() +{ + Wire.beginTransmission(address); + Wire.write((RESULT__RANGE_STATUS >> 8) & 0xFF); // reg high byte + Wire.write( RESULT__RANGE_STATUS & 0xFF); // reg low byte + last_status = Wire.endTransmission(); + + Wire.requestFrom(address, (uint8_t)17); + + results.range_status = Wire.read(); + + Wire.read(); // report_status: not used + + results.stream_count = Wire.read(); + + results.dss_actual_effective_spads_sd0 = (uint16_t)Wire.read() << 8; // high byte + results.dss_actual_effective_spads_sd0 |= Wire.read(); // low byte + + Wire.read(); // peak_signal_count_rate_mcps_sd0: not used + Wire.read(); + + results.ambient_count_rate_mcps_sd0 = (uint16_t)Wire.read() << 8; // high byte + results.ambient_count_rate_mcps_sd0 |= Wire.read(); // low byte + + Wire.read(); // sigma_sd0: not used + Wire.read(); + + Wire.read(); // phase_sd0: not used + Wire.read(); + + results.final_crosstalk_corrected_range_mm_sd0 = (uint16_t)Wire.read() << 8; // high byte + results.final_crosstalk_corrected_range_mm_sd0 |= Wire.read(); // low byte + + results.peak_signal_count_rate_crosstalk_corrected_mcps_sd0 = (uint16_t)Wire.read() << 8; // high byte + results.peak_signal_count_rate_crosstalk_corrected_mcps_sd0 |= Wire.read(); // low byte +} + +// perform Dynamic SPAD Selection calculation/update +// based on VL53L1_low_power_auto_update_DSS() +void VL53L1X::updateDSS() +{ + uint16_t spadCount = results.dss_actual_effective_spads_sd0; + + if (spadCount != 0) + { + // "Calc total rate per spad" + + uint32_t totalRatePerSpad = + (uint32_t)results.peak_signal_count_rate_crosstalk_corrected_mcps_sd0 + + results.ambient_count_rate_mcps_sd0; + + // "clip to 16 bits" + if (totalRatePerSpad > 0xFFFF) { totalRatePerSpad = 0xFFFF; } + + // "shift up to take advantage of 32 bits" + totalRatePerSpad <<= 16; + + totalRatePerSpad /= spadCount; + + if (totalRatePerSpad != 0) + { + // "get the target rate and shift up by 16" + uint32_t requiredSpads = ((uint32_t)TargetRate << 16) / totalRatePerSpad; + + // "clip to 16 bit" + if (requiredSpads > 0xFFFF) { requiredSpads = 0xFFFF; } + + // "override DSS config" + writeReg16Bit(DSS_CONFIG__MANUAL_EFFECTIVE_SPADS_SELECT, requiredSpads); + // DSS_CONFIG__ROI_MODE_CONTROL should already be set to REQUESTED_EFFFECTIVE_SPADS + + return; + } + } + + // If we reached this point, it means something above would have resulted in a + // divide by zero. + // "We want to gracefully set a spad target, not just exit with an error" + + // "set target to mid point" + writeReg16Bit(DSS_CONFIG__MANUAL_EFFECTIVE_SPADS_SELECT, 0x8000); +} + +// get range, status, rates from results buffer +// based on VL53L1_GetRangingMeasurementData() +void VL53L1X::getRangingData() +{ + // VL53L1_copy_sys_and_core_results_to_range_results() begin + + uint16_t range = results.final_crosstalk_corrected_range_mm_sd0; + + // "apply correction gain" + // gain factor of 2011 is tuning parm default (VL53L1_TUNINGPARM_LITE_RANGING_GAIN_FACTOR_DEFAULT) + // Basically, this appears to scale the result by 2011/2048, or about 98% + // (with the 1024 added for proper rounding). + ranging_data.range_mm = ((uint32_t)range * 2011 + 0x0400) / 0x0800; + + // VL53L1_copy_sys_and_core_results_to_range_results() end + + // set range_status in ranging_data based on value of RESULT__RANGE_STATUS register + // mostly based on ConvertStatusLite() + switch(results.range_status) + { + case 17: // MULTCLIPFAIL + case 2: // VCSELWATCHDOGTESTFAILURE + case 1: // VCSELCONTINUITYTESTFAILURE + case 3: // NOVHVVALUEFOUND + // from SetSimpleData() + ranging_data.range_status = HardwareFail; + break; + + case 13: // USERROICLIP + // from SetSimpleData() + ranging_data.range_status = MinRangeFail; + break; + + case 18: // GPHSTREAMCOUNT0READY + ranging_data.range_status = SynchronizationInt; + break; + + case 5: // RANGEPHASECHECK + ranging_data.range_status = OutOfBoundsFail; + break; + + case 4: // MSRCNOTARGET + ranging_data.range_status = SignalFail; + break; + + case 6: // SIGMATHRESHOLDCHECK + ranging_data.range_status = SigmaFail; + break; + + case 7: // PHASECONSISTENCY + ranging_data.range_status = WrapTargetFail; + break; + + case 12: // RANGEIGNORETHRESHOLD + ranging_data.range_status = XtalkSignalFail; + break; + + case 8: // MINCLIP + ranging_data.range_status = RangeValidMinRangeClipped; + break; + + case 9: // RANGECOMPLETE + // from VL53L1_copy_sys_and_core_results_to_range_results() + if (results.stream_count == 0) + { + ranging_data.range_status = RangeValidNoWrapCheckFail; + } + else + { + ranging_data.range_status = RangeValid; + } + break; + + default: + ranging_data.range_status = None; + } + + // from SetSimpleData() + ranging_data.peak_signal_count_rate_MCPS = + countRateFixedToFloat(results.peak_signal_count_rate_crosstalk_corrected_mcps_sd0); + ranging_data.ambient_count_rate_MCPS = + countRateFixedToFloat(results.ambient_count_rate_mcps_sd0); +} + +// Decode sequence step timeout in MCLKs from register value +// based on VL53L1_decode_timeout() +uint32_t VL53L1X::decodeTimeout(uint16_t reg_val) +{ + return ((uint32_t)(reg_val & 0xFF) << (reg_val >> 8)) + 1; +} + +// Encode sequence step timeout register value from timeout in MCLKs +// based on VL53L1_encode_timeout() +uint16_t VL53L1X::encodeTimeout(uint32_t timeout_mclks) +{ + // encoded format: "(LSByte * 2^MSByte) + 1" + + uint32_t ls_byte = 0; + uint16_t ms_byte = 0; + + if (timeout_mclks > 0) + { + ls_byte = timeout_mclks - 1; + + while ((ls_byte & 0xFFFFFF00) > 0) + { + ls_byte >>= 1; + ms_byte++; + } + + return (ms_byte << 8) | (ls_byte & 0xFF); + } + else { return 0; } +} + +// Convert sequence step timeout from macro periods to microseconds with given +// macro period in microseconds (12.12 format) +// based on VL53L1_calc_timeout_us() +uint32_t VL53L1X::timeoutMclksToMicroseconds(uint32_t timeout_mclks, uint32_t macro_period_us) +{ + return ((uint64_t)timeout_mclks * macro_period_us + 0x800) >> 12; +} + +// Convert sequence step timeout from microseconds to macro periods with given +// macro period in microseconds (12.12 format) +// based on VL53L1_calc_timeout_mclks() +uint32_t VL53L1X::timeoutMicrosecondsToMclks(uint32_t timeout_us, uint32_t macro_period_us) +{ + return (((uint32_t)timeout_us << 12) + (macro_period_us >> 1)) / macro_period_us; +} + +// Calculate macro period in microseconds (12.12 format) with given VCSEL period +// assumes fast_osc_frequency has been read and stored +// based on VL53L1_calc_macro_period_us() +uint32_t VL53L1X::calcMacroPeriod(uint8_t vcsel_period) +{ + // from VL53L1_calc_pll_period_us() + // fast osc frequency in 4.12 format; PLL period in 0.24 format + uint32_t pll_period_us = ((uint32_t)0x01 << 30) / fast_osc_frequency; + + // from VL53L1_decode_vcsel_period() + uint8_t vcsel_period_pclks = (vcsel_period + 1) << 1; + + // VL53L1_MACRO_PERIOD_VCSEL_PERIODS = 2304 + uint32_t macro_period_us = (uint32_t)2304 * pll_period_us; + macro_period_us >>= 6; + macro_period_us *= vcsel_period_pclks; + macro_period_us >>= 6; + + return macro_period_us; +} diff --git a/lib/vl53l1x-arduino-1.01/VL53L1X.h b/lib/vl53l1x-arduino-1.01/VL53L1X.h new file mode 100644 index 000000000..689e9b6fd --- /dev/null +++ b/lib/vl53l1x-arduino-1.01/VL53L1X.h @@ -0,0 +1,1384 @@ +#pragma once + +#include + +class VL53L1X +{ + public: + + // register addresses from API vl53l1x_register_map.h + enum regAddr : uint16_t + { + SOFT_RESET = 0x0000, + I2C_SLAVE__DEVICE_ADDRESS = 0x0001, + ANA_CONFIG__VHV_REF_SEL_VDDPIX = 0x0002, + ANA_CONFIG__VHV_REF_SEL_VQUENCH = 0x0003, + ANA_CONFIG__REG_AVDD1V2_SEL = 0x0004, + ANA_CONFIG__FAST_OSC__TRIM = 0x0005, + OSC_MEASURED__FAST_OSC__FREQUENCY = 0x0006, + OSC_MEASURED__FAST_OSC__FREQUENCY_HI = 0x0006, + OSC_MEASURED__FAST_OSC__FREQUENCY_LO = 0x0007, + VHV_CONFIG__TIMEOUT_MACROP_LOOP_BOUND = 0x0008, + VHV_CONFIG__COUNT_THRESH = 0x0009, + VHV_CONFIG__OFFSET = 0x000A, + VHV_CONFIG__INIT = 0x000B, + GLOBAL_CONFIG__SPAD_ENABLES_REF_0 = 0x000D, + GLOBAL_CONFIG__SPAD_ENABLES_REF_1 = 0x000E, + GLOBAL_CONFIG__SPAD_ENABLES_REF_2 = 0x000F, + GLOBAL_CONFIG__SPAD_ENABLES_REF_3 = 0x0010, + GLOBAL_CONFIG__SPAD_ENABLES_REF_4 = 0x0011, + GLOBAL_CONFIG__SPAD_ENABLES_REF_5 = 0x0012, + GLOBAL_CONFIG__REF_EN_START_SELECT = 0x0013, + REF_SPAD_MAN__NUM_REQUESTED_REF_SPADS = 0x0014, + REF_SPAD_MAN__REF_LOCATION = 0x0015, + ALGO__CROSSTALK_COMPENSATION_PLANE_OFFSET_KCPS = 0x0016, + ALGO__CROSSTALK_COMPENSATION_PLANE_OFFSET_KCPS_HI = 0x0016, + ALGO__CROSSTALK_COMPENSATION_PLANE_OFFSET_KCPS_LO = 0x0017, + ALGO__CROSSTALK_COMPENSATION_X_PLANE_GRADIENT_KCPS = 0x0018, + ALGO__CROSSTALK_COMPENSATION_X_PLANE_GRADIENT_KCPS_HI = 0x0018, + ALGO__CROSSTALK_COMPENSATION_X_PLANE_GRADIENT_KCPS_LO = 0x0019, + ALGO__CROSSTALK_COMPENSATION_Y_PLANE_GRADIENT_KCPS = 0x001A, + ALGO__CROSSTALK_COMPENSATION_Y_PLANE_GRADIENT_KCPS_HI = 0x001A, + ALGO__CROSSTALK_COMPENSATION_Y_PLANE_GRADIENT_KCPS_LO = 0x001B, + REF_SPAD_CHAR__TOTAL_RATE_TARGET_MCPS = 0x001C, + REF_SPAD_CHAR__TOTAL_RATE_TARGET_MCPS_HI = 0x001C, + REF_SPAD_CHAR__TOTAL_RATE_TARGET_MCPS_LO = 0x001D, + ALGO__PART_TO_PART_RANGE_OFFSET_MM = 0x001E, + ALGO__PART_TO_PART_RANGE_OFFSET_MM_HI = 0x001E, + ALGO__PART_TO_PART_RANGE_OFFSET_MM_LO = 0x001F, + MM_CONFIG__INNER_OFFSET_MM = 0x0020, + MM_CONFIG__INNER_OFFSET_MM_HI = 0x0020, + MM_CONFIG__INNER_OFFSET_MM_LO = 0x0021, + MM_CONFIG__OUTER_OFFSET_MM = 0x0022, + MM_CONFIG__OUTER_OFFSET_MM_HI = 0x0022, + MM_CONFIG__OUTER_OFFSET_MM_LO = 0x0023, + DSS_CONFIG__TARGET_TOTAL_RATE_MCPS = 0x0024, + DSS_CONFIG__TARGET_TOTAL_RATE_MCPS_HI = 0x0024, + DSS_CONFIG__TARGET_TOTAL_RATE_MCPS_LO = 0x0025, + DEBUG__CTRL = 0x0026, + TEST_MODE__CTRL = 0x0027, + CLK_GATING__CTRL = 0x0028, + NVM_BIST__CTRL = 0x0029, + NVM_BIST__NUM_NVM_WORDS = 0x002A, + NVM_BIST__START_ADDRESS = 0x002B, + HOST_IF__STATUS = 0x002C, + PAD_I2C_HV__CONFIG = 0x002D, + PAD_I2C_HV__EXTSUP_CONFIG = 0x002E, + GPIO_HV_PAD__CTRL = 0x002F, + GPIO_HV_MUX__CTRL = 0x0030, + GPIO__TIO_HV_STATUS = 0x0031, + GPIO__FIO_HV_STATUS = 0x0032, + ANA_CONFIG__SPAD_SEL_PSWIDTH = 0x0033, + ANA_CONFIG__VCSEL_PULSE_WIDTH_OFFSET = 0x0034, + ANA_CONFIG__FAST_OSC__CONFIG_CTRL = 0x0035, + SIGMA_ESTIMATOR__EFFECTIVE_PULSE_WIDTH_NS = 0x0036, + SIGMA_ESTIMATOR__EFFECTIVE_AMBIENT_WIDTH_NS = 0x0037, + SIGMA_ESTIMATOR__SIGMA_REF_MM = 0x0038, + ALGO__CROSSTALK_COMPENSATION_VALID_HEIGHT_MM = 0x0039, + SPARE_HOST_CONFIG__STATIC_CONFIG_SPARE_0 = 0x003A, + SPARE_HOST_CONFIG__STATIC_CONFIG_SPARE_1 = 0x003B, + ALGO__RANGE_IGNORE_THRESHOLD_MCPS = 0x003C, + ALGO__RANGE_IGNORE_THRESHOLD_MCPS_HI = 0x003C, + ALGO__RANGE_IGNORE_THRESHOLD_MCPS_LO = 0x003D, + ALGO__RANGE_IGNORE_VALID_HEIGHT_MM = 0x003E, + ALGO__RANGE_MIN_CLIP = 0x003F, + ALGO__CONSISTENCY_CHECK__TOLERANCE = 0x0040, + SPARE_HOST_CONFIG__STATIC_CONFIG_SPARE_2 = 0x0041, + SD_CONFIG__RESET_STAGES_MSB = 0x0042, + SD_CONFIG__RESET_STAGES_LSB = 0x0043, + GPH_CONFIG__STREAM_COUNT_UPDATE_VALUE = 0x0044, + GLOBAL_CONFIG__STREAM_DIVIDER = 0x0045, + SYSTEM__INTERRUPT_CONFIG_GPIO = 0x0046, + CAL_CONFIG__VCSEL_START = 0x0047, + CAL_CONFIG__REPEAT_RATE = 0x0048, + CAL_CONFIG__REPEAT_RATE_HI = 0x0048, + CAL_CONFIG__REPEAT_RATE_LO = 0x0049, + GLOBAL_CONFIG__VCSEL_WIDTH = 0x004A, + PHASECAL_CONFIG__TIMEOUT_MACROP = 0x004B, + PHASECAL_CONFIG__TARGET = 0x004C, + PHASECAL_CONFIG__OVERRIDE = 0x004D, + DSS_CONFIG__ROI_MODE_CONTROL = 0x004F, + SYSTEM__THRESH_RATE_HIGH = 0x0050, + SYSTEM__THRESH_RATE_HIGH_HI = 0x0050, + SYSTEM__THRESH_RATE_HIGH_LO = 0x0051, + SYSTEM__THRESH_RATE_LOW = 0x0052, + SYSTEM__THRESH_RATE_LOW_HI = 0x0052, + SYSTEM__THRESH_RATE_LOW_LO = 0x0053, + DSS_CONFIG__MANUAL_EFFECTIVE_SPADS_SELECT = 0x0054, + DSS_CONFIG__MANUAL_EFFECTIVE_SPADS_SELECT_HI = 0x0054, + DSS_CONFIG__MANUAL_EFFECTIVE_SPADS_SELECT_LO = 0x0055, + DSS_CONFIG__MANUAL_BLOCK_SELECT = 0x0056, + DSS_CONFIG__APERTURE_ATTENUATION = 0x0057, + DSS_CONFIG__MAX_SPADS_LIMIT = 0x0058, + DSS_CONFIG__MIN_SPADS_LIMIT = 0x0059, + MM_CONFIG__TIMEOUT_MACROP_A = 0x005A, // added by Pololu for 16-bit accesses + MM_CONFIG__TIMEOUT_MACROP_A_HI = 0x005A, + MM_CONFIG__TIMEOUT_MACROP_A_LO = 0x005B, + MM_CONFIG__TIMEOUT_MACROP_B = 0x005C, // added by Pololu for 16-bit accesses + MM_CONFIG__TIMEOUT_MACROP_B_HI = 0x005C, + MM_CONFIG__TIMEOUT_MACROP_B_LO = 0x005D, + RANGE_CONFIG__TIMEOUT_MACROP_A = 0x005E, // added by Pololu for 16-bit accesses + RANGE_CONFIG__TIMEOUT_MACROP_A_HI = 0x005E, + RANGE_CONFIG__TIMEOUT_MACROP_A_LO = 0x005F, + RANGE_CONFIG__VCSEL_PERIOD_A = 0x0060, + RANGE_CONFIG__TIMEOUT_MACROP_B = 0x0061, // added by Pololu for 16-bit accesses + RANGE_CONFIG__TIMEOUT_MACROP_B_HI = 0x0061, + RANGE_CONFIG__TIMEOUT_MACROP_B_LO = 0x0062, + RANGE_CONFIG__VCSEL_PERIOD_B = 0x0063, + RANGE_CONFIG__SIGMA_THRESH = 0x0064, + RANGE_CONFIG__SIGMA_THRESH_HI = 0x0064, + RANGE_CONFIG__SIGMA_THRESH_LO = 0x0065, + RANGE_CONFIG__MIN_COUNT_RATE_RTN_LIMIT_MCPS = 0x0066, + RANGE_CONFIG__MIN_COUNT_RATE_RTN_LIMIT_MCPS_HI = 0x0066, + RANGE_CONFIG__MIN_COUNT_RATE_RTN_LIMIT_MCPS_LO = 0x0067, + RANGE_CONFIG__VALID_PHASE_LOW = 0x0068, + RANGE_CONFIG__VALID_PHASE_HIGH = 0x0069, + SYSTEM__INTERMEASUREMENT_PERIOD = 0x006C, + SYSTEM__INTERMEASUREMENT_PERIOD_3 = 0x006C, + SYSTEM__INTERMEASUREMENT_PERIOD_2 = 0x006D, + SYSTEM__INTERMEASUREMENT_PERIOD_1 = 0x006E, + SYSTEM__INTERMEASUREMENT_PERIOD_0 = 0x006F, + SYSTEM__FRACTIONAL_ENABLE = 0x0070, + SYSTEM__GROUPED_PARAMETER_HOLD_0 = 0x0071, + SYSTEM__THRESH_HIGH = 0x0072, + SYSTEM__THRESH_HIGH_HI = 0x0072, + SYSTEM__THRESH_HIGH_LO = 0x0073, + SYSTEM__THRESH_LOW = 0x0074, + SYSTEM__THRESH_LOW_HI = 0x0074, + SYSTEM__THRESH_LOW_LO = 0x0075, + SYSTEM__ENABLE_XTALK_PER_QUADRANT = 0x0076, + SYSTEM__SEED_CONFIG = 0x0077, + SD_CONFIG__WOI_SD0 = 0x0078, + SD_CONFIG__WOI_SD1 = 0x0079, + SD_CONFIG__INITIAL_PHASE_SD0 = 0x007A, + SD_CONFIG__INITIAL_PHASE_SD1 = 0x007B, + SYSTEM__GROUPED_PARAMETER_HOLD_1 = 0x007C, + SD_CONFIG__FIRST_ORDER_SELECT = 0x007D, + SD_CONFIG__QUANTIFIER = 0x007E, + ROI_CONFIG__USER_ROI_CENTRE_SPAD = 0x007F, + ROI_CONFIG__USER_ROI_REQUESTED_GLOBAL_XY_SIZE = 0x0080, + SYSTEM__SEQUENCE_CONFIG = 0x0081, + SYSTEM__GROUPED_PARAMETER_HOLD = 0x0082, + POWER_MANAGEMENT__GO1_POWER_FORCE = 0x0083, + SYSTEM__STREAM_COUNT_CTRL = 0x0084, + FIRMWARE__ENABLE = 0x0085, + SYSTEM__INTERRUPT_CLEAR = 0x0086, + SYSTEM__MODE_START = 0x0087, + RESULT__INTERRUPT_STATUS = 0x0088, + RESULT__RANGE_STATUS = 0x0089, + RESULT__REPORT_STATUS = 0x008A, + RESULT__STREAM_COUNT = 0x008B, + RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0 = 0x008C, + RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0_HI = 0x008C, + RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0_LO = 0x008D, + RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0 = 0x008E, + RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0_HI = 0x008E, + RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0_LO = 0x008F, + RESULT__AMBIENT_COUNT_RATE_MCPS_SD0 = 0x0090, + RESULT__AMBIENT_COUNT_RATE_MCPS_SD0_HI = 0x0090, + RESULT__AMBIENT_COUNT_RATE_MCPS_SD0_LO = 0x0091, + RESULT__SIGMA_SD0 = 0x0092, + RESULT__SIGMA_SD0_HI = 0x0092, + RESULT__SIGMA_SD0_LO = 0x0093, + RESULT__PHASE_SD0 = 0x0094, + RESULT__PHASE_SD0_HI = 0x0094, + RESULT__PHASE_SD0_LO = 0x0095, + RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0 = 0x0096, + RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0_HI = 0x0096, + RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0_LO = 0x0097, + RESULT__PEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0 = 0x0098, + RESULT__PEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0_HI = 0x0098, + RESULT__PEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0_LO = 0x0099, + RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0 = 0x009A, + RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0_HI = 0x009A, + RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0_LO = 0x009B, + RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0 = 0x009C, + RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0_HI = 0x009C, + RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0_LO = 0x009D, + RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0 = 0x009E, + RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0_HI = 0x009E, + RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0_LO = 0x009F, + RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1 = 0x00A0, + RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1_HI = 0x00A0, + RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1_LO = 0x00A1, + RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1 = 0x00A2, + RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1_HI = 0x00A2, + RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1_LO = 0x00A3, + RESULT__AMBIENT_COUNT_RATE_MCPS_SD1 = 0x00A4, + RESULT__AMBIENT_COUNT_RATE_MCPS_SD1_HI = 0x00A4, + RESULT__AMBIENT_COUNT_RATE_MCPS_SD1_LO = 0x00A5, + RESULT__SIGMA_SD1 = 0x00A6, + RESULT__SIGMA_SD1_HI = 0x00A6, + RESULT__SIGMA_SD1_LO = 0x00A7, + RESULT__PHASE_SD1 = 0x00A8, + RESULT__PHASE_SD1_HI = 0x00A8, + RESULT__PHASE_SD1_LO = 0x00A9, + RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1 = 0x00AA, + RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1_HI = 0x00AA, + RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1_LO = 0x00AB, + RESULT__SPARE_0_SD1 = 0x00AC, + RESULT__SPARE_0_SD1_HI = 0x00AC, + RESULT__SPARE_0_SD1_LO = 0x00AD, + RESULT__SPARE_1_SD1 = 0x00AE, + RESULT__SPARE_1_SD1_HI = 0x00AE, + RESULT__SPARE_1_SD1_LO = 0x00AF, + RESULT__SPARE_2_SD1 = 0x00B0, + RESULT__SPARE_2_SD1_HI = 0x00B0, + RESULT__SPARE_2_SD1_LO = 0x00B1, + RESULT__SPARE_3_SD1 = 0x00B2, + RESULT__THRESH_INFO = 0x00B3, + RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0 = 0x00B4, + RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_3 = 0x00B4, + RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_2 = 0x00B5, + RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_1 = 0x00B6, + RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_0 = 0x00B7, + RESULT_CORE__RANGING_TOTAL_EVENTS_SD0 = 0x00B8, + RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_3 = 0x00B8, + RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_2 = 0x00B9, + RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_1 = 0x00BA, + RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_0 = 0x00BB, + RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0 = 0x00BC, + RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_3 = 0x00BC, + RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_2 = 0x00BD, + RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_1 = 0x00BE, + RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_0 = 0x00BF, + RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0 = 0x00C0, + RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_3 = 0x00C0, + RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_2 = 0x00C1, + RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_1 = 0x00C2, + RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_0 = 0x00C3, + RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1 = 0x00C4, + RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_3 = 0x00C4, + RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_2 = 0x00C5, + RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_1 = 0x00C6, + RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_0 = 0x00C7, + RESULT_CORE__RANGING_TOTAL_EVENTS_SD1 = 0x00C8, + RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_3 = 0x00C8, + RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_2 = 0x00C9, + RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_1 = 0x00CA, + RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_0 = 0x00CB, + RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1 = 0x00CC, + RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_3 = 0x00CC, + RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_2 = 0x00CD, + RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_1 = 0x00CE, + RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_0 = 0x00CF, + RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1 = 0x00D0, + RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_3 = 0x00D0, + RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_2 = 0x00D1, + RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_1 = 0x00D2, + RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_0 = 0x00D3, + RESULT_CORE__SPARE_0 = 0x00D4, + PHASECAL_RESULT__REFERENCE_PHASE = 0x00D6, + PHASECAL_RESULT__REFERENCE_PHASE_HI = 0x00D6, + PHASECAL_RESULT__REFERENCE_PHASE_LO = 0x00D7, + PHASECAL_RESULT__VCSEL_START = 0x00D8, + REF_SPAD_CHAR_RESULT__NUM_ACTUAL_REF_SPADS = 0x00D9, + REF_SPAD_CHAR_RESULT__REF_LOCATION = 0x00DA, + VHV_RESULT__COLDBOOT_STATUS = 0x00DB, + VHV_RESULT__SEARCH_RESULT = 0x00DC, + VHV_RESULT__LATEST_SETTING = 0x00DD, + RESULT__OSC_CALIBRATE_VAL = 0x00DE, + RESULT__OSC_CALIBRATE_VAL_HI = 0x00DE, + RESULT__OSC_CALIBRATE_VAL_LO = 0x00DF, + ANA_CONFIG__POWERDOWN_GO1 = 0x00E0, + ANA_CONFIG__REF_BG_CTRL = 0x00E1, + ANA_CONFIG__REGDVDD1V2_CTRL = 0x00E2, + ANA_CONFIG__OSC_SLOW_CTRL = 0x00E3, + TEST_MODE__STATUS = 0x00E4, + FIRMWARE__SYSTEM_STATUS = 0x00E5, + FIRMWARE__MODE_STATUS = 0x00E6, + FIRMWARE__SECONDARY_MODE_STATUS = 0x00E7, + FIRMWARE__CAL_REPEAT_RATE_COUNTER = 0x00E8, + FIRMWARE__CAL_REPEAT_RATE_COUNTER_HI = 0x00E8, + FIRMWARE__CAL_REPEAT_RATE_COUNTER_LO = 0x00E9, + FIRMWARE__HISTOGRAM_BIN = 0x00EA, + GPH__SYSTEM__THRESH_HIGH = 0x00EC, + GPH__SYSTEM__THRESH_HIGH_HI = 0x00EC, + GPH__SYSTEM__THRESH_HIGH_LO = 0x00ED, + GPH__SYSTEM__THRESH_LOW = 0x00EE, + GPH__SYSTEM__THRESH_LOW_HI = 0x00EE, + GPH__SYSTEM__THRESH_LOW_LO = 0x00EF, + GPH__SYSTEM__ENABLE_XTALK_PER_QUADRANT = 0x00F0, + GPH__SPARE_0 = 0x00F1, + GPH__SD_CONFIG__WOI_SD0 = 0x00F2, + GPH__SD_CONFIG__WOI_SD1 = 0x00F3, + GPH__SD_CONFIG__INITIAL_PHASE_SD0 = 0x00F4, + GPH__SD_CONFIG__INITIAL_PHASE_SD1 = 0x00F5, + GPH__SD_CONFIG__FIRST_ORDER_SELECT = 0x00F6, + GPH__SD_CONFIG__QUANTIFIER = 0x00F7, + GPH__ROI_CONFIG__USER_ROI_CENTRE_SPAD = 0x00F8, + GPH__ROI_CONFIG__USER_ROI_REQUESTED_GLOBAL_XY_SIZE = 0x00F9, + GPH__SYSTEM__SEQUENCE_CONFIG = 0x00FA, + GPH__GPH_ID = 0x00FB, + SYSTEM__INTERRUPT_SET = 0x00FC, + INTERRUPT_MANAGER__ENABLES = 0x00FD, + INTERRUPT_MANAGER__CLEAR = 0x00FE, + INTERRUPT_MANAGER__STATUS = 0x00FF, + MCU_TO_HOST_BANK__WR_ACCESS_EN = 0x0100, + POWER_MANAGEMENT__GO1_RESET_STATUS = 0x0101, + PAD_STARTUP_MODE__VALUE_RO = 0x0102, + PAD_STARTUP_MODE__VALUE_CTRL = 0x0103, + PLL_PERIOD_US = 0x0104, + PLL_PERIOD_US_3 = 0x0104, + PLL_PERIOD_US_2 = 0x0105, + PLL_PERIOD_US_1 = 0x0106, + PLL_PERIOD_US_0 = 0x0107, + INTERRUPT_SCHEDULER__DATA_OUT = 0x0108, + INTERRUPT_SCHEDULER__DATA_OUT_3 = 0x0108, + INTERRUPT_SCHEDULER__DATA_OUT_2 = 0x0109, + INTERRUPT_SCHEDULER__DATA_OUT_1 = 0x010A, + INTERRUPT_SCHEDULER__DATA_OUT_0 = 0x010B, + NVM_BIST__COMPLETE = 0x010C, + NVM_BIST__STATUS = 0x010D, + IDENTIFICATION__MODEL_ID = 0x010F, + IDENTIFICATION__MODULE_TYPE = 0x0110, + IDENTIFICATION__REVISION_ID = 0x0111, + IDENTIFICATION__MODULE_ID = 0x0112, + IDENTIFICATION__MODULE_ID_HI = 0x0112, + IDENTIFICATION__MODULE_ID_LO = 0x0113, + ANA_CONFIG__FAST_OSC__TRIM_MAX = 0x0114, + ANA_CONFIG__FAST_OSC__FREQ_SET = 0x0115, + ANA_CONFIG__VCSEL_TRIM = 0x0116, + ANA_CONFIG__VCSEL_SELION = 0x0117, + ANA_CONFIG__VCSEL_SELION_MAX = 0x0118, + PROTECTED_LASER_SAFETY__LOCK_BIT = 0x0119, + LASER_SAFETY__KEY = 0x011A, + LASER_SAFETY__KEY_RO = 0x011B, + LASER_SAFETY__CLIP = 0x011C, + LASER_SAFETY__MULT = 0x011D, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_0 = 0x011E, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_1 = 0x011F, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_2 = 0x0120, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_3 = 0x0121, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_4 = 0x0122, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_5 = 0x0123, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_6 = 0x0124, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_7 = 0x0125, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_8 = 0x0126, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_9 = 0x0127, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_10 = 0x0128, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_11 = 0x0129, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_12 = 0x012A, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_13 = 0x012B, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_14 = 0x012C, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_15 = 0x012D, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_16 = 0x012E, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_17 = 0x012F, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_18 = 0x0130, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_19 = 0x0131, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_20 = 0x0132, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_21 = 0x0133, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_22 = 0x0134, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_23 = 0x0135, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_24 = 0x0136, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_25 = 0x0137, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_26 = 0x0138, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_27 = 0x0139, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_28 = 0x013A, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_29 = 0x013B, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_30 = 0x013C, + GLOBAL_CONFIG__SPAD_ENABLES_RTN_31 = 0x013D, + ROI_CONFIG__MODE_ROI_CENTRE_SPAD = 0x013E, + ROI_CONFIG__MODE_ROI_XY_SIZE = 0x013F, + GO2_HOST_BANK_ACCESS__OVERRIDE = 0x0300, + MCU_UTIL_MULTIPLIER__MULTIPLICAND = 0x0400, + MCU_UTIL_MULTIPLIER__MULTIPLICAND_3 = 0x0400, + MCU_UTIL_MULTIPLIER__MULTIPLICAND_2 = 0x0401, + MCU_UTIL_MULTIPLIER__MULTIPLICAND_1 = 0x0402, + MCU_UTIL_MULTIPLIER__MULTIPLICAND_0 = 0x0403, + MCU_UTIL_MULTIPLIER__MULTIPLIER = 0x0404, + MCU_UTIL_MULTIPLIER__MULTIPLIER_3 = 0x0404, + MCU_UTIL_MULTIPLIER__MULTIPLIER_2 = 0x0405, + MCU_UTIL_MULTIPLIER__MULTIPLIER_1 = 0x0406, + MCU_UTIL_MULTIPLIER__MULTIPLIER_0 = 0x0407, + MCU_UTIL_MULTIPLIER__PRODUCT_HI = 0x0408, + MCU_UTIL_MULTIPLIER__PRODUCT_HI_3 = 0x0408, + MCU_UTIL_MULTIPLIER__PRODUCT_HI_2 = 0x0409, + MCU_UTIL_MULTIPLIER__PRODUCT_HI_1 = 0x040A, + MCU_UTIL_MULTIPLIER__PRODUCT_HI_0 = 0x040B, + MCU_UTIL_MULTIPLIER__PRODUCT_LO = 0x040C, + MCU_UTIL_MULTIPLIER__PRODUCT_LO_3 = 0x040C, + MCU_UTIL_MULTIPLIER__PRODUCT_LO_2 = 0x040D, + MCU_UTIL_MULTIPLIER__PRODUCT_LO_1 = 0x040E, + MCU_UTIL_MULTIPLIER__PRODUCT_LO_0 = 0x040F, + MCU_UTIL_MULTIPLIER__START = 0x0410, + MCU_UTIL_MULTIPLIER__STATUS = 0x0411, + MCU_UTIL_DIVIDER__START = 0x0412, + MCU_UTIL_DIVIDER__STATUS = 0x0413, + MCU_UTIL_DIVIDER__DIVIDEND = 0x0414, + MCU_UTIL_DIVIDER__DIVIDEND_3 = 0x0414, + MCU_UTIL_DIVIDER__DIVIDEND_2 = 0x0415, + MCU_UTIL_DIVIDER__DIVIDEND_1 = 0x0416, + MCU_UTIL_DIVIDER__DIVIDEND_0 = 0x0417, + MCU_UTIL_DIVIDER__DIVISOR = 0x0418, + MCU_UTIL_DIVIDER__DIVISOR_3 = 0x0418, + MCU_UTIL_DIVIDER__DIVISOR_2 = 0x0419, + MCU_UTIL_DIVIDER__DIVISOR_1 = 0x041A, + MCU_UTIL_DIVIDER__DIVISOR_0 = 0x041B, + MCU_UTIL_DIVIDER__QUOTIENT = 0x041C, + MCU_UTIL_DIVIDER__QUOTIENT_3 = 0x041C, + MCU_UTIL_DIVIDER__QUOTIENT_2 = 0x041D, + MCU_UTIL_DIVIDER__QUOTIENT_1 = 0x041E, + MCU_UTIL_DIVIDER__QUOTIENT_0 = 0x041F, + TIMER0__VALUE_IN = 0x0420, + TIMER0__VALUE_IN_3 = 0x0420, + TIMER0__VALUE_IN_2 = 0x0421, + TIMER0__VALUE_IN_1 = 0x0422, + TIMER0__VALUE_IN_0 = 0x0423, + TIMER1__VALUE_IN = 0x0424, + TIMER1__VALUE_IN_3 = 0x0424, + TIMER1__VALUE_IN_2 = 0x0425, + TIMER1__VALUE_IN_1 = 0x0426, + TIMER1__VALUE_IN_0 = 0x0427, + TIMER0__CTRL = 0x0428, + TIMER1__CTRL = 0x0429, + MCU_GENERAL_PURPOSE__GP_0 = 0x042C, + MCU_GENERAL_PURPOSE__GP_1 = 0x042D, + MCU_GENERAL_PURPOSE__GP_2 = 0x042E, + MCU_GENERAL_PURPOSE__GP_3 = 0x042F, + MCU_RANGE_CALC__CONFIG = 0x0430, + MCU_RANGE_CALC__OFFSET_CORRECTED_RANGE = 0x0432, + MCU_RANGE_CALC__OFFSET_CORRECTED_RANGE_HI = 0x0432, + MCU_RANGE_CALC__OFFSET_CORRECTED_RANGE_LO = 0x0433, + MCU_RANGE_CALC__SPARE_4 = 0x0434, + MCU_RANGE_CALC__SPARE_4_3 = 0x0434, + MCU_RANGE_CALC__SPARE_4_2 = 0x0435, + MCU_RANGE_CALC__SPARE_4_1 = 0x0436, + MCU_RANGE_CALC__SPARE_4_0 = 0x0437, + MCU_RANGE_CALC__AMBIENT_DURATION_PRE_CALC = 0x0438, + MCU_RANGE_CALC__AMBIENT_DURATION_PRE_CALC_HI = 0x0438, + MCU_RANGE_CALC__AMBIENT_DURATION_PRE_CALC_LO = 0x0439, + MCU_RANGE_CALC__ALGO_VCSEL_PERIOD = 0x043C, + MCU_RANGE_CALC__SPARE_5 = 0x043D, + MCU_RANGE_CALC__ALGO_TOTAL_PERIODS = 0x043E, + MCU_RANGE_CALC__ALGO_TOTAL_PERIODS_HI = 0x043E, + MCU_RANGE_CALC__ALGO_TOTAL_PERIODS_LO = 0x043F, + MCU_RANGE_CALC__ALGO_ACCUM_PHASE = 0x0440, + MCU_RANGE_CALC__ALGO_ACCUM_PHASE_3 = 0x0440, + MCU_RANGE_CALC__ALGO_ACCUM_PHASE_2 = 0x0441, + MCU_RANGE_CALC__ALGO_ACCUM_PHASE_1 = 0x0442, + MCU_RANGE_CALC__ALGO_ACCUM_PHASE_0 = 0x0443, + MCU_RANGE_CALC__ALGO_SIGNAL_EVENTS = 0x0444, + MCU_RANGE_CALC__ALGO_SIGNAL_EVENTS_3 = 0x0444, + MCU_RANGE_CALC__ALGO_SIGNAL_EVENTS_2 = 0x0445, + MCU_RANGE_CALC__ALGO_SIGNAL_EVENTS_1 = 0x0446, + MCU_RANGE_CALC__ALGO_SIGNAL_EVENTS_0 = 0x0447, + MCU_RANGE_CALC__ALGO_AMBIENT_EVENTS = 0x0448, + MCU_RANGE_CALC__ALGO_AMBIENT_EVENTS_3 = 0x0448, + MCU_RANGE_CALC__ALGO_AMBIENT_EVENTS_2 = 0x0449, + MCU_RANGE_CALC__ALGO_AMBIENT_EVENTS_1 = 0x044A, + MCU_RANGE_CALC__ALGO_AMBIENT_EVENTS_0 = 0x044B, + MCU_RANGE_CALC__SPARE_6 = 0x044C, + MCU_RANGE_CALC__SPARE_6_HI = 0x044C, + MCU_RANGE_CALC__SPARE_6_LO = 0x044D, + MCU_RANGE_CALC__ALGO_ADJUST_VCSEL_PERIOD = 0x044E, + MCU_RANGE_CALC__ALGO_ADJUST_VCSEL_PERIOD_HI = 0x044E, + MCU_RANGE_CALC__ALGO_ADJUST_VCSEL_PERIOD_LO = 0x044F, + MCU_RANGE_CALC__NUM_SPADS = 0x0450, + MCU_RANGE_CALC__NUM_SPADS_HI = 0x0450, + MCU_RANGE_CALC__NUM_SPADS_LO = 0x0451, + MCU_RANGE_CALC__PHASE_OUTPUT = 0x0452, + MCU_RANGE_CALC__PHASE_OUTPUT_HI = 0x0452, + MCU_RANGE_CALC__PHASE_OUTPUT_LO = 0x0453, + MCU_RANGE_CALC__RATE_PER_SPAD_MCPS = 0x0454, + MCU_RANGE_CALC__RATE_PER_SPAD_MCPS_3 = 0x0454, + MCU_RANGE_CALC__RATE_PER_SPAD_MCPS_2 = 0x0455, + MCU_RANGE_CALC__RATE_PER_SPAD_MCPS_1 = 0x0456, + MCU_RANGE_CALC__RATE_PER_SPAD_MCPS_0 = 0x0457, + MCU_RANGE_CALC__SPARE_7 = 0x0458, + MCU_RANGE_CALC__SPARE_8 = 0x0459, + MCU_RANGE_CALC__PEAK_SIGNAL_RATE_MCPS = 0x045A, + MCU_RANGE_CALC__PEAK_SIGNAL_RATE_MCPS_HI = 0x045A, + MCU_RANGE_CALC__PEAK_SIGNAL_RATE_MCPS_LO = 0x045B, + MCU_RANGE_CALC__AVG_SIGNAL_RATE_MCPS = 0x045C, + MCU_RANGE_CALC__AVG_SIGNAL_RATE_MCPS_HI = 0x045C, + MCU_RANGE_CALC__AVG_SIGNAL_RATE_MCPS_LO = 0x045D, + MCU_RANGE_CALC__AMBIENT_RATE_MCPS = 0x045E, + MCU_RANGE_CALC__AMBIENT_RATE_MCPS_HI = 0x045E, + MCU_RANGE_CALC__AMBIENT_RATE_MCPS_LO = 0x045F, + MCU_RANGE_CALC__XTALK = 0x0460, + MCU_RANGE_CALC__XTALK_HI = 0x0460, + MCU_RANGE_CALC__XTALK_LO = 0x0461, + MCU_RANGE_CALC__CALC_STATUS = 0x0462, + MCU_RANGE_CALC__DEBUG = 0x0463, + MCU_RANGE_CALC__PEAK_SIGNAL_RATE_XTALK_CORR_MCPS = 0x0464, + MCU_RANGE_CALC__PEAK_SIGNAL_RATE_XTALK_CORR_MCPS_HI = 0x0464, + MCU_RANGE_CALC__PEAK_SIGNAL_RATE_XTALK_CORR_MCPS_LO = 0x0465, + MCU_RANGE_CALC__SPARE_0 = 0x0468, + MCU_RANGE_CALC__SPARE_1 = 0x0469, + MCU_RANGE_CALC__SPARE_2 = 0x046A, + MCU_RANGE_CALC__SPARE_3 = 0x046B, + PATCH__CTRL = 0x0470, + PATCH__JMP_ENABLES = 0x0472, + PATCH__JMP_ENABLES_HI = 0x0472, + PATCH__JMP_ENABLES_LO = 0x0473, + PATCH__DATA_ENABLES = 0x0474, + PATCH__DATA_ENABLES_HI = 0x0474, + PATCH__DATA_ENABLES_LO = 0x0475, + PATCH__OFFSET_0 = 0x0476, + PATCH__OFFSET_0_HI = 0x0476, + PATCH__OFFSET_0_LO = 0x0477, + PATCH__OFFSET_1 = 0x0478, + PATCH__OFFSET_1_HI = 0x0478, + PATCH__OFFSET_1_LO = 0x0479, + PATCH__OFFSET_2 = 0x047A, + PATCH__OFFSET_2_HI = 0x047A, + PATCH__OFFSET_2_LO = 0x047B, + PATCH__OFFSET_3 = 0x047C, + PATCH__OFFSET_3_HI = 0x047C, + PATCH__OFFSET_3_LO = 0x047D, + PATCH__OFFSET_4 = 0x047E, + PATCH__OFFSET_4_HI = 0x047E, + PATCH__OFFSET_4_LO = 0x047F, + PATCH__OFFSET_5 = 0x0480, + PATCH__OFFSET_5_HI = 0x0480, + PATCH__OFFSET_5_LO = 0x0481, + PATCH__OFFSET_6 = 0x0482, + PATCH__OFFSET_6_HI = 0x0482, + PATCH__OFFSET_6_LO = 0x0483, + PATCH__OFFSET_7 = 0x0484, + PATCH__OFFSET_7_HI = 0x0484, + PATCH__OFFSET_7_LO = 0x0485, + PATCH__OFFSET_8 = 0x0486, + PATCH__OFFSET_8_HI = 0x0486, + PATCH__OFFSET_8_LO = 0x0487, + PATCH__OFFSET_9 = 0x0488, + PATCH__OFFSET_9_HI = 0x0488, + PATCH__OFFSET_9_LO = 0x0489, + PATCH__OFFSET_10 = 0x048A, + PATCH__OFFSET_10_HI = 0x048A, + PATCH__OFFSET_10_LO = 0x048B, + PATCH__OFFSET_11 = 0x048C, + PATCH__OFFSET_11_HI = 0x048C, + PATCH__OFFSET_11_LO = 0x048D, + PATCH__OFFSET_12 = 0x048E, + PATCH__OFFSET_12_HI = 0x048E, + PATCH__OFFSET_12_LO = 0x048F, + PATCH__OFFSET_13 = 0x0490, + PATCH__OFFSET_13_HI = 0x0490, + PATCH__OFFSET_13_LO = 0x0491, + PATCH__OFFSET_14 = 0x0492, + PATCH__OFFSET_14_HI = 0x0492, + PATCH__OFFSET_14_LO = 0x0493, + PATCH__OFFSET_15 = 0x0494, + PATCH__OFFSET_15_HI = 0x0494, + PATCH__OFFSET_15_LO = 0x0495, + PATCH__ADDRESS_0 = 0x0496, + PATCH__ADDRESS_0_HI = 0x0496, + PATCH__ADDRESS_0_LO = 0x0497, + PATCH__ADDRESS_1 = 0x0498, + PATCH__ADDRESS_1_HI = 0x0498, + PATCH__ADDRESS_1_LO = 0x0499, + PATCH__ADDRESS_2 = 0x049A, + PATCH__ADDRESS_2_HI = 0x049A, + PATCH__ADDRESS_2_LO = 0x049B, + PATCH__ADDRESS_3 = 0x049C, + PATCH__ADDRESS_3_HI = 0x049C, + PATCH__ADDRESS_3_LO = 0x049D, + PATCH__ADDRESS_4 = 0x049E, + PATCH__ADDRESS_4_HI = 0x049E, + PATCH__ADDRESS_4_LO = 0x049F, + PATCH__ADDRESS_5 = 0x04A0, + PATCH__ADDRESS_5_HI = 0x04A0, + PATCH__ADDRESS_5_LO = 0x04A1, + PATCH__ADDRESS_6 = 0x04A2, + PATCH__ADDRESS_6_HI = 0x04A2, + PATCH__ADDRESS_6_LO = 0x04A3, + PATCH__ADDRESS_7 = 0x04A4, + PATCH__ADDRESS_7_HI = 0x04A4, + PATCH__ADDRESS_7_LO = 0x04A5, + PATCH__ADDRESS_8 = 0x04A6, + PATCH__ADDRESS_8_HI = 0x04A6, + PATCH__ADDRESS_8_LO = 0x04A7, + PATCH__ADDRESS_9 = 0x04A8, + PATCH__ADDRESS_9_HI = 0x04A8, + PATCH__ADDRESS_9_LO = 0x04A9, + PATCH__ADDRESS_10 = 0x04AA, + PATCH__ADDRESS_10_HI = 0x04AA, + PATCH__ADDRESS_10_LO = 0x04AB, + PATCH__ADDRESS_11 = 0x04AC, + PATCH__ADDRESS_11_HI = 0x04AC, + PATCH__ADDRESS_11_LO = 0x04AD, + PATCH__ADDRESS_12 = 0x04AE, + PATCH__ADDRESS_12_HI = 0x04AE, + PATCH__ADDRESS_12_LO = 0x04AF, + PATCH__ADDRESS_13 = 0x04B0, + PATCH__ADDRESS_13_HI = 0x04B0, + PATCH__ADDRESS_13_LO = 0x04B1, + PATCH__ADDRESS_14 = 0x04B2, + PATCH__ADDRESS_14_HI = 0x04B2, + PATCH__ADDRESS_14_LO = 0x04B3, + PATCH__ADDRESS_15 = 0x04B4, + PATCH__ADDRESS_15_HI = 0x04B4, + PATCH__ADDRESS_15_LO = 0x04B5, + SPI_ASYNC_MUX__CTRL = 0x04C0, + CLK__CONFIG = 0x04C4, + GPIO_LV_MUX__CTRL = 0x04CC, + GPIO_LV_PAD__CTRL = 0x04CD, + PAD_I2C_LV__CONFIG = 0x04D0, + PAD_STARTUP_MODE__VALUE_RO_GO1 = 0x04D4, + HOST_IF__STATUS_GO1 = 0x04D5, + MCU_CLK_GATING__CTRL = 0x04D8, + TEST__BIST_ROM_CTRL = 0x04E0, + TEST__BIST_ROM_RESULT = 0x04E1, + TEST__BIST_ROM_MCU_SIG = 0x04E2, + TEST__BIST_ROM_MCU_SIG_HI = 0x04E2, + TEST__BIST_ROM_MCU_SIG_LO = 0x04E3, + TEST__BIST_RAM_CTRL = 0x04E4, + TEST__BIST_RAM_RESULT = 0x04E5, + TEST__TMC = 0x04E8, + TEST__PLL_BIST_MIN_THRESHOLD = 0x04F0, + TEST__PLL_BIST_MIN_THRESHOLD_HI = 0x04F0, + TEST__PLL_BIST_MIN_THRESHOLD_LO = 0x04F1, + TEST__PLL_BIST_MAX_THRESHOLD = 0x04F2, + TEST__PLL_BIST_MAX_THRESHOLD_HI = 0x04F2, + TEST__PLL_BIST_MAX_THRESHOLD_LO = 0x04F3, + TEST__PLL_BIST_COUNT_OUT = 0x04F4, + TEST__PLL_BIST_COUNT_OUT_HI = 0x04F4, + TEST__PLL_BIST_COUNT_OUT_LO = 0x04F5, + TEST__PLL_BIST_GONOGO = 0x04F6, + TEST__PLL_BIST_CTRL = 0x04F7, + RANGING_CORE__DEVICE_ID = 0x0680, + RANGING_CORE__REVISION_ID = 0x0681, + RANGING_CORE__CLK_CTRL1 = 0x0683, + RANGING_CORE__CLK_CTRL2 = 0x0684, + RANGING_CORE__WOI_1 = 0x0685, + RANGING_CORE__WOI_REF_1 = 0x0686, + RANGING_CORE__START_RANGING = 0x0687, + RANGING_CORE__LOW_LIMIT_1 = 0x0690, + RANGING_CORE__HIGH_LIMIT_1 = 0x0691, + RANGING_CORE__LOW_LIMIT_REF_1 = 0x0692, + RANGING_CORE__HIGH_LIMIT_REF_1 = 0x0693, + RANGING_CORE__QUANTIFIER_1_MSB = 0x0694, + RANGING_CORE__QUANTIFIER_1_LSB = 0x0695, + RANGING_CORE__QUANTIFIER_REF_1_MSB = 0x0696, + RANGING_CORE__QUANTIFIER_REF_1_LSB = 0x0697, + RANGING_CORE__AMBIENT_OFFSET_1_MSB = 0x0698, + RANGING_CORE__AMBIENT_OFFSET_1_LSB = 0x0699, + RANGING_CORE__AMBIENT_OFFSET_REF_1_MSB = 0x069A, + RANGING_CORE__AMBIENT_OFFSET_REF_1_LSB = 0x069B, + RANGING_CORE__FILTER_STRENGTH_1 = 0x069C, + RANGING_CORE__FILTER_STRENGTH_REF_1 = 0x069D, + RANGING_CORE__SIGNAL_EVENT_LIMIT_1_MSB = 0x069E, + RANGING_CORE__SIGNAL_EVENT_LIMIT_1_LSB = 0x069F, + RANGING_CORE__SIGNAL_EVENT_LIMIT_REF_1_MSB = 0x06A0, + RANGING_CORE__SIGNAL_EVENT_LIMIT_REF_1_LSB = 0x06A1, + RANGING_CORE__TIMEOUT_OVERALL_PERIODS_MSB = 0x06A4, + RANGING_CORE__TIMEOUT_OVERALL_PERIODS_LSB = 0x06A5, + RANGING_CORE__INVERT_HW = 0x06A6, + RANGING_CORE__FORCE_HW = 0x06A7, + RANGING_CORE__STATIC_HW_VALUE = 0x06A8, + RANGING_CORE__FORCE_CONTINUOUS_AMBIENT = 0x06A9, + RANGING_CORE__TEST_PHASE_SELECT_TO_FILTER = 0x06AA, + RANGING_CORE__TEST_PHASE_SELECT_TO_TIMING_GEN = 0x06AB, + RANGING_CORE__INITIAL_PHASE_VALUE_1 = 0x06AC, + RANGING_CORE__INITIAL_PHASE_VALUE_REF_1 = 0x06AD, + RANGING_CORE__FORCE_UP_IN = 0x06AE, + RANGING_CORE__FORCE_DN_IN = 0x06AF, + RANGING_CORE__STATIC_UP_VALUE_1 = 0x06B0, + RANGING_CORE__STATIC_UP_VALUE_REF_1 = 0x06B1, + RANGING_CORE__STATIC_DN_VALUE_1 = 0x06B2, + RANGING_CORE__STATIC_DN_VALUE_REF_1 = 0x06B3, + RANGING_CORE__MONITOR_UP_DN = 0x06B4, + RANGING_CORE__INVERT_UP_DN = 0x06B5, + RANGING_CORE__CPUMP_1 = 0x06B6, + RANGING_CORE__CPUMP_2 = 0x06B7, + RANGING_CORE__CPUMP_3 = 0x06B8, + RANGING_CORE__OSC_1 = 0x06B9, + RANGING_CORE__PLL_1 = 0x06BB, + RANGING_CORE__PLL_2 = 0x06BC, + RANGING_CORE__REFERENCE_1 = 0x06BD, + RANGING_CORE__REFERENCE_3 = 0x06BF, + RANGING_CORE__REFERENCE_4 = 0x06C0, + RANGING_CORE__REFERENCE_5 = 0x06C1, + RANGING_CORE__REGAVDD1V2 = 0x06C3, + RANGING_CORE__CALIB_1 = 0x06C4, + RANGING_CORE__CALIB_2 = 0x06C5, + RANGING_CORE__CALIB_3 = 0x06C6, + RANGING_CORE__TST_MUX_SEL1 = 0x06C9, + RANGING_CORE__TST_MUX_SEL2 = 0x06CA, + RANGING_CORE__TST_MUX = 0x06CB, + RANGING_CORE__GPIO_OUT_TESTMUX = 0x06CC, + RANGING_CORE__CUSTOM_FE = 0x06CD, + RANGING_CORE__CUSTOM_FE_2 = 0x06CE, + RANGING_CORE__SPAD_READOUT = 0x06CF, + RANGING_CORE__SPAD_READOUT_1 = 0x06D0, + RANGING_CORE__SPAD_READOUT_2 = 0x06D1, + RANGING_CORE__SPAD_PS = 0x06D2, + RANGING_CORE__LASER_SAFETY_2 = 0x06D4, + RANGING_CORE__NVM_CTRL__MODE = 0x0780, + RANGING_CORE__NVM_CTRL__PDN = 0x0781, + RANGING_CORE__NVM_CTRL__PROGN = 0x0782, + RANGING_CORE__NVM_CTRL__READN = 0x0783, + RANGING_CORE__NVM_CTRL__PULSE_WIDTH_MSB = 0x0784, + RANGING_CORE__NVM_CTRL__PULSE_WIDTH_LSB = 0x0785, + RANGING_CORE__NVM_CTRL__HV_RISE_MSB = 0x0786, + RANGING_CORE__NVM_CTRL__HV_RISE_LSB = 0x0787, + RANGING_CORE__NVM_CTRL__HV_FALL_MSB = 0x0788, + RANGING_CORE__NVM_CTRL__HV_FALL_LSB = 0x0789, + RANGING_CORE__NVM_CTRL__TST = 0x078A, + RANGING_CORE__NVM_CTRL__TESTREAD = 0x078B, + RANGING_CORE__NVM_CTRL__DATAIN_MMM = 0x078C, + RANGING_CORE__NVM_CTRL__DATAIN_LMM = 0x078D, + RANGING_CORE__NVM_CTRL__DATAIN_LLM = 0x078E, + RANGING_CORE__NVM_CTRL__DATAIN_LLL = 0x078F, + RANGING_CORE__NVM_CTRL__DATAOUT_MMM = 0x0790, + RANGING_CORE__NVM_CTRL__DATAOUT_LMM = 0x0791, + RANGING_CORE__NVM_CTRL__DATAOUT_LLM = 0x0792, + RANGING_CORE__NVM_CTRL__DATAOUT_LLL = 0x0793, + RANGING_CORE__NVM_CTRL__ADDR = 0x0794, + RANGING_CORE__NVM_CTRL__DATAOUT_ECC = 0x0795, + RANGING_CORE__RET_SPAD_EN_0 = 0x0796, + RANGING_CORE__RET_SPAD_EN_1 = 0x0797, + RANGING_CORE__RET_SPAD_EN_2 = 0x0798, + RANGING_CORE__RET_SPAD_EN_3 = 0x0799, + RANGING_CORE__RET_SPAD_EN_4 = 0x079A, + RANGING_CORE__RET_SPAD_EN_5 = 0x079B, + RANGING_CORE__RET_SPAD_EN_6 = 0x079C, + RANGING_CORE__RET_SPAD_EN_7 = 0x079D, + RANGING_CORE__RET_SPAD_EN_8 = 0x079E, + RANGING_CORE__RET_SPAD_EN_9 = 0x079F, + RANGING_CORE__RET_SPAD_EN_10 = 0x07A0, + RANGING_CORE__RET_SPAD_EN_11 = 0x07A1, + RANGING_CORE__RET_SPAD_EN_12 = 0x07A2, + RANGING_CORE__RET_SPAD_EN_13 = 0x07A3, + RANGING_CORE__RET_SPAD_EN_14 = 0x07A4, + RANGING_CORE__RET_SPAD_EN_15 = 0x07A5, + RANGING_CORE__RET_SPAD_EN_16 = 0x07A6, + RANGING_CORE__RET_SPAD_EN_17 = 0x07A7, + RANGING_CORE__SPAD_SHIFT_EN = 0x07BA, + RANGING_CORE__SPAD_DISABLE_CTRL = 0x07BB, + RANGING_CORE__SPAD_EN_SHIFT_OUT_DEBUG = 0x07BC, + RANGING_CORE__SPI_MODE = 0x07BD, + RANGING_CORE__GPIO_DIR = 0x07BE, + RANGING_CORE__VCSEL_PERIOD = 0x0880, + RANGING_CORE__VCSEL_START = 0x0881, + RANGING_CORE__VCSEL_STOP = 0x0882, + RANGING_CORE__VCSEL_1 = 0x0885, + RANGING_CORE__VCSEL_STATUS = 0x088D, + RANGING_CORE__STATUS = 0x0980, + RANGING_CORE__LASER_CONTINUITY_STATE = 0x0981, + RANGING_CORE__RANGE_1_MMM = 0x0982, + RANGING_CORE__RANGE_1_LMM = 0x0983, + RANGING_CORE__RANGE_1_LLM = 0x0984, + RANGING_CORE__RANGE_1_LLL = 0x0985, + RANGING_CORE__RANGE_REF_1_MMM = 0x0986, + RANGING_CORE__RANGE_REF_1_LMM = 0x0987, + RANGING_CORE__RANGE_REF_1_LLM = 0x0988, + RANGING_CORE__RANGE_REF_1_LLL = 0x0989, + RANGING_CORE__AMBIENT_WINDOW_EVENTS_1_MMM = 0x098A, + RANGING_CORE__AMBIENT_WINDOW_EVENTS_1_LMM = 0x098B, + RANGING_CORE__AMBIENT_WINDOW_EVENTS_1_LLM = 0x098C, + RANGING_CORE__AMBIENT_WINDOW_EVENTS_1_LLL = 0x098D, + RANGING_CORE__RANGING_TOTAL_EVENTS_1_MMM = 0x098E, + RANGING_CORE__RANGING_TOTAL_EVENTS_1_LMM = 0x098F, + RANGING_CORE__RANGING_TOTAL_EVENTS_1_LLM = 0x0990, + RANGING_CORE__RANGING_TOTAL_EVENTS_1_LLL = 0x0991, + RANGING_CORE__SIGNAL_TOTAL_EVENTS_1_MMM = 0x0992, + RANGING_CORE__SIGNAL_TOTAL_EVENTS_1_LMM = 0x0993, + RANGING_CORE__SIGNAL_TOTAL_EVENTS_1_LLM = 0x0994, + RANGING_CORE__SIGNAL_TOTAL_EVENTS_1_LLL = 0x0995, + RANGING_CORE__TOTAL_PERIODS_ELAPSED_1_MM = 0x0996, + RANGING_CORE__TOTAL_PERIODS_ELAPSED_1_LM = 0x0997, + RANGING_CORE__TOTAL_PERIODS_ELAPSED_1_LL = 0x0998, + RANGING_CORE__AMBIENT_MISMATCH_MM = 0x0999, + RANGING_CORE__AMBIENT_MISMATCH_LM = 0x099A, + RANGING_CORE__AMBIENT_MISMATCH_LL = 0x099B, + RANGING_CORE__AMBIENT_WINDOW_EVENTS_REF_1_MMM = 0x099C, + RANGING_CORE__AMBIENT_WINDOW_EVENTS_REF_1_LMM = 0x099D, + RANGING_CORE__AMBIENT_WINDOW_EVENTS_REF_1_LLM = 0x099E, + RANGING_CORE__AMBIENT_WINDOW_EVENTS_REF_1_LLL = 0x099F, + RANGING_CORE__RANGING_TOTAL_EVENTS_REF_1_MMM = 0x09A0, + RANGING_CORE__RANGING_TOTAL_EVENTS_REF_1_LMM = 0x09A1, + RANGING_CORE__RANGING_TOTAL_EVENTS_REF_1_LLM = 0x09A2, + RANGING_CORE__RANGING_TOTAL_EVENTS_REF_1_LLL = 0x09A3, + RANGING_CORE__SIGNAL_TOTAL_EVENTS_REF_1_MMM = 0x09A4, + RANGING_CORE__SIGNAL_TOTAL_EVENTS_REF_1_LMM = 0x09A5, + RANGING_CORE__SIGNAL_TOTAL_EVENTS_REF_1_LLM = 0x09A6, + RANGING_CORE__SIGNAL_TOTAL_EVENTS_REF_1_LLL = 0x09A7, + RANGING_CORE__TOTAL_PERIODS_ELAPSED_REF_1_MM = 0x09A8, + RANGING_CORE__TOTAL_PERIODS_ELAPSED_REF_1_LM = 0x09A9, + RANGING_CORE__TOTAL_PERIODS_ELAPSED_REF_1_LL = 0x09AA, + RANGING_CORE__AMBIENT_MISMATCH_REF_MM = 0x09AB, + RANGING_CORE__AMBIENT_MISMATCH_REF_LM = 0x09AC, + RANGING_CORE__AMBIENT_MISMATCH_REF_LL = 0x09AD, + RANGING_CORE__GPIO_CONFIG__A0 = 0x0A00, + RANGING_CORE__RESET_CONTROL__A0 = 0x0A01, + RANGING_CORE__INTR_MANAGER__A0 = 0x0A02, + RANGING_CORE__POWER_FSM_TIME_OSC__A0 = 0x0A06, + RANGING_CORE__VCSEL_ATEST__A0 = 0x0A07, + RANGING_CORE__VCSEL_PERIOD_CLIPPED__A0 = 0x0A08, + RANGING_CORE__VCSEL_STOP_CLIPPED__A0 = 0x0A09, + RANGING_CORE__CALIB_2__A0 = 0x0A0A, + RANGING_CORE__STOP_CONDITION__A0 = 0x0A0B, + RANGING_CORE__STATUS_RESET__A0 = 0x0A0C, + RANGING_CORE__READOUT_CFG__A0 = 0x0A0D, + RANGING_CORE__WINDOW_SETTING__A0 = 0x0A0E, + RANGING_CORE__VCSEL_DELAY__A0 = 0x0A1A, + RANGING_CORE__REFERENCE_2__A0 = 0x0A1B, + RANGING_CORE__REGAVDD1V2__A0 = 0x0A1D, + RANGING_CORE__TST_MUX__A0 = 0x0A1F, + RANGING_CORE__CUSTOM_FE_2__A0 = 0x0A20, + RANGING_CORE__SPAD_READOUT__A0 = 0x0A21, + RANGING_CORE__CPUMP_1__A0 = 0x0A22, + RANGING_CORE__SPARE_REGISTER__A0 = 0x0A23, + RANGING_CORE__VCSEL_CONT_STAGE5_BYPASS__A0 = 0x0A24, + RANGING_CORE__RET_SPAD_EN_18 = 0x0A25, + RANGING_CORE__RET_SPAD_EN_19 = 0x0A26, + RANGING_CORE__RET_SPAD_EN_20 = 0x0A27, + RANGING_CORE__RET_SPAD_EN_21 = 0x0A28, + RANGING_CORE__RET_SPAD_EN_22 = 0x0A29, + RANGING_CORE__RET_SPAD_EN_23 = 0x0A2A, + RANGING_CORE__RET_SPAD_EN_24 = 0x0A2B, + RANGING_CORE__RET_SPAD_EN_25 = 0x0A2C, + RANGING_CORE__RET_SPAD_EN_26 = 0x0A2D, + RANGING_CORE__RET_SPAD_EN_27 = 0x0A2E, + RANGING_CORE__RET_SPAD_EN_28 = 0x0A2F, + RANGING_CORE__RET_SPAD_EN_29 = 0x0A30, + RANGING_CORE__RET_SPAD_EN_30 = 0x0A31, + RANGING_CORE__RET_SPAD_EN_31 = 0x0A32, + RANGING_CORE__REF_SPAD_EN_0__EWOK = 0x0A33, + RANGING_CORE__REF_SPAD_EN_1__EWOK = 0x0A34, + RANGING_CORE__REF_SPAD_EN_2__EWOK = 0x0A35, + RANGING_CORE__REF_SPAD_EN_3__EWOK = 0x0A36, + RANGING_CORE__REF_SPAD_EN_4__EWOK = 0x0A37, + RANGING_CORE__REF_SPAD_EN_5__EWOK = 0x0A38, + RANGING_CORE__REF_EN_START_SELECT = 0x0A39, + RANGING_CORE__REGDVDD1V2_ATEST__EWOK = 0x0A41, + SOFT_RESET_GO1 = 0x0B00, + PRIVATE__PATCH_BASE_ADDR_RSLV = 0x0E00, + PREV_SHADOW_RESULT__INTERRUPT_STATUS = 0x0ED0, + PREV_SHADOW_RESULT__RANGE_STATUS = 0x0ED1, + PREV_SHADOW_RESULT__REPORT_STATUS = 0x0ED2, + PREV_SHADOW_RESULT__STREAM_COUNT = 0x0ED3, + PREV_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0 = 0x0ED4, + PREV_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0_HI = 0x0ED4, + PREV_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0_LO = 0x0ED5, + PREV_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0 = 0x0ED6, + PREV_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0_HI = 0x0ED6, + PREV_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0_LO = 0x0ED7, + PREV_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD0 = 0x0ED8, + PREV_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD0_HI = 0x0ED8, + PREV_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD0_LO = 0x0ED9, + PREV_SHADOW_RESULT__SIGMA_SD0 = 0x0EDA, + PREV_SHADOW_RESULT__SIGMA_SD0_HI = 0x0EDA, + PREV_SHADOW_RESULT__SIGMA_SD0_LO = 0x0EDB, + PREV_SHADOW_RESULT__PHASE_SD0 = 0x0EDC, + PREV_SHADOW_RESULT__PHASE_SD0_HI = 0x0EDC, + PREV_SHADOW_RESULT__PHASE_SD0_LO = 0x0EDD, + PREV_SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0 = 0x0EDE, + PREV_SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0_HI = 0x0EDE, + PREV_SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0_LO = 0x0EDF, + PREV_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0 = 0x0EE0, + PREV_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0_HI = 0x0EE0, + PREV_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0_LO = 0x0EE1, + PREV_SHADOW_RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0 = 0x0EE2, + PREV_SHADOW_RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0_HI = 0x0EE2, + PREV_SHADOW_RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0_LO = 0x0EE3, + PREV_SHADOW_RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0 = 0x0EE4, + PREV_SHADOW_RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0_HI = 0x0EE4, + PREV_SHADOW_RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0_LO = 0x0EE5, + PREV_SHADOW_RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0 = 0x0EE6, + PREV_SHADOW_RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0_HI = 0x0EE6, + PREV_SHADOW_RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0_LO = 0x0EE7, + PREV_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1 = 0x0EE8, + PREV_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1_HI = 0x0EE8, + PREV_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1_LO = 0x0EE9, + PREV_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1 = 0x0EEA, + PREV_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1_HI = 0x0EEA, + PREV_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1_LO = 0x0EEB, + PREV_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD1 = 0x0EEC, + PREV_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD1_HI = 0x0EEC, + PREV_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD1_LO = 0x0EED, + PREV_SHADOW_RESULT__SIGMA_SD1 = 0x0EEE, + PREV_SHADOW_RESULT__SIGMA_SD1_HI = 0x0EEE, + PREV_SHADOW_RESULT__SIGMA_SD1_LO = 0x0EEF, + PREV_SHADOW_RESULT__PHASE_SD1 = 0x0EF0, + PREV_SHADOW_RESULT__PHASE_SD1_HI = 0x0EF0, + PREV_SHADOW_RESULT__PHASE_SD1_LO = 0x0EF1, + PREV_SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1 = 0x0EF2, + PREV_SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1_HI = 0x0EF2, + PREV_SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1_LO = 0x0EF3, + PREV_SHADOW_RESULT__SPARE_0_SD1 = 0x0EF4, + PREV_SHADOW_RESULT__SPARE_0_SD1_HI = 0x0EF4, + PREV_SHADOW_RESULT__SPARE_0_SD1_LO = 0x0EF5, + PREV_SHADOW_RESULT__SPARE_1_SD1 = 0x0EF6, + PREV_SHADOW_RESULT__SPARE_1_SD1_HI = 0x0EF6, + PREV_SHADOW_RESULT__SPARE_1_SD1_LO = 0x0EF7, + PREV_SHADOW_RESULT__SPARE_2_SD1 = 0x0EF8, + PREV_SHADOW_RESULT__SPARE_2_SD1_HI = 0x0EF8, + PREV_SHADOW_RESULT__SPARE_2_SD1_LO = 0x0EF9, + PREV_SHADOW_RESULT__SPARE_3_SD1 = 0x0EFA, + PREV_SHADOW_RESULT__SPARE_3_SD1_HI = 0x0EFA, + PREV_SHADOW_RESULT__SPARE_3_SD1_LO = 0x0EFB, + PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0 = 0x0EFC, + PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_3 = 0x0EFC, + PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_2 = 0x0EFD, + PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_1 = 0x0EFE, + PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_0 = 0x0EFF, + PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0 = 0x0F00, + PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_3 = 0x0F00, + PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_2 = 0x0F01, + PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_1 = 0x0F02, + PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_0 = 0x0F03, + PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0 = 0x0F04, + PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_3 = 0x0F04, + PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_2 = 0x0F05, + PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_1 = 0x0F06, + PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_0 = 0x0F07, + PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0 = 0x0F08, + PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_3 = 0x0F08, + PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_2 = 0x0F09, + PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_1 = 0x0F0A, + PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_0 = 0x0F0B, + PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1 = 0x0F0C, + PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_3 = 0x0F0C, + PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_2 = 0x0F0D, + PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_1 = 0x0F0E, + PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_0 = 0x0F0F, + PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1 = 0x0F10, + PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_3 = 0x0F10, + PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_2 = 0x0F11, + PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_1 = 0x0F12, + PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_0 = 0x0F13, + PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1 = 0x0F14, + PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_3 = 0x0F14, + PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_2 = 0x0F15, + PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_1 = 0x0F16, + PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_0 = 0x0F17, + PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1 = 0x0F18, + PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_3 = 0x0F18, + PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_2 = 0x0F19, + PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_1 = 0x0F1A, + PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_0 = 0x0F1B, + PREV_SHADOW_RESULT_CORE__SPARE_0 = 0x0F1C, + RESULT__DEBUG_STATUS = 0x0F20, + RESULT__DEBUG_STAGE = 0x0F21, + GPH__SYSTEM__THRESH_RATE_HIGH = 0x0F24, + GPH__SYSTEM__THRESH_RATE_HIGH_HI = 0x0F24, + GPH__SYSTEM__THRESH_RATE_HIGH_LO = 0x0F25, + GPH__SYSTEM__THRESH_RATE_LOW = 0x0F26, + GPH__SYSTEM__THRESH_RATE_LOW_HI = 0x0F26, + GPH__SYSTEM__THRESH_RATE_LOW_LO = 0x0F27, + GPH__SYSTEM__INTERRUPT_CONFIG_GPIO = 0x0F28, + GPH__DSS_CONFIG__ROI_MODE_CONTROL = 0x0F2F, + GPH__DSS_CONFIG__MANUAL_EFFECTIVE_SPADS_SELECT = 0x0F30, + GPH__DSS_CONFIG__MANUAL_EFFECTIVE_SPADS_SELECT_HI = 0x0F30, + GPH__DSS_CONFIG__MANUAL_EFFECTIVE_SPADS_SELECT_LO = 0x0F31, + GPH__DSS_CONFIG__MANUAL_BLOCK_SELECT = 0x0F32, + GPH__DSS_CONFIG__MAX_SPADS_LIMIT = 0x0F33, + GPH__DSS_CONFIG__MIN_SPADS_LIMIT = 0x0F34, + GPH__MM_CONFIG__TIMEOUT_MACROP_A_HI = 0x0F36, + GPH__MM_CONFIG__TIMEOUT_MACROP_A_LO = 0x0F37, + GPH__MM_CONFIG__TIMEOUT_MACROP_B_HI = 0x0F38, + GPH__MM_CONFIG__TIMEOUT_MACROP_B_LO = 0x0F39, + GPH__RANGE_CONFIG__TIMEOUT_MACROP_A_HI = 0x0F3A, + GPH__RANGE_CONFIG__TIMEOUT_MACROP_A_LO = 0x0F3B, + GPH__RANGE_CONFIG__VCSEL_PERIOD_A = 0x0F3C, + GPH__RANGE_CONFIG__VCSEL_PERIOD_B = 0x0F3D, + GPH__RANGE_CONFIG__TIMEOUT_MACROP_B_HI = 0x0F3E, + GPH__RANGE_CONFIG__TIMEOUT_MACROP_B_LO = 0x0F3F, + GPH__RANGE_CONFIG__SIGMA_THRESH = 0x0F40, + GPH__RANGE_CONFIG__SIGMA_THRESH_HI = 0x0F40, + GPH__RANGE_CONFIG__SIGMA_THRESH_LO = 0x0F41, + GPH__RANGE_CONFIG__MIN_COUNT_RATE_RTN_LIMIT_MCPS = 0x0F42, + GPH__RANGE_CONFIG__MIN_COUNT_RATE_RTN_LIMIT_MCPS_HI = 0x0F42, + GPH__RANGE_CONFIG__MIN_COUNT_RATE_RTN_LIMIT_MCPS_LO = 0x0F43, + GPH__RANGE_CONFIG__VALID_PHASE_LOW = 0x0F44, + GPH__RANGE_CONFIG__VALID_PHASE_HIGH = 0x0F45, + FIRMWARE__INTERNAL_STREAM_COUNT_DIV = 0x0F46, + FIRMWARE__INTERNAL_STREAM_COUNTER_VAL = 0x0F47, + DSS_CALC__ROI_CTRL = 0x0F54, + DSS_CALC__SPARE_1 = 0x0F55, + DSS_CALC__SPARE_2 = 0x0F56, + DSS_CALC__SPARE_3 = 0x0F57, + DSS_CALC__SPARE_4 = 0x0F58, + DSS_CALC__SPARE_5 = 0x0F59, + DSS_CALC__SPARE_6 = 0x0F5A, + DSS_CALC__SPARE_7 = 0x0F5B, + DSS_CALC__USER_ROI_SPAD_EN_0 = 0x0F5C, + DSS_CALC__USER_ROI_SPAD_EN_1 = 0x0F5D, + DSS_CALC__USER_ROI_SPAD_EN_2 = 0x0F5E, + DSS_CALC__USER_ROI_SPAD_EN_3 = 0x0F5F, + DSS_CALC__USER_ROI_SPAD_EN_4 = 0x0F60, + DSS_CALC__USER_ROI_SPAD_EN_5 = 0x0F61, + DSS_CALC__USER_ROI_SPAD_EN_6 = 0x0F62, + DSS_CALC__USER_ROI_SPAD_EN_7 = 0x0F63, + DSS_CALC__USER_ROI_SPAD_EN_8 = 0x0F64, + DSS_CALC__USER_ROI_SPAD_EN_9 = 0x0F65, + DSS_CALC__USER_ROI_SPAD_EN_10 = 0x0F66, + DSS_CALC__USER_ROI_SPAD_EN_11 = 0x0F67, + DSS_CALC__USER_ROI_SPAD_EN_12 = 0x0F68, + DSS_CALC__USER_ROI_SPAD_EN_13 = 0x0F69, + DSS_CALC__USER_ROI_SPAD_EN_14 = 0x0F6A, + DSS_CALC__USER_ROI_SPAD_EN_15 = 0x0F6B, + DSS_CALC__USER_ROI_SPAD_EN_16 = 0x0F6C, + DSS_CALC__USER_ROI_SPAD_EN_17 = 0x0F6D, + DSS_CALC__USER_ROI_SPAD_EN_18 = 0x0F6E, + DSS_CALC__USER_ROI_SPAD_EN_19 = 0x0F6F, + DSS_CALC__USER_ROI_SPAD_EN_20 = 0x0F70, + DSS_CALC__USER_ROI_SPAD_EN_21 = 0x0F71, + DSS_CALC__USER_ROI_SPAD_EN_22 = 0x0F72, + DSS_CALC__USER_ROI_SPAD_EN_23 = 0x0F73, + DSS_CALC__USER_ROI_SPAD_EN_24 = 0x0F74, + DSS_CALC__USER_ROI_SPAD_EN_25 = 0x0F75, + DSS_CALC__USER_ROI_SPAD_EN_26 = 0x0F76, + DSS_CALC__USER_ROI_SPAD_EN_27 = 0x0F77, + DSS_CALC__USER_ROI_SPAD_EN_28 = 0x0F78, + DSS_CALC__USER_ROI_SPAD_EN_29 = 0x0F79, + DSS_CALC__USER_ROI_SPAD_EN_30 = 0x0F7A, + DSS_CALC__USER_ROI_SPAD_EN_31 = 0x0F7B, + DSS_CALC__USER_ROI_0 = 0x0F7C, + DSS_CALC__USER_ROI_1 = 0x0F7D, + DSS_CALC__MODE_ROI_0 = 0x0F7E, + DSS_CALC__MODE_ROI_1 = 0x0F7F, + SIGMA_ESTIMATOR_CALC__SPARE_0 = 0x0F80, + VHV_RESULT__PEAK_SIGNAL_RATE_MCPS = 0x0F82, + VHV_RESULT__PEAK_SIGNAL_RATE_MCPS_HI = 0x0F82, + VHV_RESULT__PEAK_SIGNAL_RATE_MCPS_LO = 0x0F83, + VHV_RESULT__SIGNAL_TOTAL_EVENTS_REF = 0x0F84, + VHV_RESULT__SIGNAL_TOTAL_EVENTS_REF_3 = 0x0F84, + VHV_RESULT__SIGNAL_TOTAL_EVENTS_REF_2 = 0x0F85, + VHV_RESULT__SIGNAL_TOTAL_EVENTS_REF_1 = 0x0F86, + VHV_RESULT__SIGNAL_TOTAL_EVENTS_REF_0 = 0x0F87, + PHASECAL_RESULT__PHASE_OUTPUT_REF = 0x0F88, + PHASECAL_RESULT__PHASE_OUTPUT_REF_HI = 0x0F88, + PHASECAL_RESULT__PHASE_OUTPUT_REF_LO = 0x0F89, + DSS_RESULT__TOTAL_RATE_PER_SPAD = 0x0F8A, + DSS_RESULT__TOTAL_RATE_PER_SPAD_HI = 0x0F8A, + DSS_RESULT__TOTAL_RATE_PER_SPAD_LO = 0x0F8B, + DSS_RESULT__ENABLED_BLOCKS = 0x0F8C, + DSS_RESULT__NUM_REQUESTED_SPADS = 0x0F8E, + DSS_RESULT__NUM_REQUESTED_SPADS_HI = 0x0F8E, + DSS_RESULT__NUM_REQUESTED_SPADS_LO = 0x0F8F, + MM_RESULT__INNER_INTERSECTION_RATE = 0x0F92, + MM_RESULT__INNER_INTERSECTION_RATE_HI = 0x0F92, + MM_RESULT__INNER_INTERSECTION_RATE_LO = 0x0F93, + MM_RESULT__OUTER_COMPLEMENT_RATE = 0x0F94, + MM_RESULT__OUTER_COMPLEMENT_RATE_HI = 0x0F94, + MM_RESULT__OUTER_COMPLEMENT_RATE_LO = 0x0F95, + MM_RESULT__TOTAL_OFFSET = 0x0F96, + MM_RESULT__TOTAL_OFFSET_HI = 0x0F96, + MM_RESULT__TOTAL_OFFSET_LO = 0x0F97, + XTALK_CALC__XTALK_FOR_ENABLED_SPADS = 0x0F98, + XTALK_CALC__XTALK_FOR_ENABLED_SPADS_3 = 0x0F98, + XTALK_CALC__XTALK_FOR_ENABLED_SPADS_2 = 0x0F99, + XTALK_CALC__XTALK_FOR_ENABLED_SPADS_1 = 0x0F9A, + XTALK_CALC__XTALK_FOR_ENABLED_SPADS_0 = 0x0F9B, + XTALK_RESULT__AVG_XTALK_USER_ROI_KCPS = 0x0F9C, + XTALK_RESULT__AVG_XTALK_USER_ROI_KCPS_3 = 0x0F9C, + XTALK_RESULT__AVG_XTALK_USER_ROI_KCPS_2 = 0x0F9D, + XTALK_RESULT__AVG_XTALK_USER_ROI_KCPS_1 = 0x0F9E, + XTALK_RESULT__AVG_XTALK_USER_ROI_KCPS_0 = 0x0F9F, + XTALK_RESULT__AVG_XTALK_MM_INNER_ROI_KCPS = 0x0FA0, + XTALK_RESULT__AVG_XTALK_MM_INNER_ROI_KCPS_3 = 0x0FA0, + XTALK_RESULT__AVG_XTALK_MM_INNER_ROI_KCPS_2 = 0x0FA1, + XTALK_RESULT__AVG_XTALK_MM_INNER_ROI_KCPS_1 = 0x0FA2, + XTALK_RESULT__AVG_XTALK_MM_INNER_ROI_KCPS_0 = 0x0FA3, + XTALK_RESULT__AVG_XTALK_MM_OUTER_ROI_KCPS = 0x0FA4, + XTALK_RESULT__AVG_XTALK_MM_OUTER_ROI_KCPS_3 = 0x0FA4, + XTALK_RESULT__AVG_XTALK_MM_OUTER_ROI_KCPS_2 = 0x0FA5, + XTALK_RESULT__AVG_XTALK_MM_OUTER_ROI_KCPS_1 = 0x0FA6, + XTALK_RESULT__AVG_XTALK_MM_OUTER_ROI_KCPS_0 = 0x0FA7, + RANGE_RESULT__ACCUM_PHASE = 0x0FA8, + RANGE_RESULT__ACCUM_PHASE_3 = 0x0FA8, + RANGE_RESULT__ACCUM_PHASE_2 = 0x0FA9, + RANGE_RESULT__ACCUM_PHASE_1 = 0x0FAA, + RANGE_RESULT__ACCUM_PHASE_0 = 0x0FAB, + RANGE_RESULT__OFFSET_CORRECTED_RANGE = 0x0FAC, + RANGE_RESULT__OFFSET_CORRECTED_RANGE_HI = 0x0FAC, + RANGE_RESULT__OFFSET_CORRECTED_RANGE_LO = 0x0FAD, + SHADOW_PHASECAL_RESULT__VCSEL_START = 0x0FAE, + SHADOW_RESULT__INTERRUPT_STATUS = 0x0FB0, + SHADOW_RESULT__RANGE_STATUS = 0x0FB1, + SHADOW_RESULT__REPORT_STATUS = 0x0FB2, + SHADOW_RESULT__STREAM_COUNT = 0x0FB3, + SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0 = 0x0FB4, + SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0_HI = 0x0FB4, + SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0_LO = 0x0FB5, + SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0 = 0x0FB6, + SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0_HI = 0x0FB6, + SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0_LO = 0x0FB7, + SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD0 = 0x0FB8, + SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD0_HI = 0x0FB8, + SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD0_LO = 0x0FB9, + SHADOW_RESULT__SIGMA_SD0 = 0x0FBA, + SHADOW_RESULT__SIGMA_SD0_HI = 0x0FBA, + SHADOW_RESULT__SIGMA_SD0_LO = 0x0FBB, + SHADOW_RESULT__PHASE_SD0 = 0x0FBC, + SHADOW_RESULT__PHASE_SD0_HI = 0x0FBC, + SHADOW_RESULT__PHASE_SD0_LO = 0x0FBD, + SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0 = 0x0FBE, + SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0_HI = 0x0FBE, + SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0_LO = 0x0FBF, + SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0 = 0x0FC0, + SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0_HI = 0x0FC0, + SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0_LO = 0x0FC1, + SHADOW_RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0 = 0x0FC2, + SHADOW_RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0_HI = 0x0FC2, + SHADOW_RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0_LO = 0x0FC3, + SHADOW_RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0 = 0x0FC4, + SHADOW_RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0_HI = 0x0FC4, + SHADOW_RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0_LO = 0x0FC5, + SHADOW_RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0 = 0x0FC6, + SHADOW_RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0_HI = 0x0FC6, + SHADOW_RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0_LO = 0x0FC7, + SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1 = 0x0FC8, + SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1_HI = 0x0FC8, + SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1_LO = 0x0FC9, + SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1 = 0x0FCA, + SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1_HI = 0x0FCA, + SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1_LO = 0x0FCB, + SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD1 = 0x0FCC, + SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD1_HI = 0x0FCC, + SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD1_LO = 0x0FCD, + SHADOW_RESULT__SIGMA_SD1 = 0x0FCE, + SHADOW_RESULT__SIGMA_SD1_HI = 0x0FCE, + SHADOW_RESULT__SIGMA_SD1_LO = 0x0FCF, + SHADOW_RESULT__PHASE_SD1 = 0x0FD0, + SHADOW_RESULT__PHASE_SD1_HI = 0x0FD0, + SHADOW_RESULT__PHASE_SD1_LO = 0x0FD1, + SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1 = 0x0FD2, + SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1_HI = 0x0FD2, + SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1_LO = 0x0FD3, + SHADOW_RESULT__SPARE_0_SD1 = 0x0FD4, + SHADOW_RESULT__SPARE_0_SD1_HI = 0x0FD4, + SHADOW_RESULT__SPARE_0_SD1_LO = 0x0FD5, + SHADOW_RESULT__SPARE_1_SD1 = 0x0FD6, + SHADOW_RESULT__SPARE_1_SD1_HI = 0x0FD6, + SHADOW_RESULT__SPARE_1_SD1_LO = 0x0FD7, + SHADOW_RESULT__SPARE_2_SD1 = 0x0FD8, + SHADOW_RESULT__SPARE_2_SD1_HI = 0x0FD8, + SHADOW_RESULT__SPARE_2_SD1_LO = 0x0FD9, + SHADOW_RESULT__SPARE_3_SD1 = 0x0FDA, + SHADOW_RESULT__THRESH_INFO = 0x0FDB, + SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0 = 0x0FDC, + SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_3 = 0x0FDC, + SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_2 = 0x0FDD, + SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_1 = 0x0FDE, + SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_0 = 0x0FDF, + SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0 = 0x0FE0, + SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_3 = 0x0FE0, + SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_2 = 0x0FE1, + SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_1 = 0x0FE2, + SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_0 = 0x0FE3, + SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0 = 0x0FE4, + SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_3 = 0x0FE4, + SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_2 = 0x0FE5, + SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_1 = 0x0FE6, + SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_0 = 0x0FE7, + SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0 = 0x0FE8, + SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_3 = 0x0FE8, + SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_2 = 0x0FE9, + SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_1 = 0x0FEA, + SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_0 = 0x0FEB, + SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1 = 0x0FEC, + SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_3 = 0x0FEC, + SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_2 = 0x0FED, + SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_1 = 0x0FEE, + SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_0 = 0x0FEF, + SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1 = 0x0FF0, + SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_3 = 0x0FF0, + SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_2 = 0x0FF1, + SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_1 = 0x0FF2, + SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_0 = 0x0FF3, + SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1 = 0x0FF4, + SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_3 = 0x0FF4, + SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_2 = 0x0FF5, + SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_1 = 0x0FF6, + SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_0 = 0x0FF7, + SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1 = 0x0FF8, + SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_3 = 0x0FF8, + SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_2 = 0x0FF9, + SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_1 = 0x0FFA, + SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_0 = 0x0FFB, + SHADOW_RESULT_CORE__SPARE_0 = 0x0FFC, + SHADOW_PHASECAL_RESULT__REFERENCE_PHASE_HI = 0x0FFE, + SHADOW_PHASECAL_RESULT__REFERENCE_PHASE_LO = 0x0FFF, + }; + + enum DistanceMode { Short, Medium, Long, Unknown }; + + enum RangeStatus : uint8_t + { + RangeValid = 0, + + // "sigma estimator check is above the internal defined threshold" + // (sigma = standard deviation of measurement) + SigmaFail = 1, + + // "signal value is below the internal defined threshold" + SignalFail = 2, + + // "Target is below minimum detection threshold." + RangeValidMinRangeClipped = 3, + + // "phase is out of bounds" + // (nothing detected in range; try a longer distance mode if applicable) + OutOfBoundsFail = 4, + + // "HW or VCSEL failure" + HardwareFail = 5, + + // "The Range is valid but the wraparound check has not been done." + RangeValidNoWrapCheckFail = 6, + + // "Wrapped target, not matching phases" + // "no matching phase in other VCSEL period timing." + WrapTargetFail = 7, + + // "Internal algo underflow or overflow in lite ranging." + // ProcessingFail = 8: not used in API + + // "Specific to lite ranging." + // should never occur with this lib (which uses low power auto ranging, + // as the API does) + XtalkSignalFail = 9, + + // "1st interrupt when starting ranging in back to back mode. Ignore + // data." + // should never occur with this lib + SynchronizationInt = 10, // (the API spells this "syncronisation") + + // "All Range ok but object is result of multiple pulses merging together. + // Used by RQL for merged pulse detection" + // RangeValid MergedPulse = 11: not used in API + + // "Used by RQL as different to phase fail." + // TargetPresentLackOfSignal = 12: + + // "Target is below minimum detection threshold." + MinRangeFail = 13, + + // "The reported range is invalid" + // RangeInvalid = 14: can't actually be returned by API (range can never become negative, even after correction) + + // "No Update." + None = 255, + }; + + struct RangingData + { + uint16_t range_mm; + RangeStatus range_status; + float peak_signal_count_rate_MCPS; + float ambient_count_rate_MCPS; + }; + + RangingData ranging_data; + + uint8_t last_status; // status of last I2C transmission + + VL53L1X(); + + void setAddress(uint8_t new_addr); + uint8_t getAddress() { return address; } + + bool init(bool io_2v8 = true); + + void writeReg(uint16_t reg, uint8_t value); + void writeReg16Bit(uint16_t reg, uint16_t value); + void writeReg32Bit(uint16_t reg, uint32_t value); + uint8_t readReg(regAddr reg); + uint16_t readReg16Bit(uint16_t reg); + uint32_t readReg32Bit(uint16_t reg); + + bool setDistanceMode(DistanceMode mode); + DistanceMode getDistanceMode() { return distance_mode; } + + bool setMeasurementTimingBudget(uint32_t budget_us); + uint32_t getMeasurementTimingBudget(); + + void startContinuous(uint32_t period_ms); + void stopContinuous(); + uint16_t read(bool blocking = true); + uint16_t readRangeContinuousMillimeters(bool blocking = true) { return read(blocking); } // alias of read() + + // check if sensor has new reading available + // assumes interrupt is active low (GPIO_HV_MUX__CTRL bit 4 is 1) + bool dataReady() { return (readReg(GPIO__TIO_HV_STATUS) & 0x01) == 0; } + + static const char * rangeStatusToString(RangeStatus status); + + void setTimeout(uint16_t timeout) { io_timeout = timeout; } + uint16_t getTimeout() { return io_timeout; } + bool timeoutOccurred(); + + private: + + // The Arduino two-wire interface uses a 7-bit number for the address, + // and sets the last bit correctly based on reads and writes + static const uint8_t AddressDefault = 0b0101001; + + // value used in measurement timing budget calculations + // assumes PresetMode is LOWPOWER_AUTONOMOUS + // + // vhv = LOWPOWER_AUTO_VHV_LOOP_DURATION_US + LOWPOWERAUTO_VHV_LOOP_BOUND + // (tuning parm default) * LOWPOWER_AUTO_VHV_LOOP_DURATION_US + // = 245 + 3 * 245 = 980 + // TimingGuard = LOWPOWER_AUTO_OVERHEAD_BEFORE_A_RANGING + + // LOWPOWER_AUTO_OVERHEAD_BETWEEN_A_B_RANGING + vhv + // = 1448 + 2100 + 980 = 4528 + static const uint32_t TimingGuard = 4528; + + // value in DSS_CONFIG__TARGET_TOTAL_RATE_MCPS register, used in DSS + // calculations + static const uint16_t TargetRate = 0x0A00; + + // for storing values read from RESULT__RANGE_STATUS (0x0089) + // through RESULT__PEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0_LOW + // (0x0099) + struct ResultBuffer + { + uint8_t range_status; + // uint8_t report_status: not used + uint8_t stream_count; + uint16_t dss_actual_effective_spads_sd0; + // uint16_t peak_signal_count_rate_mcps_sd0: not used + uint16_t ambient_count_rate_mcps_sd0; + // uint16_t sigma_sd0: not used + // uint16_t phase_sd0: not used + uint16_t final_crosstalk_corrected_range_mm_sd0; + uint16_t peak_signal_count_rate_crosstalk_corrected_mcps_sd0; + }; + + // making this static would save RAM for multiple instances as long as there + // aren't multiple sensors being read at the same time (e.g. on separate + // I2C buses) + ResultBuffer results; + + uint8_t address; + + uint16_t io_timeout; + bool did_timeout; + uint16_t timeout_start_ms; + + uint16_t fast_osc_frequency; + uint16_t osc_calibrate_val; + + bool calibrated; + uint8_t saved_vhv_init; + uint8_t saved_vhv_timeout; + + DistanceMode distance_mode; + + // Record the current time to check an upcoming timeout against + void startTimeout() { timeout_start_ms = millis(); } + + // Check if timeout is enabled (set to nonzero value) and has expired + bool checkTimeoutExpired() {return (io_timeout > 0) && ((uint16_t)(millis() - timeout_start_ms) > io_timeout); } + + void setupManualCalibration(); + void readResults(); + void updateDSS(); + void getRangingData(); + + static uint32_t decodeTimeout(uint16_t reg_val); + static uint16_t encodeTimeout(uint32_t timeout_mclks); + static uint32_t timeoutMclksToMicroseconds(uint32_t timeout_mclks, uint32_t macro_period_us); + static uint32_t timeoutMicrosecondsToMclks(uint32_t timeout_us, uint32_t macro_period_us); + uint32_t calcMacroPeriod(uint8_t vcsel_period); + + // Convert count rate from fixed point 9.7 format to float + float countRateFixedToFloat(uint16_t count_rate_fixed) { return (float)count_rate_fixed / (1 << 7); } +}; \ No newline at end of file diff --git a/lib/vl53l1x-arduino-1.01/examples/Continuous/Continuous.ino b/lib/vl53l1x-arduino-1.01/examples/Continuous/Continuous.ino new file mode 100644 index 000000000..e910466fa --- /dev/null +++ b/lib/vl53l1x-arduino-1.01/examples/Continuous/Continuous.ino @@ -0,0 +1,44 @@ +/* +This example shows how to take simple range measurements with the VL53L1X. The +range readings are in units of mm. +*/ + +#include +#include + +VL53L1X sensor; + +void setup() +{ + Serial.begin(115200); + Wire.begin(); + Wire.setClock(400000); // use 400 kHz I2C + + sensor.setTimeout(500); + if (!sensor.init()) + { + Serial.println("Failed to detect and initialize sensor!"); + while (1); + } + + // Use long distance mode and allow up to 50000 us (50 ms) for a measurement. + // You can change these settings to adjust the performance of the sensor, but + // the minimum timing budget is 20 ms for short distance mode and 33 ms for + // medium and long distance modes. See the VL53L1X datasheet for more + // information on range and timing limits. + sensor.setDistanceMode(VL53L1X::Long); + sensor.setMeasurementTimingBudget(50000); + + // Start continuous readings at a rate of one measurement every 50 ms (the + // inter-measurement period). This period should be at least as long as the + // timing budget. + sensor.startContinuous(50); +} + +void loop() +{ + Serial.print(sensor.read()); + if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); } + + Serial.println(); +} diff --git a/lib/vl53l1x-arduino-1.01/examples/ContinuousWithDetails/ContinuousWithDetails.ino b/lib/vl53l1x-arduino-1.01/examples/ContinuousWithDetails/ContinuousWithDetails.ino new file mode 100644 index 000000000..938b79bfc --- /dev/null +++ b/lib/vl53l1x-arduino-1.01/examples/ContinuousWithDetails/ContinuousWithDetails.ino @@ -0,0 +1,55 @@ +/* +This example takes range measurements with the VL53L1X and displays additional +details (status and signal/ambient rates) for each measurement, which can help +you determine whether the sensor is operating normally and the reported range is +valid. The range is in units of mm, and the rates are in units of MCPS (mega +counts per second). +*/ + +#include +#include + +VL53L1X sensor; + +void setup() +{ + Serial.begin(115200); + Wire.begin(); + Wire.setClock(400000); // use 400 kHz I2C + + sensor.setTimeout(500); + if (!sensor.init()) + { + Serial.println("Failed to detect and initialize sensor!"); + while (1); + } + + // Use long distance mode and allow up to 50000 us (50 ms) for a measurement. + // You can change these settings to adjust the performance of the sensor, but + // the minimum timing budget is 20 ms for short distance mode and 33 ms for + // medium and long distance modes. See the VL53L1X datasheet for more + // information on range and timing limits. + sensor.setDistanceMode(VL53L1X::Long); + sensor.setMeasurementTimingBudget(50000); + + // Start continuous readings at a rate of one measurement every 50 ms (the + // inter-measurement period). This period should be at least as long as the + // timing budget. + sensor.startContinuous(50); +} + +void loop() +{ + sensor.read(); + + Serial.print("range: "); + Serial.print(sensor.ranging_data.range_mm); + Serial.print("\tstatus: "); + Serial.print(VL53L1X::rangeStatusToString(sensor.ranging_data.range_status)); + Serial.print("\tpeak signal: "); + Serial.print(sensor.ranging_data.peak_signal_count_rate_MCPS); + Serial.print("\tambient: "); + Serial.print(sensor.ranging_data.ambient_count_rate_MCPS); + + Serial.println(); +} \ No newline at end of file diff --git a/lib/vl53l1x-arduino-1.01/keywords.txt b/lib/vl53l1x-arduino-1.01/keywords.txt new file mode 100644 index 000000000..32e3d3fa3 --- /dev/null +++ b/lib/vl53l1x-arduino-1.01/keywords.txt @@ -0,0 +1,41 @@ +VL53L1X KEYWORD1 + +setAddress KEYWORD2 +getAddress KEYWORD2 +init KEYWORD2 +writeReg KEYWORD2 +writeReg16Bit KEYWORD2 +writeReg32Bit KEYWORD2 +readReg KEYWORD2 +readReg16Bit KEYWORD2 +readReg32Bit KEYWORD2 +setDistanceMode KEYWORD2 +getDistanceMode KEYWORD2 +setMeasurementTimingBudget KEYWORD2 +getMeasurementTimingBudget KEYWORD2 +startContinuous KEYWORD2 +stopContinuous KEYWORD2 +read KEYWORD2 +readRangeContinuousMillimeters KEYWORD2 +rangeStatusToString KEYWORD2 +setTimeout KEYWORD2 +getTimeout KEYWORD2 +timeoutOccurred KEYWORD2 + +Short LITERAL1 +Medium LITERAL1 +Long LITERAL1 +Unknown LITERAL1 + +RangeValid LITERAL1 +SigmaFail LITERAL1 +SignalFail LITERAL1 +RangeValidMinRangeClipped LITERAL1 +OutOfBoundsFail LITERAL1 +HardwareFail LITERAL1 +RangeValidNoWrapCheckFail LITERAL1 +WrapTargetFail LITERAL1 +XtalkSignalFail LITERAL1 +SyncronisationInt LITERAL1 +MinRangeFail LITERAL1 +None LITERAL1 \ No newline at end of file diff --git a/lib/vl53l1x-arduino-1.01/library.properties b/lib/vl53l1x-arduino-1.01/library.properties new file mode 100644 index 000000000..1bf06dae9 --- /dev/null +++ b/lib/vl53l1x-arduino-1.01/library.properties @@ -0,0 +1,9 @@ +name=VL53L1X +version=1.0.1 +author=Pololu +maintainer=Pololu +sentence=VL53L1X distance sensor library +paragraph=This is a library for the Arduino IDE that helps interface with ST's VL53L1X distance sensor. +category=Sensors +url=https://github.com/pololu/vl53l1x-arduino +architectures=* diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 5f94c5fc0..d6df82729 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -538,6 +538,7 @@ // #define USE_SPS30 // [I2cDriver30] Enable Sensiron SPS30 particle sensor (I2C address 0x69) (+1.7 code) #define USE_ADE7953 // [I2cDriver7] Enable ADE7953 Energy monitor as used on Shelly 2.5 (I2C address 0x38) (+1k5) // #define USE_VL53L0X // [I2cDriver31] Enable VL53L0x time of flight sensor (I2C address 0x29) (+4k code) +// #define USE_VL53L1X // [I2cDriver53] Enable support for VL53L1X sensor (I2C address 0x29) using Pololu VL53L1X library (+2k9 code) // #define USE_MLX90614 // [I2cDriver32] Enable MLX90614 ir temp sensor (I2C address 0x5a) (+0.6k code) // #define USE_CHIRP // [I2cDriver33] Enable CHIRP soil moisture sensor (variable I2C address, default 0x20) // #define USE_PAJ7620 // [I2cDriver34] Enable PAJ7620 gesture sensor (I2C address 0x73) (+2.5k code) diff --git a/tasmota/support_features.ino b/tasmota/support_features.ino index 8707650c0..e565eeac9 100644 --- a/tasmota/support_features.ino +++ b/tasmota/support_features.ino @@ -598,7 +598,9 @@ void GetFeatures(void) #ifdef USE_DYP feature6 |= 0x00400000; // xsns_76_dyp.ino #endif -// feature6 |= 0x00800000; +#if defined(USE_I2C) && defined(USE_VL53L1X) + feature6 |= 0x00800000; // xsns_77_vl53l1x.ino +#endif // feature6 |= 0x01000000; // feature6 |= 0x02000000; diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index 25da1c180..f94844bf9 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -113,6 +113,7 @@ //#define USE_SPS30 // Enable Sensiron SPS30 particle sensor (I2C address 0x69) (+1.7 code) #define USE_ADE7953 // Enable ADE7953 Energy monitor as used on Shelly 2.5 (I2C address 0x38) (+1k5) //#define USE_VL53L0X // Enable VL53L0x time of flight sensor (I2C address 0x29) (+4k code) +//#define USE_VL53L1X // Enable support for VL53L1X sensor (I2C address 0x29) using Pololu VL53L1X library (+2k9 code) //#define USE_MLX90614 // Enable MLX90614 ir temp sensor (I2C address 0x5a) (+0.6k code) //#define USE_CHIRP // Enable CHIRP soil moisture sensor (variable I2C address, default 0x20) //#define USE_PAJ7620 // Enable PAJ7620 gesture sensor (I2C address 0x73) (+2.5k code) diff --git a/tasmota/xsns_77_vl53l1x.ino b/tasmota/xsns_77_vl53l1x.ino new file mode 100644 index 000000000..2176ee9ed --- /dev/null +++ b/tasmota/xsns_77_vl53l1x.ino @@ -0,0 +1,128 @@ +/* + xsns_77_vl53l1x.ino - VL53L1X + + Copyright (C) 2018 Theo Arends, Rui Marinho and Johann Obermeier + + 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 . +*/ + +#ifdef USE_I2C +#ifdef USE_VL53L1X +/*********************************************************************************************\ + * VL53L1X + * + * Source: + * + * I2C Address: 0x29 +\*********************************************************************************************/ + +#define XSNS_77 77 +#define XI2C_53 53 // See I2CDEVICES.md + +#include "VL53L1X.h" +VL53L1X vl53l1x = VL53L1X(); // create object copy + +#define VL53L1X_ADDRESS 0x29 + +struct { + bool ready = false; + uint16_t distance = 0; +} vl53l1x_sensors; + +/********************************************************************************************/ + +void Vl53l1Detect(void) { + if (!I2cSetDevice(VL53L1X_ADDRESS)) { return; } + if (!vl53l1x.init()) { return; } + + I2cSetActiveFound(vl53l1x.getAddress(), "VL53L1X"); + vl53l1x.setTimeout(500); + vl53l1x.setDistanceMode(VL53L1X::Long); // could be Short, Medium, Long + vl53l1x.setMeasurementTimingBudget(140000); + vl53l1x.startContinuous(50); + vl53l1x_sensors.ready = true; +} + +#ifdef USE_WEBSERVER +const char HTTP_SNS_VL53L1X[] PROGMEM = + "{s}VL53L1X " D_DISTANCE "{m}%d" D_UNIT_MILLIMETER "{e}"; // {s} = , {m} = , {e} = +#endif // USE_WEBSERVER + +void Vl53l1Every_250MSecond(void) { + // every 250 ms + uint16_t dist = vl53l1x.read(); + if (!dist || dist > 4000) { + dist = 9999; + } + vl53l1x_sensors.distance = dist; +} + +#ifdef USE_DOMOTICZ +void Vl53l1Every_Second(void) { + DomoticzSensor(DZ_ILLUMINANCE, vl53l1x_sensors.distance); +} +#endif // USE_DOMOTICZ + +void Vl53l1Show(boolean json) { + if (json) { +#ifdef USE_DOMOTICZ + if (0 == tele_period) { + DomoticzSensor(DZ_ILLUMINANCE, vl53l1x_sensors.distance); + } +#endif // USE_DOMOTICZ + ResponseAppend_P(PSTR(",\"VL53L1X\":{\"" D_JSON_DISTANCE "\":%d}"), vl53l1x_sensors.distance); +#ifdef USE_WEBSERVER + } else { + WSContentSend_PD(HTTP_SNS_VL53L1X, vl53l1x_sensors.distance); +#endif + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +bool Xsns77(byte function) +{ + if (!I2cEnabled(XI2C_53)) { return false; } + bool result = false; + + if (FUNC_INIT == function) { + Vl53l1Detect(); + } + else if (vl53l1x_sensors.ready) { + switch (function) { + case FUNC_EVERY_250_MSECOND: + Vl53l1Every_250MSecond(); + break; +#ifdef USE_DOMOTICZ + case FUNC_EVERY_SECOND: + Vl53l1Every_Second(); + break; +#endif // USE_DOMOTICZ + case FUNC_JSON_APPEND: + Vl53l1Show(1); + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_SENSOR: + Vl53l1Show(0); + break; +#endif // USE_WEBSERVER + } + } + return result; +} + +#endif // USE_VL53L1X +#endif // USE_I2C From f6ef721e814e1579f0a242b2918e57f55357915e Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 20 Sep 2020 18:01:14 +0200 Subject: [PATCH 003/119] Use specific commit for ESP32 stage because with later ones Tasmota32 does not compile. --- platformio_override_sample.ini | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index dde700a23..444a5097c 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -162,7 +162,8 @@ build_flags = ${esp82xx_defaults.build_flags} [core32_stage] platform_packages = tool-esptoolpy@1.20800.0 - arduino-esp32@https://github.com/espressif/arduino-esp32.git#esp32s2 + ; latest working commit + framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#c09ec5bd3d35ba7dfc135755ab300e2b45416def ; *** Debug version used for PlatformIO Home Project Inspection From 20e8a4cfc542ae7fa7ace47c13b25faa92d41715 Mon Sep 17 00:00:00 2001 From: Federico Leoni Date: Sun, 20 Sep 2020 22:29:02 -0300 Subject: [PATCH 004/119] MAC address VAR for rules --- tasmota/xdrv_10_rules.ino | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tasmota/xdrv_10_rules.ino b/tasmota/xdrv_10_rules.ino index c377c4a91..4476fc2b0 100644 --- a/tasmota/xdrv_10_rules.ino +++ b/tasmota/xdrv_10_rules.ino @@ -719,9 +719,13 @@ bool RuleSetProcess(uint8_t rule_set, String &event_saved) RulesVarReplace(commands, F("%UPTIME%"), String(MinutesUptime())); RulesVarReplace(commands, F("%TIMESTAMP%"), GetDateAndTime(DT_LOCAL)); RulesVarReplace(commands, F("%TOPIC%"), mqtt_topic); - char unique_id[7]; - snprintf_P(unique_id, sizeof(unique_id), PSTR("%06X"), ESP_getChipId()); - RulesVarReplace(commands, F("%DEVICEID%"), unique_id); + snprintf_P(stemp, sizeof(stemp), PSTR("%06X"), ESP_getChipId()); + RulesVarReplace(commands, F("%DEVICEID%"), stemp); + char macaddr[13]; + String mac_address = WiFi.macAddress(); + mac_address.replace(":", ""); + snprintf_P(macaddr, sizeof(macaddr), PSTR("%s"), mac_address.c_str()); + RulesVarReplace(commands, F("%MACADDR%"), macaddr); #if defined(USE_TIMERS) && defined(USE_SUNRISE) RulesVarReplace(commands, F("%SUNRISE%"), String(SunMinutes(0))); RulesVarReplace(commands, F("%SUNSET%"), String(SunMinutes(1))); From 2ff756b3cc76982796fce5583efdfea7f8cd36ff Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 21 Sep 2020 21:49:32 +0200 Subject: [PATCH 005/119] Change replace ArduinoJson with JSMN for JSON parsing --- lib/jsmn-shadinger-1.0/README.md | 181 ++++++ lib/jsmn-shadinger-1.0/library.properties | 8 + lib/jsmn-shadinger-1.0/src/JsonParser.cpp | 524 ++++++++++++++++++ lib/jsmn-shadinger-1.0/src/JsonParser.h | 260 +++++++++ lib/jsmn-shadinger-1.0/src/JsonParser.hpp.gch | Bin 0 -> 2299028 bytes lib/jsmn-shadinger-1.0/src/jsmn.cpp | 449 +++++++++++++++ lib/jsmn-shadinger-1.0/src/jsmn.h | 118 ++++ lib/jsmn-shadinger-1.0/test/test-json.cpp | 55 ++ tasmota/CHANGELOG.md | 1 + tasmota/support.ino | 44 +- tasmota/support_json.ino | 2 + tasmota/xdrv_01_webserver.ino | 18 + tasmota/xdrv_05_irremote.ino | 14 + tasmota/xdrv_05_irremote_full.ino | 85 ++- tasmota/xdrv_09_timers.ino | 90 +++ tasmota/xdrv_10_rules.ino | 60 +- tasmota/xdrv_20_hue.ino | 65 ++- tasmota/xdrv_23_zigbee_1_headers.ino | 36 -- tasmota/xdrv_23_zigbee_2_devices.ino | 58 +- tasmota/xdrv_23_zigbee_3_hue.ino | 54 +- tasmota/xdrv_23_zigbee_A_impl.ino | 311 +++++------ 21 files changed, 2077 insertions(+), 356 deletions(-) create mode 100644 lib/jsmn-shadinger-1.0/README.md create mode 100644 lib/jsmn-shadinger-1.0/library.properties create mode 100644 lib/jsmn-shadinger-1.0/src/JsonParser.cpp create mode 100644 lib/jsmn-shadinger-1.0/src/JsonParser.h create mode 100644 lib/jsmn-shadinger-1.0/src/JsonParser.hpp.gch create mode 100644 lib/jsmn-shadinger-1.0/src/jsmn.cpp create mode 100644 lib/jsmn-shadinger-1.0/src/jsmn.h create mode 100644 lib/jsmn-shadinger-1.0/test/test-json.cpp diff --git a/lib/jsmn-shadinger-1.0/README.md b/lib/jsmn-shadinger-1.0/README.md new file mode 100644 index 000000000..f98503eb1 --- /dev/null +++ b/lib/jsmn-shadinger-1.0/README.md @@ -0,0 +1,181 @@ +# JSMN lightweight JSON parser for Tasmota + +Intro: + +## Benefits + +## How to use + +`{"Device":"0x1234","Power":true,"Temperature":25.5}` + +The JSON above is split into 8 tokens, and requires 32 bytes of dynamic memory. + +- Token 0: `OBJECT`, size=3: `{"Device":"0x1234","Power":true,"Temperature":25.5}` +- Token 1: `KEY`: `Device` +- Token 2: `STRING`: `0x1234` +- Token 3: `KEY`: `Power` +- Token 4: `BOOL_TRUE`: `true` +- Token 5: `KEY`: `Temperature` +- Token 6: `FLOAT`: `25.5` +- Token 7: `INVALID` + +If what you need is to parse a JSON Object for values with default values: +``` +#include "JsonParser.h" + +char json_buffer[] = "{\"Device\":\"0x1234\",\"Power\":true,\"Temperature\":25.6}"; +JsonParserObject root = JsonParser(json_buffer).getRootObject(); +if (!root) { ResponseCmndChar_P(PSTR("Invalid JSON")); return; } + +uint16_t d = root.getUInt(PSTR("DEVICE"), 0xFFFF); // case insensitive +bool b = root.getBool(PSTR("Power"), false); +float f = root.getFloat(PSTR("Temperature), -100); +``` + +Alternative pattern, if you want to test the existence of the attribute first: +``` +#include "JsonParser.h" + +char json_buffer[] = "{\"Device\":\"0x1234\",\"Power\":true,\"Temperature\":25.6}"; +JsonParserObject root = JsonParser(json_buffer).getRootObject(); +if (!root) { ResponseCmndChar_P(PSTR("Invalid JSON")); return; } + +JsonParserToken val = root[PSTR("DEVICE")]; +if (val) { + d = val.getUInt(); +} +val = root[PSTR("Power")]; +if (val) { + b = val.getBool(); +} +val = root[PSTR("Temperature)]; +if (val) { + f = val.getFloat(); +} +``` + +## Types and conversion + +JSMN relies on the concept of JSON Tokens `JsonParserToken`. Tokens do not hold any data, but point to token boundaries in JSON string instead. Every jsmn token has a type, which indicates the type of corresponding JSON token. JSMN for Tasmota extends the type from JSMN to ease further parsing. + +Types are: +- `INVALID` invalid token or end of stream, see Error Handling below +- `OBJECT` a JSON sub-object, `size()` contains the number of key/values of the object +- `ARRAY` a JSON array, `size()` contains the number of sub values +- `STRING` a JSON string, return the sub-string, unescaped, without surrounding quotes. UTF-8 is supported. +- `PRIMITIVE` an unrecognized JSON token, consider as an error +- `KEY` a JSON key in an object as a string +- `NULL` a JSON `null` value, automatically converted to `0` or `""` +- `BOOL_FALSE` a JSON `false` value, automatically converted to `0` or `""` +- `BOOL_TRUE` a JSON `true` value, automatically converted to `1` or `""` +- `UINT` a JSON unsigned int +- `INT` a JSON negative int +- `FLOAT` a JSON floating point value, i.e. a numerical value containing a decimal ot `.` + +Note: values are converted in this priority: 1/ `UINT`, 2/ `INT`, 3/ `FLOAT`. + +`JsonParserToken` support the following getters: +- `getBool()`: returns true if 'true' or non-zero int (default false) +- `getUInt()`: converts to unsigned int (default 0), boolean true is 1 +- `getInt()`: converts to signed int (default 0), boolean true is 1 +- `getULong()`: converts to unsigned 64 bits (default 0), boolean is 1 +- `getStr()`: converts to string (default "") + +There are variants of the same function for which you can choose the default values. Remember that using a getter if the token type is INVALID returns the default value. + +Conversion to `OBJECT` or `ARRAY`: +- `getObject()`: converts token to `OBJECT` or `INVALID` +- `getArray()`: converts token to `ARRAY` or `INVALID` + +For `JsonParserKey`: +- `getValue()`: returns the value token associated to the key + +## Checking Token types + +Type checking for `JsonParserToken`: +- `isSingleToken()` returns `true` for a single level token, `false` for `OBJECT`, `ARRAY` and `INVALID` +- `isKey()` returns `true` for a `KEY` within an `OBJECT` +- `isStr()` returns `true` for `STRING` (note: other types can still be read as strings with `getStr()`) +- `isNull()` returns `true` for `NULL` +- `isBool()` returns `true` for `BOOL_FALSE` or `BOOL_TRUE` +- `isUInt()` returns `true` for `UINT` (see below for number conversions) +- `isInt()` returns `true` for `INT` (see below for number conversions) +- `isFloat()` returns `true` for `FLOAT` (see below for number conversions) +- `isNum()` returns `true` for any numerical value, i.e. `UINT`, `INT` or `FLOAT` +- `isObject()` returns `true` for `OBJECT` +- `isArray()` returns `true` for `ARRAY` +- `isValid()` returns `true`for any type except `INVALID` + +JSMN for Tasmota provides sub-classes: +- `JsonParserKey` of type `KEY` or `INVALID`, used as a return value for Object iterators +- `JsonParserObject` of type `OBJECT` or `INVALID`, providing iterators +- `JsonParserArray` of type `ARRAY` or `INVALID`, providing iterators + +Converting from Token to Object or Array is done with `token.getObject()` or `token.getArray()`. If the conversion is invalid, the resulting object has type `INVALID` (see Error Handling). + +## Iterators and accessors for Objects and Arrays + +The `JsonParserObject` provides an easy to use iterator: +``` +JsonParserToken obj = <...> +for (auto key : obj) { + // key is of type JsonParserKey + JsonParserToken valie = key.getValue(); // retrieve the value associated to key +} +``` + +If the object contains only one element, you can retrieve it with `obj.getFirstElement()`. + +You can access any key with `obj["Key"]`. Note: the search is on purpose **case insensitive** as it is the norm in Tasmota. The search string can be in PROGMEM. If the token is not found, it is of type `INVALID`. + +The `JsonParserArray` provides an easy to use iterator: +``` +JsonParserArray arr = <...> +for (auto elt : arr) { + // elt is of type JsonParserToken +} +``` + +You can access any element in the array with the `[]` operator. Ex: `arr[0]` fof first element. If the index is invalid, the token has type `INVALID`. + +## Memory + +The `JsonParserToken` fits in 32 bits, so it can be freely returned or copied without any penalty of object copying. Hence it doesn't need the `const` modifier either, since it is always passed by value. + +## Error handling + +This library uses a `zero error` pattern. This means that calls never report any error nor throw exceptions. If something wrong happens (bad JSON, token not found...), function return an **Invalid Token**. You can call any function on an Invalid Token, they will always return the same Invalid Token (aka fixed point). + +You can easily test if the current token is invalid with the following: + +Short version: +``` +if (token) { /* token is valid */ } +``` + +Long version: +``` +if (token->isValiid()) { /* token is valid */ } +``` + +This pattern allows to cascade calls and check only the final result: +``` +char json_buffer[] = ""; +JsonParserObject json = JsonParser(json_buffer).getRootObject(); +JsonParserToken zbstatus_tok = json["ZbStatus"]; +JsonParserObject zbstatus = zbstatus_tok.getObject(); +if (zbstatus) { /* do some stuff */ + // reaching this point means: JSON is valid, there is a root object, there is a `ZbStatus` key and it contains a sub-object +} +``` + +Warning: there is an explicit convert to `bool` to allow the short version. Be careful, `(bool)token` is equivalent to `token->isValid()`, it is **NOT** equivalent to `token->getBool()`. + +## Limits + +Please keep in mind the current limits for this library: +- Maximum JSON buffer size 2047 bytes +- Maximum 63 JSON tokens +- No support for exponent in floats (i.e. `1.0e3` is invalid) + +These limits shouldn't be a problem since buffers in Tasmota are limited to 1.2KB. The support for exponent in floats is commented out and can be added if needed (slight increase in Flash size) \ No newline at end of file diff --git a/lib/jsmn-shadinger-1.0/library.properties b/lib/jsmn-shadinger-1.0/library.properties new file mode 100644 index 000000000..674aa76e7 --- /dev/null +++ b/lib/jsmn-shadinger-1.0/library.properties @@ -0,0 +1,8 @@ +name=JSMN JSON parser customized and optimized for ESP8266 and Tasmota +version=1.0 +author=Serge Zaitsev, Stephan Hadinger +maintainer=Stephan +sentence=Lightweight in-place JSON parser +paragraph= +url=https://github.com/zserge/jsmn +architectures=esp8266 diff --git a/lib/jsmn-shadinger-1.0/src/JsonParser.cpp b/lib/jsmn-shadinger-1.0/src/JsonParser.cpp new file mode 100644 index 000000000..f2ae50a97 --- /dev/null +++ b/lib/jsmn-shadinger-1.0/src/JsonParser.cpp @@ -0,0 +1,524 @@ +/* + JsonParser.h - lightweight JSON parser + + Copyright (C) 2020 Stephan Hadinger + + 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 . +*/ + +#include "JsonParser.h" +#include "WSTring.h" + +/*********************************************************************************************\ + * Utilities +\*********************************************************************************************/ + +const char * k_current_json_buffer = ""; + +/*********************************************************************************************\ + * Lightweight String to Float, because atof() or strtof() takes 10KB + * + * To remove code, exponents are not parsed + * (commented out below, just in case we need them after all) +\*********************************************************************************************/ +// Inspired from https://searchcode.com/codesearch/view/22115068/ +float json_strtof(const char* s) { + const char* p = s; + float value = 0.; + int32_t sign = +1; + float factor; + // unsigned int expo; + + while (isspace(*p)){ // skip any leading white-spaces + p++; + } + + switch (*p) { + case '-': sign = -1; + case '+': p++; + default : break; + } + + while ((unsigned int)(*p - '0') < 10u) { + value = value*10 + (*p++ - '0'); + } + + if (*p == '.' ) { + factor = 1.0f; + + p++; + while ((unsigned int)(*p - '0') < 10u) { + factor *= 0.1f; + value += (*p++ - '0') * factor; + } + } + +// if ( (*p | 32) == 'e' ) { +// expo = 0; +// factor = 10.L; + +// switch (*++p) { // ja hier weiß ich nicht, was mindestens nach einem 'E' folgenden MUSS. +// case '-': factor = 0.1; +// case '+': p++; +// break; +// case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': +// break; +// default : value = 0.L; +// p = s; +// goto done; +// } + +// while ( (unsigned int)(*p - '0') < 10u ) +// expo = 10 * expo + (*p++ - '0'); + +// while ( 1 ) { +// if ( expo & 1 ) +// value *= factor; +// if ( (expo >>= 1) == 0 ) +// break; +// factor *= factor; +// } +// } + +// done: + // if ( endptr != NULL ) + // *endptr = (char*)p; + + return value * sign; +} + +/*********************************************************************************************\ + * Read-only JSON token object, fits in 32 bits +\*********************************************************************************************/ + +void JsonParserToken::skipToken(void) { + // printf("skipToken type = %d %s\n", t->type, json_string + t->start); + switch (t->type) { + case JSMN_OBJECT: + skipObject(); + break; + case JSMN_ARRAY: + skipArray(); + break; + case JSMN_STRING: + case JSMN_PRIMITIVE: + case JSMN_KEY: + case JSMN_NULL: + case JSMN_BOOL_FALSE: + case JSMN_BOOL_TRUE: + case JSMN_FLOAT: + case JSMN_INT: + case JSMN_UINT: + t++; // skip 1 token + break; + case JSMN_INVALID: + default: + break; // end of stream, stop advancing + } +} + +void JsonParserToken::skipArray(void) { + if (t->type == JSMN_ARRAY) { + size_t obj_size = t->size; + t++; // array root + if (t->type == JSMN_INVALID) { return; } + for (uint32_t i=0; itype == JSMN_OBJECT) { + size_t obj_size = t->size; + t++; // object root + if (t->type == JSMN_INVALID) { return; } + for (uint32_t i=0; itype == JSMN_INVALID) { return; } + skipToken(); + } + } +} + +/*********************************************************************************************\ + * JsonParserArray +\*********************************************************************************************/ + +JsonParserArray::JsonParserArray(const jsmntok_t * token) : JsonParserToken(token) { + if (t->type != JSMN_ARRAY) { + t = &token_bad; + } +} +JsonParserArray::JsonParserArray(const JsonParserToken token) : JsonParserToken(token.t) { + if (t->type != JSMN_ARRAY) { + t = &token_bad; + } +} + +JsonParserArray::const_iterator::const_iterator(const JsonParserArray t): tok(t), remaining(0) { + if (tok.t == &token_bad) { tok.t = nullptr; } + if (nullptr != tok.t) { + // ASSERT type == JSMN_ARRAY by constructor + remaining = tok.t->size; + tok.nextOne(); // skip array root token + } +} + +JsonParserArray::const_iterator JsonParserArray::const_iterator::const_iterator::operator++() { + if (remaining == 0) { tok.t = nullptr; } + else { + remaining--; + tok.skipToken(); // munch value + if (tok.t->type == JSMN_INVALID) { tok.t = nullptr; } // unexpected end of stream + } + return *this; +} + +JsonParserToken JsonParserArray::operator[](int32_t i) const { + if ((i >= 0) && (i < t->size)) { + uint32_t index = 0; + for (const auto elt : *this) { + if (i == index) { + return elt; + } + index++; + } + } + // fallback + return JsonParserToken(&token_bad); +} + +/*********************************************************************************************\ + * JsonParserObject +\*********************************************************************************************/ + +JsonParserObject::JsonParserObject(const jsmntok_t * token) : JsonParserToken(token) { + if (t->type != JSMN_OBJECT) { + t = &token_bad; + } +} +JsonParserObject::JsonParserObject(const JsonParserToken token) : JsonParserToken(token.t) { + if (t->type != JSMN_OBJECT) { + t = &token_bad; + } +} + +JsonParserKey JsonParserObject::getFirstElement(void) const { + if (t->size > 0) { + return JsonParserKey(t+1); // return next element and cast to Key + } else { + return JsonParserKey(&token_bad); + } +} + +JsonParserObject::const_iterator::const_iterator(const JsonParserObject t): tok(t), remaining(0) { + if (tok.t == &token_bad) { tok.t = nullptr; } + if (nullptr != tok.t) { + // ASSERT type == JSMN_OBJECT by constructor + remaining = tok.t->size; + tok.nextOne(); + } +} + +JsonParserObject::const_iterator JsonParserObject::const_iterator::operator++() { + if (remaining == 0) { tok.t = nullptr; } + else { + remaining--; + tok.nextOne(); // munch key + if (tok.t->type == JSMN_INVALID) { tok.t = nullptr; } // unexpected end of stream + tok.skipToken(); // munch value + if (tok.t->type == JSMN_INVALID) { tok.t = nullptr; } // unexpected end of stream + } + return *this; +} + +/*********************************************************************************************\ + * JsonParserKey +\*********************************************************************************************/ + + +JsonParserKey::JsonParserKey(const jsmntok_t * token) : JsonParserToken(token) { + if (t->type != JSMN_KEY) { + t = &token_bad; + } +} +JsonParserKey::JsonParserKey(const JsonParserToken token) : JsonParserToken(token.t) { + if (t->type != JSMN_KEY) { + t = &token_bad; + } +} + +JsonParserToken JsonParserKey::getValue(void) const { + return JsonParserToken(t+1); +} + +/*********************************************************************************************\ + * Implementation for JSON Parser +\*********************************************************************************************/ + +// fall-back token object when parsing failed +const jsmntok_t token_bad = { JSMN_INVALID, 0, 0, 0 }; + +JsonParser::JsonParser(char * json_in) : + _size(0), + _token_len(0), + _tokens(nullptr), + _json(nullptr) +{ + parse(json_in); +} + +JsonParser::~JsonParser() { + this->free(); +} + +const JsonParserObject JsonParser::getRootObject(void) const { + return JsonParserObject(&_tokens[0]); +} + +const JsonParserToken JsonParser::operator[](int32_t i) const { +if ((_token_len > 0) && (i < _token_len)) { + return JsonParserToken(&_tokens[i]); + } else { + return JsonParserToken(&token_bad); + } +} + +// pointer arithmetic +// ptrdiff_t JsonParser::index(JsonParserToken token) const { +// return token.t - _tokens; +// } + +bool JsonParserToken::getBool(bool val) const { + if (t->type == JSMN_INVALID) { return val; } + if (t->type == JSMN_BOOL_TRUE) return true; + if (t->type == JSMN_BOOL_FALSE) return false; + if (isSingleToken()) return strtol(&k_current_json_buffer[t->start], nullptr, 0) != 0; + return false; +} +int32_t JsonParserToken::getInt(int32_t val) const { + if (t->type == JSMN_INVALID) { return val; } + if (t->type == JSMN_BOOL_TRUE) return 1; + if (isSingleToken()) return strtol(&k_current_json_buffer[t->start], nullptr, 0); + return 0; +} +uint32_t JsonParserToken::getUInt(uint32_t val) const { + if (t->type == JSMN_INVALID) { return val; } + if (t->type == JSMN_BOOL_TRUE) return 1; + if (isSingleToken()) return strtoul(&k_current_json_buffer[t->start], nullptr, 0); + return 0; +} +uint64_t JsonParserToken::getULong(uint64_t val) const { + if (t->type == JSMN_INVALID) { return val; } + if (t->type == JSMN_BOOL_TRUE) return 1; + if (isSingleToken()) return strtoull(&k_current_json_buffer[t->start], nullptr, 0); + return 0; +} +float JsonParserToken::getFloat(float val) const { + if (t->type == JSMN_INVALID) { return val; } + if (t->type == JSMN_BOOL_TRUE) return 1; + if (isSingleToken()) return json_strtof(&k_current_json_buffer[t->start]); + return 0; +} +const char * JsonParserToken::getStr(const char * val) const { + if (t->type == JSMN_INVALID) { return val; } + if (t->type == JSMN_NULL) return ""; + return (t->type >= JSMN_STRING) ? &k_current_json_buffer[t->start] : ""; +} + + +JsonParserObject JsonParserToken::getObject(void) const { return JsonParserObject(*this); } +JsonParserArray JsonParserToken::getArray(void) const { return JsonParserArray(*this); } + + +bool JsonParserToken::getBool(void) const { return getBool(false); } +int32_t JsonParserToken::getInt(void) const { return getInt(0); } +uint32_t JsonParserToken::getUInt(void) const { return getUInt(0); } +uint64_t JsonParserToken::getULong(void) const { return getULong(0); } +float JsonParserToken::getFloat(void) const { return getFloat(0); } +const char * JsonParserToken::getStr(void) const { return getStr(""); } + +int32_t JsonParserObject::getInt(const char * needle, int32_t val) const { + return (*this)[needle].getInt(val); +} +uint32_t JsonParserObject::getUInt(const char * needle, uint32_t val) const { + return (*this)[needle].getUInt(val); +} +uint64_t JsonParserObject::getULong(const char * needle, uint64_t val) const { + return (*this)[needle].getULong(val); +} +const char * JsonParserObject::getStr(const char * needle, const char * val) const { + return (*this)[needle].getStr(val); +} + +void JsonParser::parse(char * json_in) { + k_current_json_buffer = ""; + if (nullptr == json_in) { return; } + _json = json_in; + k_current_json_buffer = _json; + size_t json_len = strlen(json_in); + if (_size == 0) { + // first run is used to count tokens before allocation + jsmn_init(&this->_parser); + int32_t _token_len = jsmn_parse(&this->_parser, json_in, json_len, nullptr, 0); + if (_token_len <= 0) { return; } + _size = _token_len + 1; + } + allocate(); + jsmn_init(&this->_parser); + _token_len = jsmn_parse(&this->_parser, json_in, json_len, _tokens, _size); + // TODO error checking + if (_token_len >= 0) { + postProcess(json_len); + } +} + +// post process the parsing by pre-munching extended types +void JsonParser::postProcess(size_t json_len) { + // add an end marker + if (_size > _token_len) { + _tokens[_token_len].type = JSMN_INVALID; + _tokens[_token_len].start = json_len; + _tokens[_token_len].len = 0; + _tokens[_token_len].size = 0; + } + for (uint32_t i=0; i<_token_len; i++) { + jsmntok_t & tok = _tokens[i]; + + if (tok.type >= JSMN_STRING) { + // we modify to null-terminate the primitive + _json[tok.start + tok.len] = 0; + } + + if (tok.type == JSMN_STRING) { + if (tok.size == 1) { tok.type = JSMN_KEY; } + else { json_unescape(&_json[tok.start]); } + } else if (tok.type == JSMN_PRIMITIVE) { + if (tok.len >= 0) { + // non-null string + char c0 = _json[tok.start]; + switch (c0) { + case 'n': + case 'N': + tok.type = JSMN_NULL; + break; + case 't': + case 'T': + tok.type = JSMN_BOOL_TRUE; + break; + case 'f': + case 'F': + tok.type = JSMN_BOOL_FALSE; + break; + case '-': + case '0'...'9': + // look if there is a '.' in the string + if (nullptr != memchr(&_json[tok.start], '.', tok.len)) { + tok.type = JSMN_FLOAT; + } else if (c0 == '-') { + tok.type = JSMN_INT; + } else { + tok.type = JSMN_UINT; + } + break; + default: + tok.type = JSMN_PRIMITIVE; + break; + } + } else { + tok.type = JSMN_PRIMITIVE; + } + } + } +} + +JsonParserToken JsonParserObject::operator[](const char * needle) const { + // key can be in PROGMEM + if ((!this->isValid()) || (nullptr == needle) || (0 == pgm_read_byte(needle))) { + return JsonParserToken(&token_bad); + } + // if needle == "?" then we return the first valid key + bool wildcard = (strcmp_P("?", needle) == 0); + + for (const auto key : *this) { + if (wildcard) { return key.getValue(); } + if (0 == strcasecmp_P(key.getStr(), needle)) { return key.getValue(); } + } + // if not found + return JsonParserToken(&token_bad); +} + + +JsonParserToken JsonParserObject::findStartsWith(const char * needle) const { + // key can be in PROGMEM + if ((!this->isValid()) || (nullptr == needle) || (0 == pgm_read_byte(needle))) { + return JsonParserToken(&token_bad); + } + + String needle_s((const __FlashStringHelper *)needle); + needle_s.toLowerCase(); + + for (const auto key : *this) { + String key_s(key.getStr()); + key_s.toLowerCase(); + + if (key_s.startsWith(needle_s)) { + return key.getValue(); + } + } + // if not found + return JsonParserToken(&token_bad); +} + +const char * JsonParserObject::findConstCharNull(const char * needle) const { + const char * r = (*this)[needle].getStr(); + if (*r == 0) { r = nullptr; } // if empty string + return r; +} + +// JsonParserToken JsonParser::find(JsonParserObject obj, const char *needle, bool case_sensitive) const { +// // key can be in PROGMEM +// if ((!obj.isValid()) || (nullptr == needle) || (0 == pgm_read_byte(needle))) { +// return JsonParserToken(&token_bad); +// } +// // if needle == "?" then we return the first valid key +// bool wildcard = (strcmp_P("?", needle) == 0); + +// for (const auto key : obj) { +// if (wildcard) { return key.getValue(); } +// if (case_sensitive) { +// if (0 == strcmp_P(this->getStr(key), needle)) { return key.getValue(); } +// } else { +// if (0 == strcasecmp_P(this->getStr(key), needle)) { return key.getValue(); } +// } +// } +// // if not found +// return JsonParserToken(&token_bad); +// } + +void JsonParser::free(void) { + if (nullptr != _tokens) { + delete[] _tokens; // TODO + _tokens = nullptr; + } +} + +void JsonParser::allocate(void) { + this->free(); + if (_size != 0) { + _tokens = new jsmntok_t[_size]; + } +} diff --git a/lib/jsmn-shadinger-1.0/src/JsonParser.h b/lib/jsmn-shadinger-1.0/src/JsonParser.h new file mode 100644 index 000000000..42886d628 --- /dev/null +++ b/lib/jsmn-shadinger-1.0/src/JsonParser.h @@ -0,0 +1,260 @@ +/* + JsonParser.h - lightweight JSON parser + + Copyright (C) 2020 Stephan Hadinger + + 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 . +*/ + +#ifndef __JSON_PARSER__ +#define __JSON_PARSER__ + +#include "jsmn.h" +#include +#include + +// #define strcmp_P(x, y) strcmp(x,y) +// #define strcasecmp_P(x,y) strcasecmp(x,y) +// #define pgm_read_byte(x) (*(uint8_t*)(x)) +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) +#endif + +/*********************************************************************************************\ + * Utilities +\*********************************************************************************************/ + +// The code uses a zero-error approach. Functions never return an error code nor an exception. +// In case an operation fails, it returns an "Invalid Token". +// To know if a token is valid, use the `isValid()` method or just use it in an if statement. +// +// Internally, the bad token is a pointer to a constant token of type JSMN_INVALID +// fall-back token object when parsing failed +const extern jsmntok_t token_bad; + +// To reduce code size, the current buffer is stored in a global variable. +// This prevents all calls to add this parameter on the stack and reduces code size. +// The caveat is that code is not re-entrant. +// If you ever intermix two or more JSON parsers, use `parser->setCurrent()` before further calls +// +// the current json buffer being used, for convenience +// Warning: this makes code non-reentrant. +extern const char * k_current_json_buffer; + +/*********************************************************************************************\ + * Read-only JSON token object, fits in 32 bits +\*********************************************************************************************/ +// forward class declarations +class JsonParserObject; +class JsonParserArray; + +class JsonParserToken { +public: + + // constructor + // If parameter is null, we use the Invalid Token instead. + JsonParserToken(const jsmntok_t * token) : t(token) { + if (nullptr == t) { t = &token_bad; } + } + // no explicit destructor (not needed) + + inline bool isValid(void) const { return t->type != JSMN_INVALID; } + inline size_t size(void) const { return t->size; } + + inline bool isSingleToken(void) const { return (t->type >= JSMN_STRING); } + inline bool isKey(void) const { return (t->type == JSMN_KEY); } + inline bool isStr(void) const { return (t->type == JSMN_STRING); } + inline bool isNull(void) const { return (t->type == JSMN_NULL); } + inline bool isBool(void) const { return (t->type == JSMN_BOOL_TRUE) || (t->type == JSMN_BOOL_FALSE); } + inline bool isFloat(void) const { return (t->type == JSMN_FLOAT); } + inline bool isInt(void) const { return (t->type == JSMN_INT); } + inline bool isUint(void) const { return (t->type == JSMN_UINT); } + inline bool isNum(void) const { return (t->type >= JSMN_FLOAT) && (t->type <= JSMN_UINT); } + inline bool isObject(void) const { return (t->type == JSMN_OBJECT); } + inline bool isArray(void) const { return (t->type == JSMN_ARRAY); } + + // move to token immediately after in the buffer + void nextOne(void) { if (t->type != JSMN_INVALID) { t++; } } + + // conversion operators + // Warning - bool does not test for Boolean value but for validity, i.e. equivalent to token.valid() + inline explicit operator bool() const { return t->type != JSMN_INVALID; }; + + // all the following conversion will try to give a meaninful value + // if the content is not of the right type or the token is invalid, returns the 'default' + bool getBool(void) const; // true if 'true' or non-zero int (default false) + int32_t getInt(void) const; // convert to int (default 0) + uint32_t getUInt(void) const; // convert to unsigned int (default 0) + uint64_t getULong(void) const; // convert to unsigned 64 bits (default 0) + float getFloat(void) const; // convert to float (default 0), does not support exponent + const char * getStr(void) const; // convert to string (default "") + + // same as above, but you can choose the default value + bool getBool(bool val) const; + int32_t getInt(int32_t val) const; + uint32_t getUInt(uint32_t val) const; + uint64_t getULong(uint64_t val) const; + float getFloat(float val) const; + const char * getStr(const char * val) const; + + // convert to JsonParserObject or JsonParserArray, or Invalid Token if not allowed + JsonParserObject getObject(void) const; + JsonParserArray getArray(void) const; + +public: + // the following should be 'protected' but then it can't be accessed by iterators + const jsmntok_t * t; + // skip the next Token as a whole (i.e. skip an entire array) + void skipToken(void); + +protected: + + // skip the next token knowing it's an array + void skipArray(void); + + // skip the next token knowing it's an object + void skipObject(void); +}; + +/*********************************************************************************************\ + * Subclass for Key +\*********************************************************************************************/ +class JsonParserKey : public JsonParserToken { +public: + JsonParserKey(const jsmntok_t * token); + explicit JsonParserKey(const JsonParserToken token); + + // get the value token associated to the key + JsonParserToken getValue(void) const; +}; + +/*********************************************************************************************\ + * Subclass for Object +\*********************************************************************************************/ +class JsonParserObject : public JsonParserToken { +public: + JsonParserObject(const jsmntok_t * token); + explicit JsonParserObject(const JsonParserToken token); + + // find key with name, case-insensitive, '?' matches any key. Returns Invalid Token if not found + JsonParserToken operator[](const char * needle) const; + // find a key starting with `needle`, case insensitive + JsonParserToken findStartsWith(const char * needle) const; + // find a key, case-insensitive, return nullptr if not found (instead of "") + const char * findConstCharNull(const char * needle) const; + + // all-in-one methods: search for key (case insensitive), convert value and set default + int32_t getInt(const char *, int32_t) const; + uint32_t getUInt(const char *, uint32_t) const; + uint64_t getULong(const char *, uint64_t) const; + float getFloat(const char *, float) const; + const char * getStr(const char *, const char *) const; + + // get first element (key) + JsonParserKey getFirstElement(void) const; + + // + // const iterator + // + class const_iterator { + public: + const_iterator(const JsonParserObject t); + const_iterator operator++(); + bool operator!=(const_iterator & other) const { return tok.t != other.tok.t; } + const JsonParserKey operator*() const { return JsonParserKey(tok); } + private: + JsonParserToken tok; + size_t remaining; + }; + const_iterator begin() const { return const_iterator(*this); } // start with 'head' + const_iterator end() const { return const_iterator(JsonParserObject(&token_bad)); } // end with null pointer +}; + +/*********************************************************************************************\ + * Subclass for Array +\*********************************************************************************************/ +class JsonParserArray : public JsonParserToken { +public: + JsonParserArray(const jsmntok_t * token); + JsonParserArray(const JsonParserToken token); + + // get the element if index `i` from 0 to `size() - 1` + JsonParserToken operator[](int32_t i) const; + + // + // const iterator + // + class const_iterator { + public: + const_iterator(const JsonParserArray t); + const_iterator operator++(); + bool operator!=(const_iterator & other) const { return tok.t != other.tok.t; } + const JsonParserToken operator*() const { return tok; } + private: + JsonParserToken tok; + size_t remaining; + }; + const_iterator begin() const { return const_iterator(*this); } // start with 'head' + const_iterator end() const { return const_iterator(JsonParserArray(&token_bad)); } // end with null pointer +}; + +/*********************************************************************************************\ + * JSON Parser +\*********************************************************************************************/ + +class JsonParser { +public: + // constructor, parse the json buffer + // Warning: the buffer is modified in the process (in-place parsing) + // Input: `json_in` can be nullptr, but CANNOT be in PROGMEM (remember we need to change characters in-place) + JsonParser(char * json_in); + + // destructor + ~JsonParser(); + + // set the current buffer for attribute access (i.e. set the global) + void setCurrent(void) { k_current_json_buffer = _json; } + + // test if the parsing was successful + inline explicit operator bool() const { return _token_len > 0; } + + const JsonParserToken getRoot(void) { return JsonParserToken(&_tokens[0]); } + // const JsonParserObject getRootObject(void) { return JsonParserObject(&_tokens[0]); } + const JsonParserObject getRootObject(void) const; + + // pointer arithmetic + // ptrdiff_t index(JsonParserToken token) const; + +protected: + uint16_t _size; // size of tokens buffer + int16_t _token_len; // how many tokens have been parsed + jsmntok_t * _tokens; // pointer to token buffer + jsmn_parser _parser; // jmsn_parser structure + char * _json; // json buffer + + // disallocate token buffer + void free(void); + + // allocate token buffer of size _size + void allocate(void); + + // access tokens by index + const JsonParserToken operator[](int32_t i) const; + // parse + void parse(char * json_in); + // post-process parsing: insert NULL chars to split strings, compute a more precise token type + void postProcess(size_t json_len); +}; + +#endif // __JSON_PARSER__ \ No newline at end of file diff --git a/lib/jsmn-shadinger-1.0/src/JsonParser.hpp.gch b/lib/jsmn-shadinger-1.0/src/JsonParser.hpp.gch new file mode 100644 index 0000000000000000000000000000000000000000..e3d9ed686152f6e8b238238039f13a6c1089fec5 GIT binary patch literal 2299028 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 }(2-X> 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%0A#&Pal)I>(W3;HBW4(Ia8k?@yt+ADQ-5MFu>(5-{ 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
b$ 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 amFIM=uyoY}=?VniZZ{@HAW)qP1pW_4|MX`7 literal 0 HcmV?d00001 diff --git a/lib/jsmn-shadinger-1.0/src/jsmn.cpp b/lib/jsmn-shadinger-1.0/src/jsmn.cpp new file mode 100644 index 000000000..8f7a59708 --- /dev/null +++ b/lib/jsmn-shadinger-1.0/src/jsmn.cpp @@ -0,0 +1,449 @@ +/* + * MIT License + * + * Copyright (c) 2010 Serge Zaitsev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "jsmn.h" + +#define JSMN_STRICT // force strict mode + +const uint32_t JSMN_START_MAX = (1U << JSMN_START_B) - 1; +const uint32_t JSMN_LEN_MAX = (1U << JSMN_LEN_B) - 1; + +/** + * Allocates a fresh unused token from the token pool. + */ +static jsmntok_t *jsmn_alloc_token(jsmn_parser *parser, jsmntok_t *tokens, + const size_t num_tokens) { + jsmntok_t *tok; + if (parser->toknext >= num_tokens) { + return NULL; + } + tok = &tokens[parser->toknext++]; + tok->start = JSMN_START_MAX; + tok->len = JSMN_LEN_MAX; + tok->size = 0; + return tok; +} + +/** + * Fills token type and boundaries. + */ +static void jsmn_fill_token(jsmntok_t *token, const jsmntype_t type, + const int start, const int len) { + token->type = type; + token->start = start; + token->len = len; + token->size = 0; +} + +/** + * Fills next available token with JSON primitive. + */ +static int jsmn_parse_primitive(jsmn_parser *parser, const char *js, + const size_t len, jsmntok_t *tokens, + const size_t num_tokens) { + jsmntok_t *token; + int start; + + start = parser->pos; + + for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { + switch (js[parser->pos]) { +#ifndef JSMN_STRICT + /* In strict mode primitive must be followed by "," or "}" or "]" */ + case ':': +#endif + case '\t': + case '\r': + case '\n': + case ' ': + case ',': + case ']': + case '}': + goto found; + default: + /* to quiet a warning from gcc*/ + break; + } + if (js[parser->pos] < 32 || js[parser->pos] >= 127) { + parser->pos = start; + return JSMN_ERROR_INVAL; + } + } +#ifdef JSMN_STRICT + /* In strict mode primitive must be followed by a comma/object/array */ + parser->pos = start; + return JSMN_ERROR_PART; +#endif + +found: + if (tokens == NULL) { + parser->pos--; + return 0; + } + token = jsmn_alloc_token(parser, tokens, num_tokens); + if (token == NULL) { + parser->pos = start; + return JSMN_ERROR_NOMEM; + } + jsmn_fill_token(token, JSMN_PRIMITIVE, start, parser->pos - start); + parser->pos--; + return 0; +} + +/** + * Fills next token with JSON string. + */ +static int jsmn_parse_string(jsmn_parser *parser, const char *js, + const size_t len, jsmntok_t *tokens, + const size_t num_tokens) { + jsmntok_t *token; + + int start = parser->pos; + + parser->pos++; + + /* Skip starting quote */ + for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { + char c = js[parser->pos]; + + /* Quote: end of string */ + if (c == '\"') { + if (tokens == NULL) { + return 0; + } + token = jsmn_alloc_token(parser, tokens, num_tokens); + if (token == NULL) { + parser->pos = start; + return JSMN_ERROR_NOMEM; + } + jsmn_fill_token(token, JSMN_STRING, start + 1, parser->pos - start - 1); + return 0; + } + + /* Backslash: Quoted symbol expected */ + if (c == '\\' && parser->pos + 1 < len) { + int i; + parser->pos++; + switch (js[parser->pos]) { + /* Allowed escaped symbols */ + case '\"': + case '/': + case '\\': + case 'b': + case 'f': + case 'r': + case 'n': + case 't': + break; + /* Allows escaped symbol \uXXXX */ + case 'u': + parser->pos++; + for (i = 0; i < 4 && parser->pos < len && js[parser->pos] != '\0'; + i++) { + /* If it isn't a hex character we have an error */ + if (!((js[parser->pos] >= 48 && js[parser->pos] <= 57) || /* 0-9 */ + (js[parser->pos] >= 65 && js[parser->pos] <= 70) || /* A-F */ + (js[parser->pos] >= 97 && js[parser->pos] <= 102))) { /* a-f */ + parser->pos = start; + return JSMN_ERROR_INVAL; + } + parser->pos++; + } + parser->pos--; + break; + /* Unexpected symbol */ + default: + parser->pos = start; + return JSMN_ERROR_INVAL; + } + } + } + parser->pos = start; + return JSMN_ERROR_PART; +} + +/** + * Parse JSON string and fill tokens. + */ +JSMN_API int jsmn_parse(jsmn_parser *parser, const char *js, const size_t len, + jsmntok_t *tokens, const unsigned int num_tokens) { + int r; + int i; + jsmntok_t *token; + int count = parser->toknext; + + for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { + char c; + jsmntype_t type; + + c = js[parser->pos]; + switch (c) { + case '{': + case '[': + count++; + if (tokens == NULL) { + break; + } + token = jsmn_alloc_token(parser, tokens, num_tokens); + if (token == NULL) { + return JSMN_ERROR_NOMEM; + } + if (parser->toksuper != -1) { + jsmntok_t *t = &tokens[parser->toksuper]; +#ifdef JSMN_STRICT + /* In strict mode an object or array can't become a key */ + if (t->type == JSMN_OBJECT) { + return JSMN_ERROR_INVAL; + } +#endif + t->size++; + } + token->type = (c == '{' ? JSMN_OBJECT : JSMN_ARRAY); + token->start = parser->pos; + parser->toksuper = parser->toknext - 1; + break; + case '}': + case ']': + if (tokens == NULL) { + break; + } + type = (c == '}' ? JSMN_OBJECT : JSMN_ARRAY); + for (i = parser->toknext - 1; i >= 0; i--) { + token = &tokens[i]; + if ((token->start != JSMN_START_MAX) && (token->len == JSMN_LEN_MAX)) { + if (token->type != type) { + return JSMN_ERROR_INVAL; + } + parser->toksuper = -1; + token->len = parser->pos + 1 - token->start; + break; + } + } + /* Error if unmatched closing bracket */ + if (i == -1) { + return JSMN_ERROR_INVAL; + } + for (; i >= 0; i--) { + token = &tokens[i]; + if ((token->start != JSMN_START_MAX) && (token->len == JSMN_LEN_MAX)) { + parser->toksuper = i; + break; + } + } + break; + case '\"': + r = jsmn_parse_string(parser, js, len, tokens, num_tokens); + if (r < 0) { + return r; + } + count++; + if (parser->toksuper != -1 && tokens != NULL) { + tokens[parser->toksuper].size++; + } + break; + case '\t': + case '\r': + case '\n': + case ' ': + break; + case ':': + parser->toksuper = parser->toknext - 1; + break; + case ',': + if (tokens != NULL && parser->toksuper != -1 && + tokens[parser->toksuper].type != JSMN_ARRAY && + tokens[parser->toksuper].type != JSMN_OBJECT) { + for (i = parser->toknext - 1; i >= 0; i--) { + if (tokens[i].type == JSMN_ARRAY || tokens[i].type == JSMN_OBJECT) { + if ((tokens[i].start != JSMN_START_MAX) && (tokens[i].len == JSMN_LEN_MAX)) { + parser->toksuper = i; + break; + } + } + } + } + break; +#ifdef JSMN_STRICT + /* In strict mode primitives are: numbers and booleans */ + case '-': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 't': + case 'f': + case 'n': + /* And they must not be keys of the object */ + if (tokens != NULL && parser->toksuper != -1) { + const jsmntok_t *t = &tokens[parser->toksuper]; + if (t->type == JSMN_OBJECT || + (t->type == JSMN_STRING && t->size != 0)) { + return JSMN_ERROR_INVAL; + } + } +#else + /* In non-strict mode every unquoted value is a primitive */ + default: +#endif + r = jsmn_parse_primitive(parser, js, len, tokens, num_tokens); + if (r < 0) { + return r; + } + count++; + if (parser->toksuper != -1 && tokens != NULL) { + tokens[parser->toksuper].size++; + } + break; + +#ifdef JSMN_STRICT + /* Unexpected char in strict mode */ + default: + return JSMN_ERROR_INVAL; +#endif + } + } + + if (tokens != NULL) { + for (i = parser->toknext - 1; i >= 0; i--) { + /* Unmatched opened object or array */ + if ((tokens[i].start != JSMN_START_MAX) && (tokens[i].len == JSMN_LEN_MAX)) { + return JSMN_ERROR_PART; + } + } + } + + return count; +} + +/** + * Creates a new parser based over a given buffer with an array of tokens + * available. + */ +JSMN_API void jsmn_init(jsmn_parser *parser) { + parser->pos = 0; + parser->toknext = 0; + parser->toksuper = -1; +} + +// +// Json in-place string unescape +// inpired from https://github.com/mjansson/json/blob/master/json.h +// +//! Define a bitmask with the given number of bits set to 1 +#define JSON_BITMASK(numbits) ((1U << (numbits)) - 1) + +static uint32_t json_get_num_bytes_as_utf8(uint32_t val) { + if (val >= 0x04000000) return 6; + else if (val >= 0x00200000) return 5; + else if (val >= 0x00010000) return 4; + else if (val >= 0x00000800) return 3; + else if (val >= 0x00000080) return 2; + return 1; +} + +static uint32_t json_encode_utf8(char* str, uint32_t val) { + if (val < 0x80) { + *str = (char)val; + return 1; + } + + //Get number of _extra_ bytes + uint32_t num = json_get_num_bytes_as_utf8(val) - 1; + + *str++ = (char)((0x80U | (JSON_BITMASK(num) << (7U - num))) | + ((val >> (6U * num)) & JSON_BITMASK(6U - num))); + for (uint32_t j = 1; j <= num; ++j) + *str++ = (char)(0x80U | ((val >> (6U * (num - j))) & 0x3F)); + + return num + 1; +} + +void json_unescape(char* string) { + size_t outlength = 0; + uint32_t hexval, numbytes; + + char c; + for (uint32_t i = 0; (c = string[i]) != 0; i++) { + if ('\\' == c) { + c = string[++i]; + switch (c) { + case 0: + return; // end of stream + case '\"': + case '/': + case '\\': + string[outlength++] = c; + break; + + case 'b': + string[outlength++] = '\b'; + break; + case 'f': + string[outlength++] = '\f'; + break; + case 'r': + string[outlength++] = '\r'; + break; + case 'n': + string[outlength++] = '\n'; + break; + case 't': + string[outlength++] = '\t'; + break; + + case 'u': + { + uint32_t hexval = 0; + for (uint32_t j = 0; j < 4; ++j) { + char val = string[++i]; + if (0 == val) { return; } // we reached end of string + uint32_t uival = 0; + if ((val >= 'a') && (val <= 'f')) + uival = 10 + (val - 'a'); + else if ((val >= 'A') && (val <= 'F')) + uival = 10 + (val - 'A'); + else if ((val >= '0') && (val <= '9')) + uival = val - '0'; + hexval |= uival << (3 - j); + } + numbytes = json_get_num_bytes_as_utf8(hexval); + outlength += json_encode_utf8(string + outlength, hexval); + } + break; + + default: + break; + } + } + else { + string[outlength++] = c; + } + } +} \ No newline at end of file diff --git a/lib/jsmn-shadinger-1.0/src/jsmn.h b/lib/jsmn-shadinger-1.0/src/jsmn.h new file mode 100644 index 000000000..36fd11db8 --- /dev/null +++ b/lib/jsmn-shadinger-1.0/src/jsmn.h @@ -0,0 +1,118 @@ +/* + * MIT License + * + * Copyright (c) 2010 Serge Zaitsev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef JSMN_H +#define JSMN_H + +#include +#include + +// #ifdef JSMN_STATIC +// #define JSMN_API static +// #else +#define JSMN_API extern +// #endif + +/** + * JSON type identifier. Basic types are: + * o Object + * o Array + * o String + * o Other primitive: number, boolean (true/false) or null + */ +typedef enum { + // end market + JSMN_INVALID = 0, // type == 0 is invalid + JSMN_OBJECT = 1, + JSMN_ARRAY = 2, + JSMN_STRING = 3, + JSMN_PRIMITIVE = 4, + // new types created during post-processing + JSMN_KEY = 5, // JSMN_STRING with size 1 + JSMN_NULL = 6, // JSMN_PRIMITIVE starting with 'n' + JSMN_BOOL_FALSE = 7, // JSMN_PRIMITIVE starting with 'f' or 'F' + JSMN_BOOL_TRUE = 8, // JSMN_PRIMITIVE starting with 't' or 'T' + JSMN_FLOAT = 9, // JSMN_PRIMITIVE starting with '.', '-', '0-9' and containing a '.' + JSMN_INT = 10, // JSMN_PRIMITIVE starting with '-', '0-9' and not containing a '.' + JSMN_UINT = 11, // JSMN_PRIMITIVE starting with '0-9' and not containing a '.' +} jsmntype_t; + +enum jsmnerr { + /* Not enough tokens were provided */ + JSMN_ERROR_NOMEM = -1, + /* Invalid character inside JSON string */ + JSMN_ERROR_INVAL = -2, + /* The string is not a full JSON packet, more bytes expected */ + JSMN_ERROR_PART = -3 +}; + +/** + * JSON token description. + * type type (object, array, string etc.) + * start start position in JSON data string + * end end position in JSON data string + */ +// size of bitfield, sum is 32 +#define JSMN_TYPE_B 4 +#define JSMN_SIZE_B 6 // max 63 items per level (ex: max 63 keys per object) +#define JSMN_START_B 11 // max 2KB input buffer +#define JSMN_LEN_B 11 // max 2KB per item + +typedef struct jsmntok { + jsmntype_t type : JSMN_TYPE_B; + unsigned int size : JSMN_SIZE_B; + unsigned int start : JSMN_START_B; + unsigned int len : JSMN_LEN_B; +} jsmntok_t; + +/** + * JSON parser. Contains an array of token blocks available. Also stores + * the string being parsed now and current position in that string. + */ +typedef struct jsmn_parser { + unsigned int pos; /* offset in the JSON string */ + unsigned int toknext; /* next token to allocate */ + int toksuper; /* superior token node, e.g. parent object or array */ +} jsmn_parser; + +/** + * Create JSON parser over an array of tokens + */ +JSMN_API void jsmn_init(jsmn_parser *parser); + +/** + * Run JSON parser. It parses a JSON data string into and array of tokens, each + * describing + * a single JSON object. + */ +JSMN_API int jsmn_parse(jsmn_parser *parser, const char *js, const size_t len, + jsmntok_t *tokens, const unsigned int num_tokens); + +/** + * + * In-place json unescape + * + */ +void json_unescape(char* string); + +#endif /* JSMN_H */ diff --git a/lib/jsmn-shadinger-1.0/test/test-json.cpp b/lib/jsmn-shadinger-1.0/test/test-json.cpp new file mode 100644 index 000000000..9ede0a2bb --- /dev/null +++ b/lib/jsmn-shadinger-1.0/test/test-json.cpp @@ -0,0 +1,55 @@ +#include +#include +#include +#include +#include "../src/JsonParser.h" + + +static char test_simple[] = "{\"Device\":\"0x9C33\",\"Illuminance\":42,\"Occupancy\":1,\"Endpoint\":1,\"LinkQuality\":59}"; +static char test_moderate[] = "{\"ZbReceived\":{\"Prez\":{\"Device\":\"0x9C33\",\"Illuminance\":42,\"Occupancy\":1,\"Endpoint\":1,\"LinkQuality\":59}}}"; +static char test_complex[] = "{\"ZbStatus3\":[{\"Device\":\"0x7869\",\"INT\":-3,\"Name\":\"Tilt\",\"IEEEAddr\":\"0x00158D00031310F4\",\"ModelId\":\"lumi.vibration.aq1\",\"Manufacturer\":\"LUMI\",\"Endpoints\":{\"0x01\":{\"ProfileId\":\"0x0104\",\"ClustersIn\":[\"0x0000\",\"0x0003\",\"0x0019\",\"0x0101\"],\"ClustersOut\":[\"0x0000\",\"0x0004\",\"0x0003\",\"0x0005\",\"0x0019\",\"0x0101\"]},\"0x02\":{\"ProfileId\":\"0x0000\\ta\",\"ClustersIn\":[2],\"ClustersOut\":[-3,0.4,5.8]}}}]}"; + +int main(int argc, char* argv[]) { + printf("Starting... sizeof = %lu / %lu\n", sizeof(jsmntok_t), sizeof(JsonParserToken)); + + // char * json_str = test_complex; + char * json_str = test_simple; + + JsonParser parser(64); // size for 64 tokens + + int r = parser.parse(json_str); + + printf("r = %d\n", r); + + for (uint32_t i=0; istart; + uint32_t len = token.t->len; + printf("Tok[%2d]= type=%s, start=%d, len=%d, size=%d, str ='%s'\n", i, JSMNTypeName(token.t->type), start, len, token.t->size, (token.t->type >= JSMN_STRING || 1) ? &json_str[start] : ""); + } + printf("==================\n"); + JsonParserObject root = parser.getRootObject(); + + for (const auto key : root) { + // printf("Index = %ld\n", parser.index(key)); + JsonParserToken value = key.getValue(); + printf("Key = %s, Val type = %s\n", parser.getStr(key), JSMNTypeName(value.t->type)); + if (value.isArray()) { + for (const auto arr_val : JsonParserArray(value)) { + printf("Array = %s, type = %s\n", parser.getStr(arr_val), JSMNTypeName(arr_val.t->type)); + } + } else { + printf("Value = %s\n", parser.getStr(value)); + } + } + + // root.nextOne(); + // printf("Index = %ld\n", parser.index(root)); + // root.skipObject(); + // printf("Index = %ld\n", parser.index(root)); + + JsonParserToken oc = parser.GetCaseInsensitive(root, "occupancy"); + printf("Looking for 'Occupancy': %s, %d\n", parser.getStr(oc), parser.getInt(oc)); + JsonParserToken oc2 = parser.GetCaseInsensitive(root, "occupanc"); + printf("Looking for 'Occupanc': %s, %d\n", parser.getStr(oc2), parser.getInt(oc2)); +} diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index 689b71748..2af073b29 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -13,6 +13,7 @@ - Add new shutter modes (#9244) - Add Zigbee auto-config when pairing - Add support for MLX90640 IR array temperature sensor by Christian Baars +- Change replace ArduinoJson with JSMN for JSON parsing ### 8.5.0 20200907 diff --git a/tasmota/support.ino b/tasmota/support.ino index eddffeab6..0c6ab80d3 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -29,6 +29,7 @@ extern struct rst_info resetInfo; \*********************************************************************************************/ #include +#include "JsonParser.h" Ticker tickerOSWatch; @@ -1412,8 +1413,9 @@ bool GetUsedInModule(uint32_t val, uint16_t *arr) return false; } -bool JsonTemplate(const char* dataBuf) +bool JsonTemplate(char* dataBuf) { +#if 0 // {"NAME":"Generic","GPIO":[17,254,29,254,7,254,254,254,138,254,139,254,254],"FLAG":1,"BASE":255} if (strlen(dataBuf) < 9) { return false; } // Workaround exception if empty JSON like {} - Needs checks @@ -1454,6 +1456,46 @@ bool JsonTemplate(const char* dataBuf) Settings.user_template_base = base -1; // Default WEMOS } return true; +#else + // {"NAME":"Generic","GPIO":[17,254,29,254,7,254,254,254,138,254,139,254,254],"FLAG":1,"BASE":255} + + if (strlen(dataBuf) < 9) { return false; } // Workaround exception if empty JSON like {} - Needs checks + + JsonParserObject root = JsonParser((char*) dataBuf).getRootObject(); + if (!root) { return false; } + + // All parameters are optional allowing for partial changes + JsonParserToken val = root[PSTR(D_JSON_NAME)]; + if (val) { + SettingsUpdateText(SET_TEMPLATE_NAME, val.getStr()); + } + JsonParserArray arr = root[PSTR(D_JSON_GPIO)]; + if (arr) { + for (uint32_t i = 0; i < ARRAY_SIZE(Settings.user_template.gp.io); i++) { +#ifdef ESP8266 + Settings.user_template.gp.io[i] = arr[i].getUInt(); +#else // ESP32 + uint16_t gpio = arr[i].getUInt(); + if (gpio == (AGPIO(GPIO_NONE) +1)) { + gpio = AGPIO(GPIO_USER); + } + Settings.user_template.gp.io[i] = gpio; +#endif + } + } + val = root[PSTR(D_JSON_FLAG)]; + if (val) { + uint32_t flag = val.getUInt(); + memcpy(&Settings.user_template.flag, &flag, sizeof(gpio_flag)); + } + val = root[PSTR(D_JSON_BASE)]; + if (val) { + uint32_t base = val.getUInt(); + if ((0 == base) || !ValidTemplateModule(base -1)) { base = 18; } + Settings.user_template_base = base -1; // Default WEMOS + } + return true; +#endif } void TemplateJson(void) diff --git a/tasmota/support_json.ino b/tasmota/support_json.ino index b78c68eab..f1b2d1fd2 100644 --- a/tasmota/support_json.ino +++ b/tasmota/support_json.ino @@ -88,6 +88,7 @@ String EscapeJSONString(const char *str) { // // If the key is not found, returns a nullptr // Input: needle cannot be NULL but may be PROGMEM +#if 0 const JsonVariant &GetCaseInsensitive(const JsonObject &json, const char *needle) { // key can be in PROGMEM // if needle == "?" then we return the first valid key @@ -113,3 +114,4 @@ const JsonVariant &GetCaseInsensitive(const JsonObject &json, const char *needle bool HasKeyCaseInsensitive(const JsonObject &json, const char *needle) { return &GetCaseInsensitive(json, needle) != nullptr; } +#endif \ No newline at end of file diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index ef80c4abf..16daa8f6f 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -27,6 +27,8 @@ #define XDRV_01 1 +#include "JsonParser.h" + #ifndef WIFI_SOFT_AP_CHANNEL #define WIFI_SOFT_AP_CHANNEL 1 // Soft Access Point Channel number between 1 and 11 as used by WifiManager web GUI #endif @@ -3344,6 +3346,7 @@ bool JsonWebColor(const char* dataBuf) // Default pre v7 (Light theme) // {"WebColor":["#000","#fff","#f2f2f2","#000","#fff","#000","#fff","#f00","#008000","#fff","#1fa3ec","#0e70a4","#d43535","#931f1f","#47c266","#5aaf6f","#fff","#999","#000"]} // {"WebColor":["#000000","#ffffff","#f2f2f2","#000000","#ffffff","#000000","#ffffff","#ff0000","#008000","#ffffff","#1fa3ec","#0e70a4","#d43535","#931f1f","#47c266","#5aaf6f","#ffffff","#999999","#000000"]} +#if 0 char dataBufLc[strlen(dataBuf) +1]; LowerCase(dataBufLc, dataBuf); RemoveSpace(dataBufLc); @@ -3362,6 +3365,21 @@ bool JsonWebColor(const char* dataBuf) } } } +#else + JsonParserObject root = JsonParser((char*) dataBuf).getRootObject(); + JsonParserArray arr = root[PSTR(D_CMND_WEBCOLOR)].getArray(); + if (arr) { // if arr is valid, i.e. json is valid, the key D_CMND_WEBCOLOR was found and the token is an arra + uint32_t i = 0; + for (auto color : arr) { + if (i < COL_LAST) { + WebHexCode(i, color.getStr()); + } else { + break; + } + i++; + } + } +#endif return true; } diff --git a/tasmota/xdrv_05_irremote.ino b/tasmota/xdrv_05_irremote.ino index bb5ce0c3c..77a89a697 100644 --- a/tasmota/xdrv_05_irremote.ino +++ b/tasmota/xdrv_05_irremote.ino @@ -25,6 +25,7 @@ #define XDRV_05 5 #include +#include "JsonParser.h" enum IrErrors { IE_NO_ERROR, IE_INVALID_RAWDATA, IE_INVALID_JSON, IE_SYNTAX_IRSEND }; @@ -180,6 +181,7 @@ uint32_t IrRemoteCmndIrSendJson(void) // IRsend { "protocol": "RC5", "bits": 12, "data":"0xC86" } // IRsend { "protocol": "SAMSUNG", "bits": 32, "data": 551502015 } +#if 0 char dataBufUc[XdrvMailbox.data_len + 1]; UpperCase(dataBufUc, XdrvMailbox.data); RemoveSpace(dataBufUc); @@ -200,6 +202,18 @@ uint32_t IrRemoteCmndIrSendJson(void) uint16_t bits = root[UpperCase_P(parm_uc, PSTR(D_JSON_IR_BITS))]; uint64_t data = strtoull(root[UpperCase_P(parm_uc, PSTR(D_JSON_IR_DATA))], nullptr, 0); uint16_t repeat = root[UpperCase_P(parm_uc, PSTR(D_JSON_IR_REPEAT))]; +#else + RemoveSpace(XdrvMailbox.data); // TODO is this really needed? + JsonParserObject root = JsonParser((chat*) XdrvMailbox.data).getRootObject(); + if (!root) { return IE_INVALID_JSON; } + + // IRsend { "protocol": "SAMSUNG", "bits": 32, "data": 551502015 } + // IRsend { "protocol": "NEC", "bits": 32, "data":"0x02FDFE80", "repeat": 2 } + const char *protocol = root.getStr(PSTR(D_JSON_IR_PROTOCOL)); + uint16_t bits = root.getUInt(PSTR(D_JSON_IR_BITS)); + uint64_t data = root.getULong(PSTR(D_JSON_IR_DATA)); + uint16_t repeat = root.getUInt(PSTR(D_JSON_IR_REPEAT)); +#endif // check if the IRSend is great than repeat if (XdrvMailbox.index > repeat + 1) { repeat = XdrvMailbox.index - 1; diff --git a/tasmota/xdrv_05_irremote_full.ino b/tasmota/xdrv_05_irremote_full.ino index 9649e87b4..846bd1b5d 100644 --- a/tasmota/xdrv_05_irremote_full.ino +++ b/tasmota/xdrv_05_irremote_full.ino @@ -29,6 +29,7 @@ #include #include #include +#include "JsonParser.h" enum IrErrors { IE_RESPONSE_PROVIDED, IE_NO_ERROR, IE_INVALID_RAWDATA, IE_INVALID_JSON, IE_SYNTAX_IRSEND, IE_SYNTAX_IRHVAC, IE_UNSUPPORTED_HVAC, IE_UNSUPPORTED_PROTOCOL }; @@ -267,6 +268,16 @@ String listSupportedProtocols(bool hvac) { return l; } +bool strToBool(class JsonParserToken token, bool def) { + if (token.isBool() || token.isNum()) { + return token.getBool(); + } else if (token.isStr()) { + return IRac::strToBool(token.getStr()); + } else { + return def; + } +} + // used to convert values 0-5 to fanspeed_t const stdAc::fanspeed_t IrHvacFanSpeed[] PROGMEM = { stdAc::fanspeed_t::kAuto, stdAc::fanspeed_t::kMin, stdAc::fanspeed_t::kLow,stdAc::fanspeed_t::kMedium, @@ -275,17 +286,10 @@ const stdAc::fanspeed_t IrHvacFanSpeed[] PROGMEM = { stdAc::fanspeed_t::kAuto, uint32_t IrRemoteCmndIrHvacJson(void) { stdAc::state_t state, prev; - char parm_uc[12]; //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("IRHVAC: Received %s"), XdrvMailbox.data); - char dataBufUc[XdrvMailbox.data_len + 1]; - UpperCase(dataBufUc, XdrvMailbox.data); - RemoveSpace(dataBufUc); - if (strlen(dataBufUc) < 8) { return IE_INVALID_JSON; } - - DynamicJsonBuffer jsonBuf; - JsonObject &json = jsonBuf.parseObject(dataBufUc); - if (!json.success()) { return IE_INVALID_JSON; } + JsonParserObject root = JsonParser((char*) XdrvMailbox.data).getRootObject(); + if (!root) { return IE_INVALID_JSON; } // from: https://github.com/crankyoldgit/IRremoteESP8266/blob/master/examples/CommonAcControl/CommonAcControl.ino state.protocol = decode_type_t::UNKNOWN; @@ -307,60 +311,47 @@ uint32_t IrRemoteCmndIrHvacJson(void) state.clean = false; // Turn off any Cleaning options if we can. state.clock = -1; // Don't set any current time if we can avoid it. - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_VENDOR)); - if (json.containsKey(parm_uc)) { state.protocol = strToDecodeType(json[parm_uc]); } - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_PROTOCOL)); - if (json.containsKey(parm_uc)) { state.protocol = strToDecodeType(json[parm_uc]); } // also support 'protocol' + if (root[PSTR(D_JSON_IRHVAC_VENDOR)]) { state.protocol = strToDecodeType(root.getStr(PSTR(D_JSON_IRHVAC_VENDOR))); } + if (root[PSTR(D_JSON_IRHVAC_PROTOCOL)]) { state.protocol = strToDecodeType(root.getStr(PSTR(D_JSON_IRHVAC_PROTOCOL))); } + // UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_VENDOR)); + // if (json.containsKey(parm_uc)) { state.protocol = strToDecodeType(json[parm_uc]); } + // UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_PROTOCOL)); + // if (json.containsKey(parm_uc)) { state.protocol = strToDecodeType(json[parm_uc]); } // also support 'protocol' if (decode_type_t::UNKNOWN == state.protocol) { return IE_UNSUPPORTED_HVAC; } if (!IRac::isProtocolSupported(state.protocol)) { return IE_UNSUPPORTED_HVAC; } // for fan speed, we also support 1-5 values - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_FANSPEED)); - if (json.containsKey(parm_uc)) { - uint32_t fan_speed = json[parm_uc]; + JsonParserToken tok_fan_speed = root[PSTR(D_JSON_IRHVAC_FANSPEED)]; + if (tok_fan_speed) { + uint32_t fan_speed = tok_fan_speed.getUInt(); if ((fan_speed >= 1) && (fan_speed <= 5)) { state.fanspeed = (stdAc::fanspeed_t) pgm_read_byte(&IrHvacFanSpeed[fan_speed]); } else { - state.fanspeed = IRac::strToFanspeed(json[parm_uc]); + state.fanspeed = IRac::strToFanspeed(tok_fan_speed.getStr()); } } - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_MODEL)); - if (json.containsKey(parm_uc)) { state.model = IRac::strToModel(json[parm_uc]); } - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_MODE)); - if (json.containsKey(parm_uc)) { state.mode = IRac::strToOpmode(json[parm_uc]); } - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_SWINGV)); - if (json.containsKey(parm_uc)) { state.swingv = IRac::strToSwingV(json[parm_uc]); } - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_SWINGH)); - if (json.containsKey(parm_uc)) { state.swingh = IRac::strToSwingH(json[parm_uc]); } - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_TEMP)); - if (json.containsKey(parm_uc)) { state.degrees = json[parm_uc]; } + if (root[PSTR(D_JSON_IRHVAC_MODEL)]) { state.model = IRac::strToModel(PSTR(D_JSON_IRHVAC_MODEL)]); } + if (root[PSTR(D_JSON_IRHVAC_MODE)]) { state.mode = IRac::strToOpmode(PSTR(D_JSON_IRHVAC_MODE)]); } + if (root[PSTR(D_JSON_IRHVAC_SWINGV)]) { state.swingv = IRac::strToSwingV(PSTR(D_JSON_IRHVAC_SWINGV)]); } + if (root[PSTR(D_JSON_IRHVAC_SWINGH)]) { state.swingh = IRac::strToSwingV(PSTR(D_JSON_IRHVAC_SWINGH)]); } + state.degrees = root.getFloat(PSTR(D_JSON_IRHVAC_TEMP), state.degrees); // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("model %d, mode %d, fanspeed %d, swingv %d, swingh %d"), // state.model, state.mode, state.fanspeed, state.swingv, state.swingh); // decode booleans - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_POWER)); - if (json.containsKey(parm_uc)) { state.power = IRac::strToBool(json[parm_uc]); } - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_CELSIUS)); - if (json.containsKey(parm_uc)) { state.celsius = IRac::strToBool(json[parm_uc]); } - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_LIGHT)); - if (json.containsKey(parm_uc)) { state.light = IRac::strToBool(json[parm_uc]); } - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_BEEP)); - if (json.containsKey(parm_uc)) { state.beep = IRac::strToBool(json[parm_uc]); } - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_ECONO)); - if (json.containsKey(parm_uc)) { state.econo = IRac::strToBool(json[parm_uc]); } - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_FILTER)); - if (json.containsKey(parm_uc)) { state.filter = IRac::strToBool(json[parm_uc]); } - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_TURBO)); - if (json.containsKey(parm_uc)) { state.turbo = IRac::strToBool(json[parm_uc]); } - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_QUIET)); - if (json.containsKey(parm_uc)) { state.quiet = IRac::strToBool(json[parm_uc]); } - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_CLEAN)); - if (json.containsKey(parm_uc)) { state.clean = IRac::strToBool(json[parm_uc]); } + state.power = strToBool(root[PSTR(D_JSON_IRHVAC_POWER)], state.power); + state.celsius = strToBool(root[PSTR(D_JSON_IRHVAC_CELSIUS)], state.celsius); + state.light = strToBool(root[PSTR(D_JSON_IRHVAC_LIGHT)], state.light); + state.beep = strToBool(root[PSTR(D_JSON_IRHVAC_BEEP)], state.beep); + state.econo = strToBool(root[PSTR(D_JSON_IRHVAC_ECONO)], state.econo); + state.filter = strToBool(root[PSTR(D_JSON_IRHVAC_FILTER)], state.filter); + state.turbo = strToBool(root[PSTR(D_JSON_IRHVAC_TURBO)], state.turbo); + state.quiet = strToBool(root[PSTR(D_JSON_IRHVAC_QUIET)], state.quiet); + state.clean = strToBool(root[PSTR(D_JSON_IRHVAC_CLEAN)], state.clean); // optional timer and clock - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_SLEEP)); - if (json[parm_uc]) { state.sleep = json[parm_uc]; } + state.sleep = root.getInt(PSTR(D_JSON_IRHVAC_SLEEP), state.sleep); //if (json[D_JSON_IRHVAC_CLOCK]) { state.clock = json[D_JSON_IRHVAC_CLOCK]; } // not sure it's useful to support 'clock' IRac ac(Pin(GPIO_IRSEND)); diff --git a/tasmota/xdrv_09_timers.ino b/tasmota/xdrv_09_timers.ino index 1ecfb0b67..79efc1f1c 100644 --- a/tasmota/xdrv_09_timers.ino +++ b/tasmota/xdrv_09_timers.ino @@ -337,6 +337,7 @@ void CmndTimer(void) Settings.timer[index -1].data = Settings.timer[XdrvMailbox.payload -1].data; // Copy timer } } else { +#if 0 //#ifndef USE_RULES #if defined(USE_RULES)==0 && defined(USE_SCRIPT)==0 if (devices_present) { @@ -419,6 +420,95 @@ void CmndTimer(void) index++; } //#ifndef USE_RULES +#else +//#ifndef USE_RULES +#if defined(USE_RULES)==0 && defined(USE_SCRIPT)==0 + if (devices_present) { +#endif + JsonParserObject root = JsonParser(XdrvMailbox.data).getRootObject(); + if (!root) { + Response_P(PSTR("{\"" D_CMND_TIMER "%d\":\"" D_JSON_INVALID_JSON "\"}"), index); // JSON decode failed + error = 1; + } + else { + char parm_uc[10]; + index--; + JsonParserToken val = root[PSTR(D_JSON_TIMER_ARM)]; + if (val) { + Settings.timer[index].arm = (val.getInt() != 0); + } +#ifdef USE_SUNRISE + val = root[PSTR(D_JSON_TIMER_MODE)]; + if (val) { + Settings.timer[index].mode = val.getUInt() & 0x03; + } +#endif + val = root[PSTR(D_JSON_TIMER_TIME)]; + if (val) { + uint16_t itime = 0; + int8_t value = 0; + uint8_t sign = 0; + char time_str[10]; + + strlcpy(time_str, val.getStr(), sizeof(time_str)); + const char *substr = strtok(time_str, ":"); + if (substr != nullptr) { + if (strchr(substr, '-')) { + sign = 1; + substr++; + } + value = atoi(substr); + if (sign) { value += 12; } // Allow entering timer offset from -11:59 to -00:01 converted to 12:01 to 23:59 + if (value > 23) { value = 23; } + itime = value * 60; + substr = strtok(nullptr, ":"); + if (substr != nullptr) { + value = atoi(substr); + if (value < 0) { value = 0; } + if (value > 59) { value = 59; } + itime += value; + } + } + Settings.timer[index].time = itime; + } + val = root[PSTR(D_JSON_TIMER_WINDOW)]; + if (val) { + Settings.timer[index].window = val.getUInt() & 0x0F; + TimerSetRandomWindow(index); + } + val = root[PSTR(D_JSON_TIMER_DAYS)]; + if (val) { + // SMTWTFS = 1234567 = 0011001 = 00TW00S = --TW--S + Settings.timer[index].days = 0; + const char *tday = val.getStr(); + uint8_t i = 0; + char ch = *tday++; + while ((ch != '\0') && (i < 7)) { + if (ch == '-') { ch = '0'; } + uint8_t mask = 1 << i++; + Settings.timer[index].days |= (ch == '0') ? 0 : mask; + ch = *tday++; + } + } + val = root[PSTR(D_JSON_TIMER_REPEAT)]; + if (val) { + Settings.timer[index].repeat = (val.getUInt() != 0); + } + val = root[PSTR(D_JSON_TIMER_OUTPUT)]; + if (val) { + uint8_t device = (val.getUInt() -1) & 0x0F; + Settings.timer[index].device = (device < devices_present) ? device : 0; + } + val = root[PSTR(D_JSON_TIMER_ACTION)]; + if (val) { + uint8_t action = val.getUInt() & 0x03; + Settings.timer[index].power = (devices_present) ? action : 3; // If no devices than only allow rules + } + + index++; + } +//#ifndef USE_RULES +#endif #if defined(USE_RULES)==0 && defined(USE_SCRIPT)==0 } else { Response_P(PSTR("{\"" D_CMND_TIMER "%d\":\"" D_JSON_TIMER_NO_DEVICE "\"}"), index); // No outputs defined so nothing to control diff --git a/tasmota/xdrv_10_rules.ino b/tasmota/xdrv_10_rules.ino index 4476fc2b0..5e2441de5 100644 --- a/tasmota/xdrv_10_rules.ino +++ b/tasmota/xdrv_10_rules.ino @@ -497,6 +497,7 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule) rule_name = rule_name.substring(0, pos); // "SUBTYPE1#CURRENT" } +#if 0 // StaticJsonBuffer<1280> jsonBuf; // Was 1024 until 20200811 DynamicJsonBuffer jsonBuf; // Was static until 20200812 JsonObject &root = jsonBuf.parseObject(event); @@ -528,6 +529,43 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule) } else { str_value = (*obj)[rule_name]; // "CURRENT" } +#else + + char buf[event.length()+1]; + strcpy(buf, event.c_str()); + JsonParser parser = JsonParser(buf); + JsonParserObject obj = parser.getRootObject(); + if (!obj) { + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL: Event too long (%d)"), event.length()); + return false; // No valid JSON data + } + String subtype; + uint32_t i = 0; + while ((pos = rule_name.indexOf("#")) > 0) { // "SUBTYPE1#SUBTYPE2#CURRENT" + subtype = rule_name.substring(0, pos); + obj = obj[subtype.c_str()].getObject(); + if (!obj) { return false; } // not found + + rule_name = rule_name.substring(pos +1); + if (i++ > 10) { return false; } // Abandon possible loop + + yield(); + } + + JsonParserToken val = obj[rule_name.c_str()]; + if (!val) { return false; } // last level not found + const char* str_value; + if (rule_name_idx) { + if (val.isArray()) { + str_value = (val.getArray())[rule_name_idx -1].getStr(); + } else { + str_value = val.getStr(); + } + } else { + str_value = val.getStr(); // "CURRENT" + } +#endif + //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL: Name %s, Value |%s|, TrigCnt %d, TrigSt %d, Source %s, Json %s"), // rule_name.c_str(), rule_svalue, Rules.trigger_count[rule_set], bitRead(Rules.triggers[rule_set], Rules.trigger_count[rule_set]), event.c_str(), (str_value) ? str_value : "none"); @@ -1034,20 +1072,28 @@ bool RulesMqttData(void) if (event_item.Key.length() == 0) { //If did not specify Key value = sData; } else { //If specified Key, need to parse Key/Value from JSON data - StaticJsonBuffer<500> jsonBuf; - JsonObject& jsonData = jsonBuf.parseObject(sData); + JsonParserObject jsonData = JsonParser((char*)sData.c_str()).getRootObject(); + + // StaticJsonBuffer<500> jsonBuf; + // JsonObject& jsonData = jsonBuf.parseObject(sData); String key1 = event_item.Key; String key2; - if (!jsonData.success()) break; //Failed to parse JSON data, ignore this message. + if (!jsonData) break; //Failed to parse JSON data, ignore this message. int dot; if ((dot = key1.indexOf('.')) > 0) { key2 = key1.substring(dot+1); key1 = key1.substring(0, dot); - if (!jsonData[key1][key2].success()) break; //Failed to get the key/value, ignore this message. - value = (const char *)jsonData[key1][key2]; + JsonParserToken value_tok = jsonData[key1.c_str()][key2.c_str()]; + if (!value_tok) break; //Failed to get the key/value, ignore this message. + value = value_tok.getStr(); + // if (!jsonData[key1][key2].success()) break; //Failed to get the key/value, ignore this message. + // value = (const char *)jsonData[key1][key2]; } else { - if (!jsonData[key1].success()) break; - value = (const char *)jsonData[key1]; + JsonParserToken value_tok = jsonData[key1.c_str()]; + if (!value_tok) break; //Failed to get the key/value, ignore this message. + value = value_tok.getStr(); + // if (!jsonData[key1].success()) break; + // value = (const char *)jsonData[key1]; } } value.trim(); diff --git a/tasmota/xdrv_20_hue.ino b/tasmota/xdrv_20_hue.ino index 974ebbb78..6bdc420af 100644 --- a/tasmota/xdrv_20_hue.ino +++ b/tasmota/xdrv_20_hue.ino @@ -569,10 +569,12 @@ void HueLightsCommand(uint8_t device, uint32_t device_id, String &response) { if (Webserver->args()) { response = "["; - StaticJsonBuffer<300> jsonBuffer; - JsonObject &hue_json = jsonBuffer.parseObject(Webserver->arg((Webserver->args())-1)); - if (hue_json.containsKey("on")) { - on = hue_json["on"]; + JsonParser parser = JsonParser((char*) Webserver->arg((Webserver->args())-1).c_str()); + JsonParserObject root = parser.getRootObject(); + + JsonParserToken hue_on = root[PSTR("on")]; + if (hue_on) { + on = hue_on.getBool(); snprintf_P(buf, buf_size, PSTR("{\"success\":{\"/lights/%d/state/on\":%s}}"), device_id, on ? "true" : "false"); @@ -587,15 +589,6 @@ void HueLightsCommand(uint8_t device, uint32_t device_id, String &response) { } } else { #endif -/* - switch(on) - { - case false : ExecuteCommandPower(device, POWER_OFF, SRC_HUE); - break; - case true : ExecuteCommandPower(device, POWER_ON, SRC_HUE); - break; - } -*/ ExecuteCommandPower(device, (on) ? POWER_ON : POWER_OFF, SRC_HUE); response += buf; resp = true; @@ -619,8 +612,10 @@ void HueLightsCommand(uint8_t device, uint32_t device_id, String &response) { } prev_x_str[0] = prev_y_str[0] = 0; // reset xy string - if (hue_json.containsKey("bri")) { // Brightness is a scale from 1 (the minimum the light is capable of) to 254 (the maximum). Note: a brightness of 1 is not off. - bri = hue_json["bri"]; + parser.setCurrent(); + JsonParserToken hue_bri = root[PSTR("bri")]; + if (hue_bri) { // Brightness is a scale from 1 (the minimum the light is capable of) to 254 (the maximum). Note: a brightness of 1 is not off. + bri = hue_bri.getUInt(); prev_bri = bri; // store command value if (resp) { response += ","; } snprintf_P(buf, buf_size, @@ -634,15 +629,19 @@ void HueLightsCommand(uint8_t device, uint32_t device_id, String &response) { } resp = true; } + // handle xy before Hue/Sat // If the request contains both XY and HS, we wan't to give priority to HS - if (hue_json.containsKey("xy")) { - float x = hue_json["xy"][0]; - float y = hue_json["xy"][1]; - const String &x_str = hue_json["xy"][0]; - const String &y_str = hue_json["xy"][1]; - x_str.toCharArray(prev_x_str, sizeof(prev_x_str)); - y_str.toCharArray(prev_y_str, sizeof(prev_y_str)); + parser.setCurrent(); + JsonParserToken hue_xy = root[PSTR("xy")]; + if (hue_xy) { + JsonParserArray arr_xy = JsonParserArray(hue_xy); + JsonParserToken tok_x = arr_xy[0]; + JsonParserToken tok_y = arr_xy[1]; + float x = tok_x.getFloat(); + float y = tok_y.getFloat(); + strlcpy(prev_x_str, tok_x.getStr(), sizeof(prev_x_str)); + strlcpy(prev_y_str, tok_y.getStr(), sizeof(prev_y_str)); uint8_t rr,gg,bb; LightStateClass::XyToRgb(x, y, &rr, &gg, &bb); LightStateClass::RgbToHsb(rr, gg, bb, &hue, &sat, nullptr); @@ -658,8 +657,11 @@ void HueLightsCommand(uint8_t device, uint32_t device_id, String &response) { resp = true; change = true; } - if (hue_json.containsKey("hue")) { // The hue value is a wrapping value between 0 and 65535. Both 0 and 65535 are red, 25500 is green and 46920 is blue. - hue = hue_json["hue"]; + + parser.setCurrent(); + JsonParserToken hue_hue = root[PSTR("hue")]; + if (hue_hue) { // The hue value is a wrapping value between 0 and 65535. Both 0 and 65535 are red, 25500 is green and 46920 is blue. + hue = hue_hue.getUInt(); prev_hue = hue; if (resp) { response += ","; } snprintf_P(buf, buf_size, @@ -674,8 +676,11 @@ void HueLightsCommand(uint8_t device, uint32_t device_id, String &response) { } resp = true; } - if (hue_json.containsKey("sat")) { // Saturation of the light. 254 is the most saturated (colored) and 0 is the least saturated (white). - sat = hue_json["sat"]; + + parser.setCurrent(); + JsonParserToken hue_sat = root[PSTR("sat")]; + if (hue_sat) { // Saturation of the light. 254 is the most saturated (colored) and 0 is the least saturated (white). + sat = hue_sat.getUInt(); prev_sat = sat; // store command value if (resp) { response += ","; } snprintf_P(buf, buf_size, @@ -690,8 +695,11 @@ void HueLightsCommand(uint8_t device, uint32_t device_id, String &response) { } resp = true; } - if (hue_json.containsKey("ct")) { // Color temperature 153 (Cold) to 500 (Warm) - ct = hue_json["ct"]; + + parser.setCurrent(); + JsonParserToken hue_ct = root[PSTR("ct")]; + if (hue_ct) { // Color temperature 153 (Cold) to 500 (Warm) + ct = hue_ct.getUInt(); prev_ct = ct; // store commande value if (resp) { response += ","; } snprintf_P(buf, buf_size, @@ -704,6 +712,7 @@ void HueLightsCommand(uint8_t device, uint32_t device_id, String &response) { } resp = true; } + if (change) { #ifdef USE_SHUTTER if (ShutterState(device)) { diff --git a/tasmota/xdrv_23_zigbee_1_headers.ino b/tasmota/xdrv_23_zigbee_1_headers.ino index c7e3093e2..3ccb54672 100644 --- a/tasmota/xdrv_23_zigbee_1_headers.ino +++ b/tasmota/xdrv_23_zigbee_1_headers.ino @@ -39,42 +39,6 @@ public: void ZigbeeZCLSend_Raw(const ZigbeeZCLSendMessage &zcl); bool ZbAppendWriteBuf(SBuffer & buf, const Z_attribute & attr, bool prepend_status_ok = false); -// get the result as a string (const char*) and nullptr if there is no field or the string is empty -const char * getCaseInsensitiveConstCharNull(const JsonObject &json, const char *needle) { - const JsonVariant &val = GetCaseInsensitive(json, needle); - if (&val) { - const char *val_cs = val.as(); - if (strlen(val_cs)) { - return val_cs; - } - } - return nullptr; -} - -// Get an JSON attribute, with case insensitive key search starting with *needle -JsonVariant &startsWithCaseInsensitive(const JsonObject &json, const char *needle) { - // key can be in PROGMEM - if ((nullptr == &json) || (nullptr == needle) || (0 == pgm_read_byte(needle))) { - return *(JsonVariant*)nullptr; - } - - String needle_s((const __FlashStringHelper *)needle); - needle_s.toLowerCase(); - - for (auto kv : json) { - String key_s(kv.key); - key_s.toLowerCase(); - JsonVariant &value = kv.value; - - if (key_s.startsWith(needle_s)) { - return value; - } - } - // if not found - return *(JsonVariant*)nullptr; -} - - uint32_t parseHex(const char **data, size_t max_len = 8) { uint32_t ret = 0; for (uint32_t i = 0; i < max_len; i++) { diff --git a/tasmota/xdrv_23_zigbee_2_devices.ino b/tasmota/xdrv_23_zigbee_2_devices.ino index fa7775d03..e3182faad 100644 --- a/tasmota/xdrv_23_zigbee_2_devices.ino +++ b/tasmota/xdrv_23_zigbee_2_devices.ino @@ -19,6 +19,8 @@ #ifdef USE_ZIGBEE +#include "JsonParser.h" + #ifndef ZIGBEE_SAVE_DELAY_SECONDS #define ZIGBEE_SAVE_DELAY_SECONDS 2 // wait for 2s before saving Zigbee info #endif @@ -261,7 +263,7 @@ public: // Dump json String dumpLightState(uint16_t shortaddr) const; String dump(uint32_t dump_mode, uint16_t status_shortaddr = 0) const; - int32_t deviceRestore(const JsonObject &json); + int32_t deviceRestore(JsonParserObject json); // General Zigbee device profile support void setZbProfile(uint16_t shortaddr, uint8_t zb_profile); @@ -936,7 +938,7 @@ void Z_Devices::clean(void) { // - a number 0..99, the index number in ZigbeeStatus // - a friendly name, between quotes, example: "Room_Temp" uint16_t Z_Devices::parseDeviceParam(const char * param, bool short_must_be_known) const { - if (nullptr == param) { return 0; } + if (nullptr == param) { return BAD_SHORTADDR; } size_t param_len = strlen(param); char dataBuf[param_len + 1]; strcpy(dataBuf, param); @@ -1070,7 +1072,7 @@ String Z_Devices::dump(uint32_t dump_mode, uint16_t status_shortaddr) const { // <0 : Error // // Ex: {"Device":"0x5ADF","Name":"IKEA_Light","IEEEAddr":"0x90FD9FFFFE03B051","ModelId":"TRADFRI bulb E27 WS opal 980lm","Manufacturer":"IKEA of Sweden","Endpoints":["0x01","0xF2"]} -int32_t Z_Devices::deviceRestore(const JsonObject &json) { +int32_t Z_Devices::deviceRestore(JsonParserObject json) { // params uint16_t device = 0x0000; // 0x0000 is coordinator so considered invalid @@ -1078,56 +1080,38 @@ int32_t Z_Devices::deviceRestore(const JsonObject &json) { const char * modelid = nullptr; const char * manufid = nullptr; const char * friendlyname = nullptr; - int8_t bulbtype = 0xFF; + int8_t bulbtype = -1; size_t endpoints_len = 0; // read mandatory "Device" - const JsonVariant &val_device = GetCaseInsensitive(json, PSTR("Device")); - if (nullptr != &val_device) { - device = strToUInt(val_device); + JsonParserToken val_device = json[PSTR("Device")]; + if (val_device) { + device = (uint32_t) val_device.getUInt(device); } else { return -1; // missing "Device" attribute } - // read "IEEEAddr" 64 bits in format "0x0000000000000000" - const JsonVariant &val_ieeeaddr = GetCaseInsensitive(json, PSTR("IEEEAddr")); - if (nullptr != &val_ieeeaddr) { - ieeeaddr = strtoull(val_ieeeaddr.as(), nullptr, 0); - } - - // read "Name" - friendlyname = getCaseInsensitiveConstCharNull(json, PSTR("Name")); - - // read "ModelId" - modelid = getCaseInsensitiveConstCharNull(json, PSTR("ModelId")); - - // read "Manufacturer" - manufid = getCaseInsensitiveConstCharNull(json, PSTR("Manufacturer")); - - // read "Light" - const JsonVariant &val_bulbtype = GetCaseInsensitive(json, PSTR(D_JSON_ZIGBEE_LIGHT)); - if (nullptr != &val_bulbtype) { bulbtype = strToUInt(val_bulbtype);; } + ieeeaddr = json.getULong(PSTR("IEEEAddr"), ieeeaddr); // read "IEEEAddr" 64 bits in format "0x0000000000000000" + friendlyname = json.getStr(PSTR("Name"), nullptr); // read "Name" + modelid = json.getStr(PSTR("ModelId"), nullptr); + manufid = json.getStr(PSTR("Manufacturer"), nullptr); + JsonParserToken tok_bulbtype = json[PSTR(D_JSON_ZIGBEE_LIGHT)]; // update internal device information updateDevice(device, ieeeaddr); if (modelid) { setModelId(device, modelid); } if (manufid) { setManufId(device, manufid); } if (friendlyname) { setFriendlyName(device, friendlyname); } - if (&val_bulbtype) { setHueBulbtype(device, bulbtype); } + if (tok_bulbtype) { setHueBulbtype(device, tok_bulbtype.getInt()); } // read "Endpoints" - const JsonVariant &val_endpoints = GetCaseInsensitive(json, PSTR("Endpoints")); - if ((nullptr != &val_endpoints) && (val_endpoints.is())) { - const JsonArray &arr_ep = val_endpoints.as(); - endpoints_len = arr_ep.size(); + JsonParserToken val_endpoints = json[PSTR("Endpoints")]; + if (val_endpoints.isArray()) { + JsonParserArray arr_ep = JsonParserArray(val_endpoints); clearEndpoints(device); // clear even if array is empty - if (endpoints_len) { - for (auto ep_elt : arr_ep) { - uint8_t ep = strToUInt(ep_elt); - if (ep) { - addEndpoint(device, ep); - } - } + for (auto ep_elt : arr_ep) { + uint8_t ep = ep_elt.getUInt(); + if (ep) { addEndpoint(device, ep); } } } diff --git a/tasmota/xdrv_23_zigbee_3_hue.ino b/tasmota/xdrv_23_zigbee_3_hue.ino index 2accf849c..4b95a58be 100644 --- a/tasmota/xdrv_23_zigbee_3_hue.ino +++ b/tasmota/xdrv_23_zigbee_3_hue.ino @@ -218,10 +218,12 @@ void ZigbeeHandleHue(uint16_t shortaddr, uint32_t device_id, String &response) { if (Webserver->args()) { response = "["; - StaticJsonBuffer<300> jsonBuffer; - JsonObject &hue_json = jsonBuffer.parseObject(Webserver->arg((Webserver->args())-1)); - if (hue_json.containsKey("on")) { - on = hue_json["on"]; + JsonParser parser = JsonParser((char*) Webserver->arg((Webserver->args())-1).c_str()); + JsonParserObject root = parser.getRootObject(); + + JsonParserToken hue_on = root[PSTR("on")]; + if (hue_on) { + on = hue_on.getBool(); snprintf_P(buf, buf_size, PSTR("{\"success\":{\"/lights/%d/state/on\":%s}}"), device_id, on ? "true" : "false"); @@ -235,8 +237,10 @@ void ZigbeeHandleHue(uint16_t shortaddr, uint32_t device_id, String &response) { resp = true; } - if (hue_json.containsKey("bri")) { // Brightness is a scale from 1 (the minimum the light is capable of) to 254 (the maximum). Note: a brightness of 1 is not off. - bri = hue_json["bri"]; + parser.setCurrent(); + JsonParserToken hue_bri = root[PSTR("bri")]; + if (hue_bri) { // Brightness is a scale from 1 (the minimum the light is capable of) to 254 (the maximum). Note: a brightness of 1 is not off. + bri = hue_bri.getUInt(); prev_bri = bri; // store command value if (resp) { response += ","; } snprintf_P(buf, buf_size, @@ -252,13 +256,16 @@ void ZigbeeHandleHue(uint16_t shortaddr, uint32_t device_id, String &response) { } // handle xy before Hue/Sat // If the request contains both XY and HS, we wan't to give priority to HS - if (hue_json.containsKey("xy")) { - float x = hue_json["xy"][0]; - float y = hue_json["xy"][1]; - const String &x_str = hue_json["xy"][0]; - const String &y_str = hue_json["xy"][1]; - x_str.toCharArray(prev_x_str, sizeof(prev_x_str)); - y_str.toCharArray(prev_y_str, sizeof(prev_y_str)); + parser.setCurrent(); + JsonParserToken hue_xy = root[PSTR("xy")]; + if (hue_xy) { + JsonParserArray arr_xy = JsonParserArray(hue_xy); + JsonParserToken tok_x = arr_xy[0]; + JsonParserToken tok_y = arr_xy[1]; + float x = tok_x.getFloat(); + float y = tok_y.getFloat(); + strlcpy(prev_x_str, tok_x.getStr(), sizeof(prev_x_str)); + strlcpy(prev_y_str, tok_y.getStr(), sizeof(prev_y_str)); if (resp) { response += ","; } snprintf_P(buf, buf_size, PSTR("{\"success\":{\"/lights/%d/state/xy\":[%s,%s]}}"), @@ -270,8 +277,11 @@ void ZigbeeHandleHue(uint16_t shortaddr, uint32_t device_id, String &response) { ZigbeeHueXY(shortaddr, xi, yi); } bool huesat_changed = false; - if (hue_json.containsKey("hue")) { // The hue value is a wrapping value between 0 and 65535. Both 0 and 65535 are red, 25500 is green and 46920 is blue. - hue = hue_json["hue"]; + + parser.setCurrent(); + JsonParserToken hue_hue = root[PSTR("hue")]; + if (hue_hue) { // The hue value is a wrapping value between 0 and 65535. Both 0 and 65535 are red, 25500 is green and 46920 is blue. + hue = hue_hue.getUInt(); prev_hue = hue; if (resp) { response += ","; } snprintf_P(buf, buf_size, @@ -285,8 +295,11 @@ void ZigbeeHandleHue(uint16_t shortaddr, uint32_t device_id, String &response) { } resp = true; } - if (hue_json.containsKey("sat")) { // Saturation of the light. 254 is the most saturated (colored) and 0 is the least saturated (white). - sat = hue_json["sat"]; + + parser.setCurrent(); + JsonParserToken hue_sat = root[PSTR("sat")]; + if (hue_sat) { // Saturation of the light. 254 is the most saturated (colored) and 0 is the least saturated (white). + sat = hue_sat.getUInt(); prev_sat = sat; // store command value if (resp) { response += ","; } snprintf_P(buf, buf_size, @@ -303,8 +316,11 @@ void ZigbeeHandleHue(uint16_t shortaddr, uint32_t device_id, String &response) { } resp = true; } - if (hue_json.containsKey("ct")) { // Color temperature 153 (Cold) to 500 (Warm) - ct = hue_json["ct"]; + + parser.setCurrent(); + JsonParserToken hue_ct = root[PSTR("ct")]; + if (hue_ct) { // Color temperature 153 (Cold) to 500 (Warm) + ct = hue_ct.getUInt(); prev_ct = ct; // store commande value if (resp) { response += ","; } snprintf_P(buf, buf_size, diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index 9871f628e..b35296370 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -21,6 +21,8 @@ #define XDRV_23 23 +#include "JsonParser.h" + const char kZbCommands[] PROGMEM = D_PRFX_ZB "|" // prefix #ifdef USE_ZIGBEE_ZNP D_CMND_ZIGBEEZNPSEND "|" D_CMND_ZIGBEEZNPRECEIVE "|" @@ -97,19 +99,6 @@ void ZigbeeInit(void) * Commands \*********************************************************************************************/ -uint32_t strToUInt(const JsonVariant &val) { - // if the string starts with 0x, it is considered Hex, otherwise it is an int - if (val.is()) { - return val.as(); - } else { - if (val.is()) { - String sval = val.as(); - return strtoull(sval.c_str(), nullptr, 0); - } - } - return 0; // couldn't parse anything -} - #ifdef USE_ZIGBEE_ZNP // Do a factory reset of the CC2530 const unsigned char ZIGBEE_FACTORY_RESET[] PROGMEM = @@ -242,7 +231,7 @@ bool ZbAppendWriteBuf(SBuffer & buf, const Z_attribute & attr, bool prepend_stat // Parse "Report", "Write", "Response" or "Condig" attribute // Operation is one of: ZCL_REPORT_ATTRIBUTES (0x0A), ZCL_WRITE_ATTRIBUTES (0x02) or ZCL_READ_ATTRIBUTES_RESPONSE (0x01) -void ZbSendReportWrite(const JsonObject &val_pubwrite, uint16_t device, uint16_t groupaddr, uint16_t cluster, uint8_t endpoint, uint16_t manuf, uint8_t operation) { +void ZbSendReportWrite(class JsonParserToken val_pubwrite, uint16_t device, uint16_t groupaddr, uint16_t cluster, uint8_t endpoint, uint16_t manuf, uint8_t operation) { SBuffer buf(200); // buffer to store the binary output of attibutes if (nullptr == XdrvMailbox.command) { @@ -250,12 +239,11 @@ void ZbSendReportWrite(const JsonObject &val_pubwrite, uint16_t device, uint16_t } // iterate on keys - for (JsonObject::const_iterator it=val_pubwrite.begin(); it!=val_pubwrite.end(); ++it) { - const char *key = it->key; - const JsonVariant &value = it->value; + for (auto key : val_pubwrite.getObject()) { + JsonParserToken value = key.getValue(); Z_attribute attr; - attr.setKeyName(key); + attr.setKeyName(key.getStr()); if (Z_parseAttributeKey(attr)) { // Buffer ready, do some sanity checks if (0xFFFF == cluster) { @@ -276,10 +264,10 @@ void ZbSendReportWrite(const JsonObject &val_pubwrite, uint16_t device, uint16_t } } - if (value.is()) { - attr.setStr(value.as()); - } else if (value.is()) { - attr.setFloat(value.as()); + if (value.isStr()) { + attr.setStr(value.getStr()); + } else if (value.isNum()) { + attr.setFloat(value.getFloat()); } double val_d = 0; // I try to avoid `double` but this type capture both float and (u)int32_t without prevision loss @@ -293,41 +281,30 @@ void ZbSendReportWrite(const JsonObject &val_pubwrite, uint16_t device, uint16_t } else { // //////////////////////////////////////////////////////////////////////////////// // ZCL_CONFIGURE_REPORTING - if (!value.is()) { + if (!value.isObject()) { ResponseCmndChar_P(PSTR("Config requires JSON objects")); return; } - JsonObject &attr_config = value.as(); + JsonParserObject attr_config = value.getObject(); bool attr_direction = false; - const JsonVariant &val_attr_direction = GetCaseInsensitive(attr_config, PSTR("DirectionReceived")); - if (nullptr != &val_attr_direction) { - uint32_t dir = strToUInt(val_attr_direction); - if (dir) { - attr_direction = true; - } - } + uint32_t dir = attr_config.getUInt(PSTR("DirectionReceived"), 0); + if (dir) { attr_direction = true; } // read MinInterval and MaxInterval, default to 0xFFFF if not specified - uint16_t attr_min_interval = 0xFFFF; - uint16_t attr_max_interval = 0xFFFF; - const JsonVariant &val_attr_min = GetCaseInsensitive(attr_config, PSTR("MinInterval")); - if (nullptr != &val_attr_min) { attr_min_interval = strToUInt(val_attr_min); } - const JsonVariant &val_attr_max = GetCaseInsensitive(attr_config, PSTR("MaxInterval")); - if (nullptr != &val_attr_max) { attr_max_interval = strToUInt(val_attr_max); } + uint16_t attr_min_interval = attr_config.getUInt(PSTR("MinInterval"), 0xFFFF); + uint16_t attr_max_interval = attr_config.getUInt(PSTR("MaxInterval"), 0xFFFF); // read ReportableChange - const JsonVariant &val_attr_rc = GetCaseInsensitive(attr_config, PSTR("ReportableChange")); - if (nullptr != &val_attr_rc) { - val_d = val_attr_rc.as(); - val_str = val_attr_rc.as(); + JsonParserToken val_attr_rc = attr_config[PSTR("ReportableChange")]; + if (val_attr_rc) { + val_d = val_attr_rc.getFloat(); + val_str = val_attr_rc.getStr(); ZbApplyMultiplier(val_d, attr.attr_multiplier); } // read TimeoutPeriod - uint16_t attr_timeout = 0x0000; - const JsonVariant &val_attr_timeout = GetCaseInsensitive(attr_config, PSTR("TimeoutPeriod")); - if (nullptr != &val_attr_timeout) { attr_timeout = strToUInt(val_attr_timeout); } + uint16_t attr_timeout = attr_config.getUInt(PSTR("TimeoutPeriod"), 0x0000); bool attr_discrete = Z_isDiscreteDataType(attr.attr_type); @@ -376,37 +353,36 @@ void ZbSendReportWrite(const JsonObject &val_pubwrite, uint16_t device, uint16_t } // Parse the "Send" attribute and send the command -void ZbSendSend(const JsonVariant &val_cmd, uint16_t device, uint16_t groupaddr, uint16_t cluster, uint8_t endpoint, uint16_t manuf) { +void ZbSendSend(class JsonParserToken val_cmd, uint16_t device, uint16_t groupaddr, uint16_t cluster, uint8_t endpoint, uint16_t manuf) { uint8_t cmd = 0; String cmd_str = ""; // the actual low-level command, either specified or computed - const char *cmd_s; // pointer to payload string + const char *cmd_s = ""; // pointer to payload string bool clusterSpecific = true; static char delim[] = ", "; // delimiters for parameters // probe the type of the argument // If JSON object, it's high level commands // If String, it's a low level command - if (val_cmd.is()) { + if (val_cmd.isObject()) { // we have a high-level command - const JsonObject &cmd_obj = val_cmd.as(); + JsonParserObject cmd_obj = val_cmd.getObject(); int32_t cmd_size = cmd_obj.size(); if (cmd_size > 1) { Response_P(PSTR("Only 1 command allowed (%d)"), cmd_size); return; } else if (1 == cmd_size) { // We have exactly 1 command, parse it - JsonObject::const_iterator it = cmd_obj.begin(); // just get the first key/value - String key = it->key; - const JsonVariant& value = it->value; + JsonParserKey key = cmd_obj.getFirstElement(); + JsonParserToken value = key.getValue(); uint32_t x = 0, y = 0, z = 0; uint16_t cmd_var; uint16_t local_cluster_id; - const __FlashStringHelper* tasmota_cmd = zigbeeFindCommand(key.c_str(), &local_cluster_id, &cmd_var); + const __FlashStringHelper* tasmota_cmd = zigbeeFindCommand(key.getStr(), &local_cluster_id, &cmd_var); if (tasmota_cmd) { cmd_str = tasmota_cmd; } else { - Response_P(PSTR("Unrecognized zigbee command: %s"), key.c_str()); + Response_P(PSTR("Unrecognized zigbee command: %s"), key.getStr()); return; } // check cluster @@ -418,13 +394,17 @@ void ZbSendSend(const JsonVariant &val_cmd, uint16_t device, uint16_t groupaddr, } // parse the JSON value, depending on its type fill in x,y,z - if (value.is()) { - x = value.as() ? 1 : 0; - } else if (value.is()) { - x = value.as(); + if (value.isNum()) { + x = value.getUInt(); // automatic conversion to 0/1 + // if (value.is()) { + // // x = value.as() ? 1 : 0; + // } else if + // } else if (value.is()) { + // x = value.as(); } else { // if non-bool or non-int, trying char* - const char *s_const = value.as(); + const char *s_const = value.getStr(nullptr); + // const char *s_const = value.as(); if (s_const != nullptr) { char s[strlen(s_const)+1]; strcpy(s, s_const); @@ -459,14 +439,13 @@ void ZbSendSend(const JsonVariant &val_cmd, uint16_t device, uint16_t groupaddr, } else { // we have zero command, pass through until last error for missing command } - } else if (val_cmd.is()) { + } else if (val_cmd.isStr()) { // low-level command - cmd_str = val_cmd.as(); // Now parse the string to extract cluster, command, and payload // Parse 'cmd' in the form "AAAA_BB/CCCCCCCC" or "AAAA!BB/CCCCCCCC" // where AA is the cluster number, BBBB the command number, CCCC... the payload // First delimiter is '_' for a global command, or '!' for a cluster specific command - const char * data = cmd_str.c_str(); + const char * data = val_cmd.getStr(); uint16_t local_cluster_id = parseHex(&data, 4); // check cluster @@ -505,7 +484,7 @@ void ZbSendSend(const JsonVariant &val_cmd, uint16_t device, uint16_t groupaddr, // Parse the "Send" attribute and send the command -void ZbSendRead(const JsonVariant &val_attr, uint16_t device, uint16_t groupaddr, uint16_t cluster, uint8_t endpoint, uint16_t manuf, uint8_t operation) { +void ZbSendRead(JsonParserToken val_attr, uint16_t device, uint16_t groupaddr, uint16_t cluster, uint8_t endpoint, uint16_t manuf, uint8_t operation) { // ZbSend {"Device":"0xF289","Cluster":0,"Endpoint":3,"Read":5} // ZbSend {"Device":"0xF289","Cluster":"0x0000","Endpoint":"0x0003","Read":"0x0005"} // ZbSend {"Device":"0xF289","Cluster":0,"Endpoint":3,"Read":[5,6,7,4]} @@ -525,32 +504,30 @@ void ZbSendRead(const JsonVariant &val_attr, uint16_t device, uint16_t groupaddr attr_item_offset = 1; } - uint16_t val = strToUInt(val_attr); - if (val_attr.is()) { + if (val_attr.isArray()) { // value is an array [] - const JsonArray& attr_arr = val_attr.as(); + JsonParserArray attr_arr = val_attr.getArray(); attrs_len = attr_arr.size() * attr_item_len; attrs = (uint8_t*) calloc(attrs_len, 1); uint32_t i = 0; for (auto value : attr_arr) { - uint16_t val = strToUInt(value); + uint16_t val = value.getUInt(); i += attr_item_offset; attrs[i++] = val & 0xFF; attrs[i++] = val >> 8; i += attr_item_len - 2 - attr_item_offset; // normally 0 } - } else if (val_attr.is()) { + } else if (val_attr.isObject()) { // value is an object {} - const JsonObject& attr_obj = val_attr.as(); + JsonParserObject attr_obj = val_attr.getObject(); attrs_len = attr_obj.size() * attr_item_len; attrs = (uint8_t*) calloc(attrs_len, 1); uint32_t actual_attr_len = 0; // iterate on keys - for (JsonObject::const_iterator it=attr_obj.begin(); it!=attr_obj.end(); ++it) { - const char *key = it->key; - const JsonVariant &value = it->value; // we don't need the value here, only keys are relevant + for (auto key : attr_obj) { + JsonParserToken value = key.getValue(); bool found = false; // scan attributes to find by name, and retrieve type @@ -561,11 +538,11 @@ void ZbSendRead(const JsonVariant &val_attr, uint16_t device, uint16_t groupaddr uint16_t local_cluster_id = CxToCluster(pgm_read_byte(&converter->cluster_short)); // uint8_t local_type_id = pgm_read_byte(&converter->type); - if ((pgm_read_word(&converter->name_offset)) && (0 == strcasecmp_P(key, Z_strings + pgm_read_word(&converter->name_offset)))) { + if ((pgm_read_word(&converter->name_offset)) && (0 == strcasecmp_P(key.getStr(), Z_strings + pgm_read_word(&converter->name_offset)))) { // match name // check if there is a conflict with cluster // TODO - if (!value && attr_item_offset) { + if (!(value.getBool()) && attr_item_offset) { // If value is false (non-default) then set direction to 1 (for ReadConfig) attrs[actual_attr_len] = 0x01; } @@ -594,6 +571,7 @@ void ZbSendRead(const JsonVariant &val_attr, uint16_t device, uint16_t groupaddr } else { // value is a literal if (0xFFFF != cluster) { + uint16_t val = val_attr.getUInt(); attrs_len = attr_item_len; attrs = (uint8_t*) calloc(attrs_len, 1); attrs[0 + attr_item_offset] = val & 0xFF; // little endian @@ -648,9 +626,8 @@ void CmndZbSend(void) { // ZbSend { "device":"0x1234", "endpoint":"0x03", "send":{"Color":"1,2"} } // ZbSend { "device":"0x1234", "endpoint":"0x03", "send":{"Color":"0x1122,0xFFEE"} } if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } - DynamicJsonBuffer jsonBuf; - const JsonObject &json = jsonBuf.parseObject((const char*) XdrvMailbox.data); - if (!json.success()) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } + JsonParserObject root = JsonParser(XdrvMailbox.data).getRootObject(); + if (!root) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } // params uint16_t device = BAD_SHORTADDR; // BAD_SHORTADDR is broadcast, so considered invalid @@ -661,15 +638,15 @@ void CmndZbSend(void) { // parse "Device" and "Group" - const JsonVariant &val_device = GetCaseInsensitive(json, PSTR(D_CMND_ZIGBEE_DEVICE)); - if (nullptr != &val_device) { - device = zigbee_devices.parseDeviceParam(val_device.as()); + JsonParserToken val_device = root[PSTR(D_CMND_ZIGBEE_DEVICE)]; + if (val_device) { + device = zigbee_devices.parseDeviceParam(val_device.getStr()); if (BAD_SHORTADDR == device) { ResponseCmndChar_P(PSTR("Invalid parameter")); return; } } if (BAD_SHORTADDR == device) { // if not found, check if we have a group - const JsonVariant &val_group = GetCaseInsensitive(json, PSTR(D_CMND_ZIGBEE_GROUP)); - if (nullptr != &val_group) { - groupaddr = strToUInt(val_group); + JsonParserToken val_group = root[PSTR(D_CMND_ZIGBEE_GROUP)]; + if (val_group) { + groupaddr = val_group.getUInt(); } else { // no device nor group ResponseCmndChar_P(PSTR("Unknown device")); return; @@ -679,12 +656,9 @@ void CmndZbSend(void) { // Note: groupaddr == 0 is valid // read other parameters - const JsonVariant &val_cluster = GetCaseInsensitive(json, PSTR(D_CMND_ZIGBEE_CLUSTER)); - if (nullptr != &val_cluster) { cluster = strToUInt(val_cluster); } - const JsonVariant &val_endpoint = GetCaseInsensitive(json, PSTR(D_CMND_ZIGBEE_ENDPOINT)); - if (nullptr != &val_endpoint) { endpoint = strToUInt(val_endpoint); } - const JsonVariant &val_manuf = GetCaseInsensitive(json, PSTR(D_CMND_ZIGBEE_MANUF)); - if (nullptr != &val_manuf) { manuf = strToUInt(val_manuf); } + cluster = root.getUInt(PSTR(D_CMND_ZIGBEE_CLUSTER), cluster); + endpoint = root.getUInt(PSTR(D_CMND_ZIGBEE_ENDPOINT), endpoint); + manuf = root.getUInt(PSTR(D_CMND_ZIGBEE_MANUF), manuf); // infer endpoint if (BAD_SHORTADDR == device) { @@ -700,61 +674,61 @@ void CmndZbSend(void) { // from here endpoint is valid and non-zero // cluster may be already specified or 0xFFFF - const JsonVariant &val_cmd = GetCaseInsensitive(json, PSTR(D_CMND_ZIGBEE_SEND)); - const JsonVariant &val_read = GetCaseInsensitive(json, PSTR(D_CMND_ZIGBEE_READ)); - const JsonVariant &val_write = GetCaseInsensitive(json, PSTR(D_CMND_ZIGBEE_WRITE)); - const JsonVariant &val_publish = GetCaseInsensitive(json, PSTR(D_CMND_ZIGBEE_REPORT)); - const JsonVariant &val_response = GetCaseInsensitive(json, PSTR(D_CMND_ZIGBEE_RESPONSE)); - const JsonVariant &val_read_config = GetCaseInsensitive(json, PSTR(D_CMND_ZIGBEE_READ_CONFIG)); - const JsonVariant &val_config = GetCaseInsensitive(json, PSTR(D_CMND_ZIGBEE_CONFIG)); - uint32_t multi_cmd = (nullptr != &val_cmd) + (nullptr != &val_read) + (nullptr != &val_write) + (nullptr != &val_publish) - + (nullptr != &val_response) + (nullptr != &val_read_config) + (nullptr != &val_config); + JsonParserToken val_cmd = root[PSTR(D_CMND_ZIGBEE_SEND)]; + JsonParserToken val_read = root[PSTR(D_CMND_ZIGBEE_READ)]; + JsonParserToken val_write = root[PSTR(D_CMND_ZIGBEE_WRITE)]; + JsonParserToken val_publish = root[PSTR(D_CMND_ZIGBEE_REPORT)]; + JsonParserToken val_response = root[PSTR(D_CMND_ZIGBEE_RESPONSE)]; + JsonParserToken val_read_config = root[PSTR(D_CMND_ZIGBEE_READ_CONFIG)]; + JsonParserToken val_config = root[PSTR(D_CMND_ZIGBEE_CONFIG)]; + uint32_t multi_cmd = ((bool)val_cmd) + ((bool)val_read) + ((bool)val_write) + ((bool)val_publish) + + ((bool)val_response) + ((bool)val_read_config) + ((bool)val_config); if (multi_cmd > 1) { ResponseCmndChar_P(PSTR("Can only have one of: 'Send', 'Read', 'Write', 'Report', 'Reponse', 'ReadConfig' or 'Config'")); return; } // from here we have one and only one command - if (nullptr != &val_cmd) { + if (val_cmd) { // "Send":{...commands...} // we accept either a string or a JSON object ZbSendSend(val_cmd, device, groupaddr, cluster, endpoint, manuf); - } else if (nullptr != &val_read) { + } else if (val_read) { // "Read":{...attributes...}, "Read":attribute or "Read":[...attributes...] // we accept eitehr a number, a string, an array of numbers/strings, or a JSON object ZbSendRead(val_read, device, groupaddr, cluster, endpoint, manuf, ZCL_READ_ATTRIBUTES); - } else if (nullptr != &val_write) { + } else if (val_write) { // only KSON object - if (!val_write.is()) { + if (!val_write.isObject()) { ResponseCmndChar_P(PSTR("Missing parameters")); return; } // "Write":{...attributes...} ZbSendReportWrite(val_write, device, groupaddr, cluster, endpoint, manuf, ZCL_WRITE_ATTRIBUTES); - } else if (nullptr != &val_publish) { + } else if (val_publish) { // "Publish":{...attributes...} // only KSON object - if (!val_publish.is()) { + if (!val_publish.isObject()) { ResponseCmndChar_P(PSTR("Missing parameters")); return; } ZbSendReportWrite(val_publish, device, groupaddr, cluster, endpoint, manuf, ZCL_REPORT_ATTRIBUTES); - } else if (nullptr != &val_response) { + } else if (val_response) { // "Report":{...attributes...} // only KSON object - if (!val_response.is()) { + if (!val_response.isObject()) { ResponseCmndChar_P(PSTR("Missing parameters")); return; } ZbSendReportWrite(val_response, device, groupaddr, cluster, endpoint, manuf, ZCL_READ_ATTRIBUTES_RESPONSE); - } else if (nullptr != &val_read_config) { + } else if (val_read_config) { // "ReadConfg":{...attributes...}, "ReadConfg":attribute or "ReadConfg":[...attributes...] // we accept eitehr a number, a string, an array of numbers/strings, or a JSON object ZbSendRead(val_read_config, device, groupaddr, cluster, endpoint, manuf, ZCL_READ_REPORTING_CONFIGURATION); - } else if (nullptr != &val_config) { + } else if (val_config) { // "Config":{...attributes...} // only JSON object - if (!val_config.is()) { + if (!val_config.isObject()) { ResponseCmndChar_P(PSTR("Missing parameters")); return; } @@ -774,61 +748,56 @@ void ZbBindUnbind(bool unbind) { // false = bind, true = unbind // local endpoint is always 1, IEEE addresses are calculated if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } - DynamicJsonBuffer jsonBuf; - const JsonObject &json = jsonBuf.parseObject((const char*) XdrvMailbox.data); - if (!json.success()) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } + JsonParserObject root = JsonParser(XdrvMailbox.data).getRootObject(); + if (!root) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } // params - uint16_t srcDevice = BAD_SHORTADDR; // BAD_SHORTADDR is broadcast, so considered invalid + uint16_t srcDevice = BAD_SHORTADDR; // BAD_SHORTADDR is broadcast, so considered invalid uint16_t dstDevice = BAD_SHORTADDR; // BAD_SHORTADDR is broadcast, so considered invalid uint64_t dstLongAddr = 0; uint8_t endpoint = 0x00; // 0x00 is invalid for the src endpoint - uint8_t toendpoint = 0x00; // 0x00 is invalid for the dst endpoint + uint8_t toendpoint = 0x01; // default dest endpoint to 0x01 uint16_t toGroup = 0x0000; // group address uint16_t cluster = 0; // 0xFFFF is invalid uint32_t group = 0xFFFFFFFF; // 16 bits values, otherwise 0xFFFFFFFF is unspecified // Information about source device: "Device", "Endpoint", "Cluster" // - the source endpoint must have a known IEEE address - const JsonVariant &val_device = GetCaseInsensitive(json, PSTR(D_CMND_ZIGBEE_DEVICE)); - if (nullptr != &val_device) { - srcDevice = zigbee_devices.parseDeviceParam(val_device.as()); - } - if ((nullptr == &val_device) || (BAD_SHORTADDR == srcDevice)) { ResponseCmndChar_P(PSTR("Unknown source device")); return; } + srcDevice = zigbee_devices.parseDeviceParam(root.getStr(PSTR(D_CMND_ZIGBEE_DEVICE), nullptr)); + if (BAD_SHORTADDR == srcDevice) { ResponseCmndChar_P(PSTR("Unknown source device")); return; } // check if IEEE address is known uint64_t srcLongAddr = zigbee_devices.getDeviceLongAddr(srcDevice); if (0 == srcLongAddr) { ResponseCmndChar_P(PSTR("Unknown source IEEE address")); return; } // look for source endpoint - const JsonVariant &val_endpoint = GetCaseInsensitive(json, PSTR(D_CMND_ZIGBEE_ENDPOINT)); - if (nullptr != &val_endpoint) { endpoint = strToUInt(val_endpoint); } - else { endpoint = zigbee_devices.findFirstEndpoint(srcDevice); } + endpoint = root.getUInt(PSTR(D_CMND_ZIGBEE_ENDPOINT), endpoint); + if (0 == endpoint) { endpoint = zigbee_devices.findFirstEndpoint(srcDevice); } // look for source cluster - const JsonVariant &val_cluster = GetCaseInsensitive(json, PSTR(D_CMND_ZIGBEE_CLUSTER)); - if (nullptr != &val_cluster) { - cluster = strToUInt(val_cluster); // first convert as number + JsonParserToken val_cluster = root[PSTR(D_CMND_ZIGBEE_CLUSTER)]; + if (val_cluster) { + cluster = val_cluster.getUInt(cluster); // first convert as number if (0 == cluster) { - zigbeeFindAttributeByName(val_cluster.as(), &cluster, nullptr, nullptr); + zigbeeFindAttributeByName(val_cluster.getStr(), &cluster, nullptr, nullptr); } } // Or Group Address - we don't need a dstEndpoint in this case - const JsonVariant &to_group = GetCaseInsensitive(json, PSTR("ToGroup")); - if (nullptr != &to_group) { toGroup = strToUInt(to_group); } + JsonParserToken to_group = root[PSTR("ToGroup")]; + if (to_group) { toGroup = to_group.getUInt(toGroup); } // Either Device address // In this case the following parameters are mandatory // - "ToDevice" and the device must have a known IEEE address // - "ToEndpoint" - const JsonVariant &dst_device = GetCaseInsensitive(json, PSTR("ToDevice")); + JsonParserToken dst_device = root[PSTR("ToDevice")]; // If no target is specified, we default to coordinator 0x0000 - if ((nullptr == &to_group) && (nullptr == &dst_device)) { + if ((!to_group) && (!dst_device)) { dstDevice = 0x0000; } - if ((nullptr != &dst_device) || (BAD_SHORTADDR != dstDevice)) { + if ((dst_device) || (BAD_SHORTADDR != dstDevice)) { if (BAD_SHORTADDR == dstDevice) { - dstDevice = zigbee_devices.parseDeviceParam(dst_device.as()); + dstDevice = zigbee_devices.parseDeviceParam(dst_device.getStr(nullptr)); if (BAD_SHORTADDR == dstDevice) { ResponseCmndChar_P(PSTR("Invalid parameter")); return; } } if (0x0000 == dstDevice) { @@ -838,14 +807,12 @@ void ZbBindUnbind(bool unbind) { // false = bind, true = unbind } if (0 == dstLongAddr) { ResponseCmndChar_P(PSTR("Unknown dest IEEE address")); return; } - const JsonVariant &val_toendpoint = GetCaseInsensitive(json, PSTR("ToEndpoint")); - if (nullptr != &val_toendpoint) { toendpoint = strToUInt(val_toendpoint); } - else { toendpoint = 0x01; } // default to endpoint 1 + toendpoint = root.getUInt(PSTR("ToEndpoint"), toendpoint); } // make sure we don't have conflicting parameters - if (&to_group && dstLongAddr) { ResponseCmndChar_P(PSTR("Cannot have both \"ToDevice\" and \"ToGroup\"")); return; } - if (!&to_group && !dstLongAddr) { ResponseCmndChar_P(PSTR("Missing \"ToDevice\" or \"ToGroup\"")); return; } + if (to_group && dstLongAddr) { ResponseCmndChar_P(PSTR("Cannot have both \"ToDevice\" and \"ToGroup\"")); return; } + if (!to_group && !dstLongAddr) { ResponseCmndChar_P(PSTR("Missing \"ToDevice\" or \"ToGroup\"")); return; } #ifdef USE_ZIGBEE_ZNP SBuffer buf(34); @@ -1097,38 +1064,32 @@ void CmndZbSave(void) { // ZbRestore {"Device":"0x5ADF","Name":"Petite_Lampe","IEEEAddr":"0x90FD9FFFFE03B051","ModelId":"TRADFRI bulb E27 WS opal 980lm","Manufacturer":"IKEA of Sweden","Endpoints":["0x01","0xF2"]} void CmndZbRestore(void) { if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } - DynamicJsonBuffer jsonBuf; - const JsonVariant json_parsed = jsonBuf.parse((const char*) XdrvMailbox.data); // const to force a copy of parameter - const JsonVariant * json = &json_parsed; // root of restore, to be changed if needed - bool success = false; + JsonParser p(XdrvMailbox.data); + JsonParserToken root = p.getRoot(); - // check if parsing succeeded - if (json_parsed.is()) { - success = json_parsed.as().success(); - } else if (json_parsed.is()) { - success = json_parsed.as().success(); - } - if (!success) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } + if (!p || !(root.isObject() || root.isArray())) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } // Check is root contains `ZbStatus` key, if so change the root - const JsonVariant * zbstatus = &startsWithCaseInsensitive(*json, PSTR("ZbStatus")); - if (nullptr != zbstatus) { - json = zbstatus; + JsonParserToken zbstatus = root.getObject().findStartsWith(PSTR("ZbStatus")); + if (zbstatus) { + root = zbstatus; } // check if the root is an array - if (json->is()) { - const JsonArray& arr = json->as(); - for (auto elt : arr) { + if (root.isArray()) { + JsonParserArray arr = JsonParserArray(root); + for (const auto elt : arr) { // call restore on each item - int32_t res = zigbee_devices.deviceRestore(elt); - if (res < 0) { - ResponseCmndChar_P(PSTR("Restore failed")); - return; + if (elt.isObject()) { + int32_t res = zigbee_devices.deviceRestore(JsonParserObject(elt)); + if (res < 0) { + ResponseCmndChar_P(PSTR("Restore failed")); + return; + } } } - } else if (json->is()) { - int32_t res = zigbee_devices.deviceRestore(*json); + } else if (root.isObject()) { + int32_t res = zigbee_devices.deviceRestore(JsonParserObject(root)); if (res < 0) { ResponseCmndChar_P(PSTR("Restore failed")); return; @@ -1258,31 +1219,19 @@ void CmndZbConfig(void) { // if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } RemoveAllSpaces(XdrvMailbox.data); if (strlen(XdrvMailbox.data) > 0) { - DynamicJsonBuffer jsonBuf; - const JsonObject &json = jsonBuf.parseObject((const char*) XdrvMailbox.data); - if (!json.success()) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } - + JsonParserObject root = JsonParser(XdrvMailbox.data).getRootObject(); + if (!root) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } // Channel - const JsonVariant &val_channel = GetCaseInsensitive(json, PSTR("Channel")); - if (nullptr != &val_channel) { zb_channel = strToUInt(val_channel); } + + zb_channel = root.getUInt(PSTR("Channel"), zb_channel); + zb_pan_id = root.getUInt(PSTR("PanID"), zb_pan_id); + zb_ext_panid = root.getULong(PSTR("ExtPanID"), zb_ext_panid); + zb_precfgkey_l = root.getULong(PSTR("KeyL"), zb_precfgkey_l); + zb_precfgkey_h = root.getULong(PSTR("KeyH"), zb_precfgkey_h); + zb_txradio_dbm = root.getUInt(PSTR("TxRadio"), zb_txradio_dbm); + if (zb_channel < 11) { zb_channel = 11; } if (zb_channel > 26) { zb_channel = 26; } - // PanID - const JsonVariant &val_pan_id = GetCaseInsensitive(json, PSTR("PanID")); - if (nullptr != &val_pan_id) { zb_pan_id = strToUInt(val_pan_id); } - // ExtPanID - const JsonVariant &val_ext_pan_id = GetCaseInsensitive(json, PSTR("ExtPanID")); - if (nullptr != &val_ext_pan_id) { zb_ext_panid = strtoull(val_ext_pan_id.as(), nullptr, 0); } - // KeyL - const JsonVariant &val_key_l = GetCaseInsensitive(json, PSTR("KeyL")); - if (nullptr != &val_key_l) { zb_precfgkey_l = strtoull(val_key_l.as(), nullptr, 0); } - // KeyH - const JsonVariant &val_key_h = GetCaseInsensitive(json, PSTR("KeyH")); - if (nullptr != &val_key_h) { zb_precfgkey_h = strtoull(val_key_h.as(), nullptr, 0); } - // TxRadio dBm - const JsonVariant &val_txradio = GetCaseInsensitive(json, PSTR("TxRadio")); - if (nullptr != &val_txradio) { zb_txradio_dbm = strToUInt(val_txradio); } - // if network key is zero, we generate a truly random key with a hardware generator from ESP if ((0 == zb_precfgkey_l) && (0 == zb_precfgkey_h)) { AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "generating random Zigbee network key")); From 31c6f7af3c18838e01961dcd0b3b1b23132b73d9 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 21 Sep 2020 22:21:05 +0200 Subject: [PATCH 006/119] Fix compilation errors --- lib/jsmn-shadinger-1.0/src/JsonParser.cpp | 3 +++ tasmota/xdrv_05_irremote.ino | 10 +++++----- tasmota/xdrv_05_irremote_full.ino | 12 ++++++------ 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/lib/jsmn-shadinger-1.0/src/JsonParser.cpp b/lib/jsmn-shadinger-1.0/src/JsonParser.cpp index f2ae50a97..6ebf6c2da 100644 --- a/lib/jsmn-shadinger-1.0/src/JsonParser.cpp +++ b/lib/jsmn-shadinger-1.0/src/JsonParser.cpp @@ -360,6 +360,9 @@ uint32_t JsonParserObject::getUInt(const char * needle, uint32_t val) const { uint64_t JsonParserObject::getULong(const char * needle, uint64_t val) const { return (*this)[needle].getULong(val); } +float JsonParserObject::getFloat(const char * needle, float val) const { + return (*this)[needle].getFloat(val); +} const char * JsonParserObject::getStr(const char * needle, const char * val) const { return (*this)[needle].getStr(val); } diff --git a/tasmota/xdrv_05_irremote.ino b/tasmota/xdrv_05_irremote.ino index 77a89a697..ebd1f06df 100644 --- a/tasmota/xdrv_05_irremote.ino +++ b/tasmota/xdrv_05_irremote.ino @@ -204,15 +204,15 @@ uint32_t IrRemoteCmndIrSendJson(void) uint16_t repeat = root[UpperCase_P(parm_uc, PSTR(D_JSON_IR_REPEAT))]; #else RemoveSpace(XdrvMailbox.data); // TODO is this really needed? - JsonParserObject root = JsonParser((chat*) XdrvMailbox.data).getRootObject(); + JsonParserObject root = JsonParser((char*) XdrvMailbox.data).getRootObject(); if (!root) { return IE_INVALID_JSON; } // IRsend { "protocol": "SAMSUNG", "bits": 32, "data": 551502015 } // IRsend { "protocol": "NEC", "bits": 32, "data":"0x02FDFE80", "repeat": 2 } - const char *protocol = root.getStr(PSTR(D_JSON_IR_PROTOCOL)); - uint16_t bits = root.getUInt(PSTR(D_JSON_IR_BITS)); - uint64_t data = root.getULong(PSTR(D_JSON_IR_DATA)); - uint16_t repeat = root.getUInt(PSTR(D_JSON_IR_REPEAT)); + const char *protocol = root.getStr(PSTR(D_JSON_IR_PROTOCOL), ""); + uint16_t bits = root.getUInt(PSTR(D_JSON_IR_BITS), 0); + uint64_t data = root.getULong(PSTR(D_JSON_IR_DATA), 0); + uint16_t repeat = root.getUInt(PSTR(D_JSON_IR_REPEAT), 0); #endif // check if the IRSend is great than repeat if (XdrvMailbox.index > repeat + 1) { diff --git a/tasmota/xdrv_05_irremote_full.ino b/tasmota/xdrv_05_irremote_full.ino index 846bd1b5d..d72711fc8 100644 --- a/tasmota/xdrv_05_irremote_full.ino +++ b/tasmota/xdrv_05_irremote_full.ino @@ -311,8 +311,8 @@ uint32_t IrRemoteCmndIrHvacJson(void) state.clean = false; // Turn off any Cleaning options if we can. state.clock = -1; // Don't set any current time if we can avoid it. - if (root[PSTR(D_JSON_IRHVAC_VENDOR)]) { state.protocol = strToDecodeType(root.getStr(PSTR(D_JSON_IRHVAC_VENDOR))); } - if (root[PSTR(D_JSON_IRHVAC_PROTOCOL)]) { state.protocol = strToDecodeType(root.getStr(PSTR(D_JSON_IRHVAC_PROTOCOL))); } + if (root[PSTR(D_JSON_IRHVAC_VENDOR)]) { state.protocol = strToDecodeType(root.getStr(PSTR(D_JSON_IRHVAC_VENDOR), "")); } + if (root[PSTR(D_JSON_IRHVAC_PROTOCOL)]) { state.protocol = strToDecodeType(root.getStr(PSTR(D_JSON_IRHVAC_PROTOCOL), "")); } // UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_VENDOR)); // if (json.containsKey(parm_uc)) { state.protocol = strToDecodeType(json[parm_uc]); } // UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_PROTOCOL)); @@ -331,10 +331,10 @@ uint32_t IrRemoteCmndIrHvacJson(void) } } - if (root[PSTR(D_JSON_IRHVAC_MODEL)]) { state.model = IRac::strToModel(PSTR(D_JSON_IRHVAC_MODEL)]); } - if (root[PSTR(D_JSON_IRHVAC_MODE)]) { state.mode = IRac::strToOpmode(PSTR(D_JSON_IRHVAC_MODE)]); } - if (root[PSTR(D_JSON_IRHVAC_SWINGV)]) { state.swingv = IRac::strToSwingV(PSTR(D_JSON_IRHVAC_SWINGV)]); } - if (root[PSTR(D_JSON_IRHVAC_SWINGH)]) { state.swingh = IRac::strToSwingV(PSTR(D_JSON_IRHVAC_SWINGH)]); } + if (root[PSTR(D_JSON_IRHVAC_MODEL)]) { state.model = IRac::strToModel(PSTR(D_JSON_IRHVAC_MODEL)); } + if (root[PSTR(D_JSON_IRHVAC_MODE)]) { state.mode = IRac::strToOpmode(PSTR(D_JSON_IRHVAC_MODE)); } + if (root[PSTR(D_JSON_IRHVAC_SWINGV)]) { state.swingv = IRac::strToSwingV(PSTR(D_JSON_IRHVAC_SWINGV)); } + if (root[PSTR(D_JSON_IRHVAC_SWINGH)]) { state.swingh = IRac::strToSwingH(PSTR(D_JSON_IRHVAC_SWINGH)); } state.degrees = root.getFloat(PSTR(D_JSON_IRHVAC_TEMP), state.degrees); // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("model %d, mode %d, fanspeed %d, swingv %d, swingh %d"), // state.model, state.mode, state.fanspeed, state.swingv, state.swingh); From e70aff0ca2588600ee84ae0ff976e6ae18cd089b Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 21 Sep 2020 22:26:56 +0200 Subject: [PATCH 007/119] Fix compilation error --- lib/jsmn-shadinger-1.0/src/JsonParser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jsmn-shadinger-1.0/src/JsonParser.cpp b/lib/jsmn-shadinger-1.0/src/JsonParser.cpp index 6ebf6c2da..66f263b09 100644 --- a/lib/jsmn-shadinger-1.0/src/JsonParser.cpp +++ b/lib/jsmn-shadinger-1.0/src/JsonParser.cpp @@ -18,7 +18,7 @@ */ #include "JsonParser.h" -#include "WSTring.h" +#include /*********************************************************************************************\ * Utilities From 749099a6c713e4b794deb4b43ef1e3bd00f4168a Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 21 Sep 2020 22:31:42 +0200 Subject: [PATCH 008/119] Fix compilation error, try 2 --- lib/jsmn-shadinger-1.0/src/JsonParser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jsmn-shadinger-1.0/src/JsonParser.cpp b/lib/jsmn-shadinger-1.0/src/JsonParser.cpp index 66f263b09..ab2a905f4 100644 --- a/lib/jsmn-shadinger-1.0/src/JsonParser.cpp +++ b/lib/jsmn-shadinger-1.0/src/JsonParser.cpp @@ -18,7 +18,7 @@ */ #include "JsonParser.h" -#include +#include /*********************************************************************************************\ * Utilities From ec52c1a10a1065d50681ac3fe5960440d9257278 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Tue, 22 Sep 2020 08:44:04 +0200 Subject: [PATCH 009/119] Move from stack allocated to heap --- tasmota/xdrv_10_rules.ino | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tasmota/xdrv_10_rules.ino b/tasmota/xdrv_10_rules.ino index 5e2441de5..be0ba7a98 100644 --- a/tasmota/xdrv_10_rules.ino +++ b/tasmota/xdrv_10_rules.ino @@ -531,9 +531,8 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule) } #else - char buf[event.length()+1]; - strcpy(buf, event.c_str()); - JsonParser parser = JsonParser(buf); + String buf = event; // copy the string into a new buffer that will be modified + JsonParser parser = JsonParser((char*)buf.c_str()); JsonParserObject obj = parser.getRootObject(); if (!obj) { AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL: Event too long (%d)"), event.length()); @@ -1074,8 +1073,6 @@ bool RulesMqttData(void) } else { //If specified Key, need to parse Key/Value from JSON data JsonParserObject jsonData = JsonParser((char*)sData.c_str()).getRootObject(); - // StaticJsonBuffer<500> jsonBuf; - // JsonObject& jsonData = jsonBuf.parseObject(sData); String key1 = event_item.Key; String key2; if (!jsonData) break; //Failed to parse JSON data, ignore this message. From 1c99b4d1ee3347476500ad66b98c4a3a4bb4b55b Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 22 Sep 2020 11:27:45 +0200 Subject: [PATCH 010/119] Fix HTTP status 0 message when using USE_MQTT_TLS Fix ``status 0`` message when using define USE_MQTT_TLS due to small log buffer (#9305) --- tasmota/CHANGELOG.md | 3 ++- tasmota/tasmota_globals.h | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index 2af073b29..f50c57428 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -7,13 +7,14 @@ - Fix energy total counters (#9263, #9266) - Fix crash in ``ZbRestore`` - Fix reset BMP sensors when executing command ``SaveData`` and define USE_DEEPSLEEP enabled (#9300) +- Fix ``status 0`` message when using define USE_MQTT_TLS due to small log buffer (#9305) +- Change replace ArduinoJson with JSMN for JSON parsing - Add command ``SetOption110 1`` to disable Zigbee auto-config when pairing new devices - Add command ``SetOption111 1`` to enable frequency output for buzzer GPIO (#8994) - Add ``#define USE_MQTT_AWS_IOT_LIGHT`` for password based AWS IoT authentication - Add new shutter modes (#9244) - Add Zigbee auto-config when pairing - Add support for MLX90640 IR array temperature sensor by Christian Baars -- Change replace ArduinoJson with JSMN for JSON parsing ### 8.5.0 20200907 diff --git a/tasmota/tasmota_globals.h b/tasmota/tasmota_globals.h index edf933c12..40b04a99c 100644 --- a/tasmota/tasmota_globals.h +++ b/tasmota/tasmota_globals.h @@ -122,11 +122,11 @@ String EthernetMacAddress(void); #define WS2812_LEDS 30 // [Pixels] Number of LEDs #endif -#ifdef USE_MQTT_TLS - const uint16_t WEB_LOG_SIZE = 2000; // Max number of characters in weblog -#else +//#ifdef USE_MQTT_TLS // Set to 4000 on 20200922 per #9305 +// const uint16_t WEB_LOG_SIZE = 2000; // Max number of characters in weblog +//#else const uint16_t WEB_LOG_SIZE = 4000; // Max number of characters in weblog -#endif +//#endif #if defined(ARDUINO_ESP8266_RELEASE_2_3_0) || defined(ARDUINO_ESP8266_RELEASE_2_4_0) || defined(ARDUINO_ESP8266_RELEASE_2_4_1) || defined(ARDUINO_ESP8266_RELEASE_2_4_2) || defined(ARDUINO_ESP8266_RELEASE_2_5_0) || defined(ARDUINO_ESP8266_RELEASE_2_5_1) || defined(ARDUINO_ESP8266_RELEASE_2_5_2) #error "Arduino ESP8266 Core versions before 2.7.1 are not supported" From 2bf98839e88321f3c22f4d76d893317e413a14ed Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 22 Sep 2020 11:47:41 +0200 Subject: [PATCH 011/119] Update changelog and release notes --- RELEASENOTES.md | 3 +++ tasmota/CHANGELOG.md | 1 + 2 files changed, 4 insertions(+) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 1cfdd3275..bc53f4063 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -60,8 +60,11 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Fix energy total counters (#9263, #9266) - Fix crash in ``ZbRestore`` - Fix reset BMP sensors when executing command ``SaveData`` and define USE_DEEPSLEEP enabled (#9300) +- Fix ``status 0`` message when using define USE_MQTT_TLS due to small log buffer (#9305) +- Change replace ArduinoJson with JSMN for JSON parsing - Add command ``SetOption110 1`` to disable Zigbee auto-config when pairing new devices - Add command ``SetOption111 1`` to enable frequency output for buzzer GPIO (#8994) +- Add command ``SetOption112 1`` to enable friendly name in zigbee topic (use with SetOption89) - Add ``#define USE_MQTT_AWS_IOT_LIGHT`` for password based AWS IoT authentication - Add new shutter modes (#9244) - Add Zigbee auto-config when pairing diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index f50c57428..5ee365800 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -11,6 +11,7 @@ - Change replace ArduinoJson with JSMN for JSON parsing - Add command ``SetOption110 1`` to disable Zigbee auto-config when pairing new devices - Add command ``SetOption111 1`` to enable frequency output for buzzer GPIO (#8994) +- Add command ``SetOption112 1`` to enable friendly name in zigbee topic (use with SetOption89) - Add ``#define USE_MQTT_AWS_IOT_LIGHT`` for password based AWS IoT authentication - Add new shutter modes (#9244) - Add Zigbee auto-config when pairing From 7605ec388c686c7a1a1c0743135c0bbb18c35218 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 22 Sep 2020 12:09:16 +0200 Subject: [PATCH 012/119] Refactor rules MACADDR --- tasmota/xdrv_10_rules.ino | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tasmota/xdrv_10_rules.ino b/tasmota/xdrv_10_rules.ino index be0ba7a98..fdb23f036 100644 --- a/tasmota/xdrv_10_rules.ino +++ b/tasmota/xdrv_10_rules.ino @@ -758,11 +758,9 @@ bool RuleSetProcess(uint8_t rule_set, String &event_saved) RulesVarReplace(commands, F("%TOPIC%"), mqtt_topic); snprintf_P(stemp, sizeof(stemp), PSTR("%06X"), ESP_getChipId()); RulesVarReplace(commands, F("%DEVICEID%"), stemp); - char macaddr[13]; String mac_address = WiFi.macAddress(); mac_address.replace(":", ""); - snprintf_P(macaddr, sizeof(macaddr), PSTR("%s"), mac_address.c_str()); - RulesVarReplace(commands, F("%MACADDR%"), macaddr); + RulesVarReplace(commands, F("%MACADDR%"), mac_address); #if defined(USE_TIMERS) && defined(USE_SUNRISE) RulesVarReplace(commands, F("%SUNRISE%"), String(SunMinutes(0))); RulesVarReplace(commands, F("%SUNSET%"), String(SunMinutes(1))); From 2fc7626025e2e77d4d4e665e043a7ae11bafe399 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 23 Sep 2020 08:45:14 +0200 Subject: [PATCH 013/119] JSMN phase 2 --- tasmota/xdrv_17_rcswitch.ino | 17 +++++++---------- tasmota/xdrv_39_thermostat.ino | 16 ++++++---------- tasmota/xdrv_40_telegram.ino | 26 ++++++++++++++++---------- 3 files changed, 29 insertions(+), 30 deletions(-) diff --git a/tasmota/xdrv_17_rcswitch.ino b/tasmota/xdrv_17_rcswitch.ino index ac4111e83..af89e0a9f 100644 --- a/tasmota/xdrv_17_rcswitch.ino +++ b/tasmota/xdrv_17_rcswitch.ino @@ -104,18 +104,15 @@ void CmndRfSend(void) int repeat = 10; int pulse = 350; - char dataBufUc[XdrvMailbox.data_len + 1]; - UpperCase(dataBufUc, XdrvMailbox.data); - StaticJsonBuffer<150> jsonBuf; // ArduinoJSON entry used to calculate jsonBuf: JSON_OBJECT_SIZE(5) + 40 = 134 - JsonObject &root = jsonBuf.parseObject(dataBufUc); - if (root.success()) { + JsonParserObject root = JsonParser(XdrvMailbox.data).getRootObject(); + if (root) { // RFsend {"data":0x501014,"bits":24,"protocol":1,"repeat":10,"pulse":350} char parm_uc[10]; - data = strtoul(root[UpperCase_P(parm_uc, PSTR(D_JSON_RF_DATA))], nullptr, 0); // Allow decimal (5246996) and hexadecimal (0x501014) input - bits = root[UpperCase_P(parm_uc, PSTR(D_JSON_RF_BITS))]; - protocol = root[UpperCase_P(parm_uc, PSTR(D_JSON_RF_PROTOCOL))]; - repeat = root[UpperCase_P(parm_uc, PSTR(D_JSON_RF_REPEAT))]; - pulse = root[UpperCase_P(parm_uc, PSTR(D_JSON_RF_PULSE))]; + data = root.getUInt(PSTR(D_JSON_RF_DATA), data); + bits = root.getUInt(PSTR(D_JSON_RF_BITS), bits); + protocol = root.getInt(PSTR(D_JSON_RF_PROTOCOL), protocol); + repeat = root.getInt(PSTR(D_JSON_RF_REPEAT), repeat); + pulse = root.getInt(PSTR(D_JSON_RF_PULSE), pulse); } else { // RFsend data, bits, protocol, repeat, pulse char *p; diff --git a/tasmota/xdrv_39_thermostat.ino b/tasmota/xdrv_39_thermostat.ino index 8e863822d..9c70fcb2d 100644 --- a/tasmota/xdrv_39_thermostat.ino +++ b/tasmota/xdrv_39_thermostat.ino @@ -1328,17 +1328,13 @@ void ThermostatDebug(uint8_t ctr_output) #endif // DEBUG_THERMOSTAT void ThermostatGetLocalSensor(uint8_t ctr_output) { - DynamicJsonBuffer jsonBuffer; - JsonObject& root = jsonBuffer.parseObject((const char*)mqtt_data); - if (root.success()) { - const char* value_c = root[THERMOSTAT_SENSOR_NAME]["Temperature"]; - if (value_c != NULL && strlen(value_c) > 0 && (isdigit(value_c[0]) || (value_c[0] == '-' && isdigit(value_c[1])) ) ) { - int16_t value; + JsonParserObject root = JsonParser(mqtt_data).getRootObject(); + if (root) { + JsonParserToken value_token = root[PSTR(THERMOSTAT_SENSOR_NAME)].getObject()[PSTR("Temperature")]; + if (value_token.isNum()) { + int16_t value = value_token.getFloat() * 10; if (Thermostat[ctr_output].status.temp_format == TEMP_FAHRENHEIT) { - value = (int16_t)ThermostatFahrenheitToCelsius((int32_t)(CharToFloat(value_c) * 10), TEMP_CONV_ABSOLUTE); - } - else { - value = (int16_t)(CharToFloat(value_c) * 10); + value = ThermostatFahrenheitToCelsius(value, TEMP_CONV_ABSOLUTE); } if ( (value >= -1000) && (value <= 1000) diff --git a/tasmota/xdrv_40_telegram.ino b/tasmota/xdrv_40_telegram.ino index 92fca7c90..e1716f56d 100644 --- a/tasmota/xdrv_40_telegram.ino +++ b/tasmota/xdrv_40_telegram.ino @@ -76,7 +76,7 @@ bool TelegramInit(void) { if (!telegramClient) { telegramClient = new BearSSL::WiFiClientSecure_light(tls_rx_size, tls_tx_size); #ifdef USE_MQTT_TLS_CA_CERT - telegramClient->setTrustAnchor(&GoDaddyCAG2_TA); + telegramClient->setTrustAnchor(&GoDaddyCAG2_TA, 1); #else telegramClient->setPubKeyFingerprint(Telegram_Fingerprint, Telegram_Fingerprint, false); // check server fingerprint #endif @@ -225,15 +225,21 @@ void TelegramAnalizeMessage(void) { for (uint32_t i = 1; i < Telegram.message[0][0].toInt() +1; i++) { Telegram.message[i][5] = ""; - DynamicJsonBuffer jsonBuffer; - JsonObject &root = jsonBuffer.parseObject(Telegram.message[i][0]); - if (root.success()) { - Telegram.message[i][0] = root["update_id"].as(); - Telegram.message[i][1] = root["message"]["from"]["id"].as(); - Telegram.message[i][2] = root["message"]["from"]["first_name"].as(); - Telegram.message[i][3] = root["message"]["from"]["last_name"].as(); - Telegram.message[i][4] = root["message"]["chat"]["id"].as(); - Telegram.message[i][5] = root["message"]["text"].as(); + String buf = Telegram.message[i][0]; // we need to keep a copy of the buffer + JsonParserObject root = JsonParser((char*)buf.c_str()).getRootObject(); + if (root) { + Telegram.message[i][0] = root["update_id"].getStr(); + Telegram.message[i][1] = root["message"].getObject()["from"].getObject()["id"].getStr(); + Telegram.message[i][2] = root["message"].getObject()["from"].getObject()["first_name"].getStr(); + Telegram.message[i][3] = root["message"].getObject()["from"].getObject()["last_name"].getStr(); + Telegram.message[i][4] = root["message"].getObject()["chat"].getObject()["id"].getStr(); + Telegram.message[i][5] = root["message"].getObject()["text"].getStr(); + // Telegram.message[i][0] = root["update_id"].as(); + // Telegram.message[i][1] = root["message"]["from"]["id"].as(); + // Telegram.message[i][2] = root["message"]["from"]["first_name"].as(); + // Telegram.message[i][3] = root["message"]["from"]["last_name"].as(); + // Telegram.message[i][4] = root["message"]["chat"]["id"].as(); + // Telegram.message[i][5] = root["message"]["text"].as(); } int id = Telegram.message[Telegram.message[0][0].toInt()][0].toInt() +1; From a7aa90d1f9cd5caa481752d0a1002e343198da77 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 23 Sep 2020 10:03:50 +0200 Subject: [PATCH 014/119] Fix compilation error in Rules --- tasmota/xdrv_10_rules.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xdrv_10_rules.ino b/tasmota/xdrv_10_rules.ino index fdb23f036..abc6fcece 100644 --- a/tasmota/xdrv_10_rules.ino +++ b/tasmota/xdrv_10_rules.ino @@ -1078,7 +1078,7 @@ bool RulesMqttData(void) if ((dot = key1.indexOf('.')) > 0) { key2 = key1.substring(dot+1); key1 = key1.substring(0, dot); - JsonParserToken value_tok = jsonData[key1.c_str()][key2.c_str()]; + JsonParserToken value_tok = jsonData[key1.c_str()].getObject()[key2.c_str()]; if (!value_tok) break; //Failed to get the key/value, ignore this message. value = value_tok.getStr(); // if (!jsonData[key1][key2].success()) break; //Failed to get the key/value, ignore this message. From 84a13e06e007b4c2a57d213d44c072a3dc11294a Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Wed, 23 Sep 2020 12:51:35 +0200 Subject: [PATCH 015/119] scripter 3 string arrays --- tasmota/xdrv_10_scripter.ino | 329 +++++++++++++++++++++++++++-------- 1 file changed, 252 insertions(+), 77 deletions(-) diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index 32a8c2a3e..42c634ac3 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -65,6 +65,7 @@ keywords if then else endif, or, and are better readable for beginners (others m #define SCRIPT_MAXPERM (PMEM_SIZE)-4/sizeof(float) #define MAX_SCRIPT_SIZE MAX_RULE_SIZE*MAX_RULE_SETS +#define MAX_SARRAY_NUM 32 uint32_t EncodeLightId(uint8_t relay_id); uint32_t DecodeLightId(uint32_t hue_id); @@ -395,14 +396,16 @@ struct SCRIPT_MEM { void *script_mem; uint16_t script_mem_size; uint8_t script_dprec; + uint8_t script_lzero; uint8_t var_not_found; uint8_t glob_error; uint8_t max_ssize; uint8_t script_loglevel; uint8_t flags; - uint8_t si_num; - uint8_t siro_num; - char *last_index_string; + uint8_t si_num[3]; + uint8_t siro_num[3]; + uint8_t sind_num; + char *last_index_string[3]; #ifdef USE_SCRIPT_FATFS File files[SFS_MAX]; @@ -438,6 +441,30 @@ uint8_t fast_script=0; uint8_t glob_script=0; uint32_t script_lastmillis; +void flt2char(float num, char *nbuff) { + dtostrfd(num, glob_script_mem.script_dprec, nbuff); +} +// convert float to char with leading zeros +void f2char(float num, uint32_t dprec, uint32_t lzeros, char *nbuff) { + dtostrfd(num, dprec, nbuff); + if (lzeros>1) { + // check leading zeros + uint32_t nd = num; + nd/=10; + nd+=1; + if (lzeros>nd) { + // insert zeros + char cpbuf[24]; + char *cp = cpbuf; + for (uint32_t cnt = 0; cnt < lzeros - nd; cnt++) { + *cp++='0'; + } + *cp=0; + strcat(cpbuf,nbuff); + strcpy(nbuff,cpbuf); + } + } +} #ifdef USE_BUTTON_EVENT int8_t script_button[MAX_KEYS]; @@ -801,6 +828,7 @@ char *script; glob_script_mem.numvars = vars; glob_script_mem.script_dprec = SCRIPT_FLOAT_PRECISION; + glob_script_mem.script_lzero = 0; glob_script_mem.script_loglevel = LOG_LEVEL_INFO; @@ -811,7 +839,7 @@ char *script; } else { char string[32]; - dtostrfd(glob_script_mem.fvars[dvtp[count].index], glob_script_mem.script_dprec, string); + f2char(glob_script_mem.fvars[dvtp[count].index], glob_script_mem.script_dprec, glob_script_mem.script_lzero, string); toLog(string); } } @@ -1127,6 +1155,23 @@ float *Get_MFAddr(uint8_t index, uint16_t *len, uint16_t *ipos) { return 0; } +char *isvar(char *lp, uint8_t *vtype, struct T_INDEX *tind, float *fp, char *sp, JsonObject *jo); + + +float *get_array_by_name(char *name, uint16_t *alen) { + struct T_INDEX ind; + uint8_t vtype; + isvar(name, &vtype, &ind, 0, 0, 0); + if (vtype==VAR_NV) return 0; + if (vtype&STYPE) return 0; + uint16_t index = glob_script_mem.type[ind.index].index; + + if (glob_script_mem.type[ind.index].bits.is_filter) { + float *fa = Get_MFAddr(index, alen, 0); + return fa; + } + return 0; +} float Get_MFVal(uint8_t index, int16_t bind) { uint8_t *mp = (uint8_t*)glob_script_mem.mfilt; @@ -1392,6 +1437,81 @@ uint32_t match_vars(char *dvnam, float **fp, char **sp, uint32_t *ind) { } #endif //USE_SCRIPT_GLOBVARS +char *isargs(char *lp, uint32_t isind) { + float fvar; + lp = GetNumericArgument(lp, OPER_EQU, &fvar, 0); + SCRIPT_SKIP_SPACES + if (*lp!='"') { + return lp; + } + lp++; + + if (glob_script_mem.si_num[isind]>0 && glob_script_mem.last_index_string[isind]) { + free(glob_script_mem.last_index_string[isind]); + } + char *sstart = lp; + uint8_t slen = 0; + for (uint32_t cnt = 0; cnt<256; cnt++) { + if (*lp=='\n' || *lp=='"' || *lp==0) { + lp++; + if (cnt>0 && !slen) { + slen++; + } + glob_script_mem.siro_num[isind] = slen; + break; + } + if (*lp=='|') { + slen++; + } + lp++; + } + + glob_script_mem.si_num[isind] = fvar; + if (glob_script_mem.si_num[isind]>0) { + if (glob_script_mem.si_num[isind]>MAX_SARRAY_NUM) { + glob_script_mem.si_num[isind] = MAX_SARRAY_NUM; + } + + glob_script_mem.last_index_string[isind] = (char*)calloc(glob_script_mem.max_ssize*glob_script_mem.si_num[isind], 1); + for (uint32_t cnt = 0; cntglob_script_mem.si_num[isind]) { + index = glob_script_mem.si_num[isind]; + } + strlcpy(str,glob_script_mem.last_index_string[isind] + (index * glob_script_mem.max_ssize), glob_script_mem.max_ssize); + } + } + lp++; + if (sp) strlcpy(sp, str, glob_script_mem.max_ssize); + return lp; +} // vtype => ff=nothing found, fe=constant number,fd = constant string else bit 7 => 80 = string, 0 = number // no flash strings here for performance reasons!!! @@ -2085,6 +2205,93 @@ chknext: len = 0; goto exit; } + + if (!strncmp(vname, "fwa(", 4)) { + struct T_INDEX ind; + uint8_t vtype; + lp = isvar(lp + 4, &vtype, &ind, 0, 0, 0); + if (vtype!=VAR_NV && (vtype&STYPE)==0 && glob_script_mem.type[ind.index].bits.is_filter) { + // found array as result + + } else { + // error + fvar = 0; + goto exit; + } + + while (*lp==' ') lp++; + lp = GetNumericArgument(lp, OPER_EQU, &fvar, 0); + uint8_t index = fvar; + if (index>=SFS_MAX) index = SFS_MAX - 1; + if (glob_script_mem.file_flags[index].is_open) { + uint16_t len = 0; + float *fa = Get_MFAddr(glob_script_mem.type[ind.index].index, &len, 0); + char dstr[24]; + for (uint32_t cnt = 0; cnt=SFS_MAX) find = SFS_MAX - 1; + char str[glob_script_mem.max_ssize + 1]; + if (glob_script_mem.file_flags[find].is_open) { + uint16_t len = 0; + float *fa = Get_MFAddr(glob_script_mem.type[ind.index].index, &len, 0); + char dstr[24]; + for (uint32_t cnt = 0; cnt=glob_script_mem.max_ssize - 1) break; + } + } + *cp = 0; + *fa++=CharToFloat(str); + } + } else { + fvar = 0; + } + lp++; + len = 0; + goto exit; + } + #endif // USE_SCRIPT_FATFS_EXT if (!strncmp(vname, "fl1(", 4) || !strncmp(vname, "fl2(", 4) ) { uint8_t lknum = *(lp+2)&3; @@ -2202,7 +2409,6 @@ chknext: } #endif //USE_LIGHT break; -#define MAX_SARRAY_NUM 32 case 'i': if (!strncmp(vname, "int(", 4)) { lp = GetNumericArgument(lp + 4, OPER_EQU, &fvar, 0); @@ -2212,77 +2418,35 @@ chknext: goto exit; } if (!strncmp(vname, "is(", 3)) { - lp = GetNumericArgument(lp + 3, OPER_EQU, &fvar, 0); - SCRIPT_SKIP_SPACES - if (*lp!='"') { - break; - } - lp++; - - if (glob_script_mem.si_num>0 && glob_script_mem.last_index_string) { - free(glob_script_mem.last_index_string); - } - char *sstart = lp; - uint8_t slen = 0; - for (uint32_t cnt = 0; cnt<256; cnt++) { - if (*lp=='\n' || *lp=='"' || *lp==0) { - lp++; - if (cnt>0 && !slen) { - slen++; - } - glob_script_mem.siro_num = slen; - break; - } - if (*lp=='|') { - slen++; - } - lp++; - } - - glob_script_mem.si_num = fvar; - if (glob_script_mem.si_num>0) { - if (glob_script_mem.si_num>MAX_SARRAY_NUM) { - glob_script_mem.si_num = MAX_SARRAY_NUM; - } - - glob_script_mem.last_index_string = (char*)calloc(glob_script_mem.max_ssize*glob_script_mem.si_num, 1); - for (uint32_t cnt = 0; cntglob_script_mem.si_num) { - index = glob_script_mem.si_num; - } - strlcpy(str,glob_script_mem.last_index_string + (index * glob_script_mem.max_ssize), glob_script_mem.max_ssize); - } - } - lp++; - if (sp) strlcpy(sp, str, glob_script_mem.max_ssize); + lp = isget(lp + 3, sp, 0); + len = 0; + goto strexit; + } + if (!strncmp(vname, "is1[", 4)) { + lp = isget(lp + 4, sp, 1); + len = 0; + goto strexit; + } + if (!strncmp(vname, "is2[", 4)) { + lp = isget(lp + 4, sp, 2); len = 0; goto strexit; } @@ -2614,7 +2778,7 @@ chknext: if (!strncmp(vname, "s(", 2)) { lp = GetNumericArgument(lp + 2, OPER_EQU, &fvar, 0); char str[glob_script_mem.max_ssize + 1]; - dtostrfd(fvar, glob_script_mem.script_dprec, str); + f2char(fvar, glob_script_mem.script_dprec, glob_script_mem.script_lzero, str); if (sp) strlcpy(sp, str, glob_script_mem.max_ssize); lp++; len = 0; @@ -3260,6 +3424,7 @@ void Replace_Cmd_Vars(char *srcbuf, uint32_t srcsize, char *dstbuf, uint32_t dst uint16_t count; uint8_t vtype; uint8_t dprec = glob_script_mem.script_dprec; + uint8_t lzero = glob_script_mem.script_lzero; float fvar; cp = srcbuf; struct T_INDEX ind; @@ -3273,16 +3438,21 @@ void Replace_Cmd_Vars(char *srcbuf, uint32_t srcsize, char *dstbuf, uint32_t dst dstbuf[count] = *cp++; } else { if (isdigit(*cp)) { + if (*(cp+1)=='.') { + lzero = *cp & 0xf; + cp+=2; + } dprec = *cp & 0xf; cp++; } else { dprec = glob_script_mem.script_dprec; + lzero = glob_script_mem.script_lzero; } if (*cp=='(') { // math expression cp++; cp = GetNumericArgument(cp, OPER_EQU, &fvar, 0); - dtostrfd(fvar, dprec, string); + f2char(fvar, dprec, lzero, string); uint8_t slen = strlen(string); if (count + slen=0) { if (lastop==OPER_EQU) { - strlcpy(glob_script_mem.last_index_string + (saindex * glob_script_mem.max_ssize), str, glob_script_mem.max_ssize); + strlcpy(glob_script_mem.last_index_string[glob_script_mem.sind_num] + (saindex * glob_script_mem.max_ssize), str, glob_script_mem.max_ssize); } else if (lastop==OPER_PLSEQU) { - strncat(glob_script_mem.last_index_string + (saindex * glob_script_mem.max_ssize), str, glob_script_mem.max_ssize); + strncat(glob_script_mem.last_index_string[glob_script_mem.sind_num] + (saindex * glob_script_mem.max_ssize), str, glob_script_mem.max_ssize); } last_sindex = -1; } else { @@ -6182,6 +6356,7 @@ const char SCRIPT_MSG_GTE1[] PROGMEM = "'%s'"; #define MAX_GARRAY 4 + char *gc_get_arrays(char *lp, float **arrays, uint8_t *ranum, uint16_t *rentries, uint16_t *ipos) { struct T_INDEX ind; uint8_t vtype; @@ -6659,7 +6834,7 @@ exgc: for (uint32_t ind = 0; ind < anum; ind++) { char acbuff[32]; float *fp = arrays[ind]; - dtostrfd(fp[aind], glob_script_mem.script_dprec, acbuff); + f2char(fp[aind], glob_script_mem.script_dprec, glob_script_mem.script_lzero, acbuff); WSContentSend_PD("%s", acbuff); if (ind Date: Wed, 23 Sep 2020 12:52:04 +0200 Subject: [PATCH 016/119] i2s audio fix define bug --- tasmota/xdrv_42_i2s_audio.ino | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tasmota/xdrv_42_i2s_audio.ino b/tasmota/xdrv_42_i2s_audio.ino index 5a31d832b..4a3bd91b0 100644 --- a/tasmota/xdrv_42_i2s_audio.ino +++ b/tasmota/xdrv_42_i2s_audio.ino @@ -54,11 +54,6 @@ AudioFileSourceID3 *id3; AudioGeneratorMP3 *decoder = NULL; void *mp3ram = NULL; -#ifdef USE_WEBRADIO -AudioFileSourceICYStream *ifile = NULL; -AudioFileSourceBuffer *buff = NULL; -char wr_title[64]; -//char status[64]; #ifdef ESP8266 const int preallocateBufferSize = 5*1024; @@ -69,6 +64,12 @@ const int preallocateCodecSize = 29192; // MP3 codec max mem needed //const int preallocateCodecSize = 85332; // AAC+SBR codec max mem needed #endif +#ifdef USE_WEBRADIO +AudioFileSourceICYStream *ifile = NULL; +AudioFileSourceBuffer *buff = NULL; +char wr_title[64]; +//char status[64]; + void *preallocateBuffer = NULL; void *preallocateCodec = NULL; uint32_t retryms = 0; From ee7b64692b424de5d9817a513771e1d3cb0c4536 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Wed, 23 Sep 2020 12:52:54 +0200 Subject: [PATCH 017/119] sendmail esp8266 mail attachments, array attachments --- .../src/ESP32_MailClient.cpp | 52 +++++- .../ESP32-Mail-Client/src/ESP32_MailClient.h | 5 +- tasmota/sendemail.ino | 172 +++++++++++++++++- 3 files changed, 211 insertions(+), 18 deletions(-) diff --git a/libesp32/ESP32-Mail-Client/src/ESP32_MailClient.cpp b/libesp32/ESP32-Mail-Client/src/ESP32_MailClient.cpp index 85cb0663e..687661ac9 100755 --- a/libesp32/ESP32-Mail-Client/src/ESP32_MailClient.cpp +++ b/libesp32/ESP32-Mail-Client/src/ESP32_MailClient.cpp @@ -654,7 +654,7 @@ bool ESP32_MailClient::readMail(IMAPData &imapData) { _sdOk = sdTest(); if (_sdOk) - if (!SD.exists(imapData._savePath.c_str())) + if (!imapData.fsp->exists(imapData._savePath.c_str())) createDirs(imapData._savePath); } else if (imapData._storageType == MailClientStorageType::SPIFFS) @@ -1788,6 +1788,7 @@ bool ESP32_MailClient::sendMail(SMTPData &smtpData) else { +/* if (!_sdOk) { if (smtpData._storageType == MailClientStorageType::SD) @@ -1798,13 +1799,18 @@ bool ESP32_MailClient::sendMail(SMTPData &smtpData) if (!_sdOk) continue; - +*/ bool file_existed = false; +/* if (smtpData._storageType == MailClientStorageType::SD) file_existed = SD.exists(smtpData._attach._filename[i].c_str()); else if (smtpData._storageType == MailClientStorageType::SPIFFS) file_existed = SPIFFS.exists(smtpData._attach._filename[i].c_str()); + else if (smtpData._storageType == MailClientStorageType::FFat) + file_existed = FFat.exists(smtpData._attach._filename[i].c_str()); +*/ + file_existed = smtpData.fsp->exists(smtpData._attach._filename[i].c_str()); if (file_existed) { smtpData._cbData._info = smtpData._attach._filename[i]; @@ -1820,10 +1826,15 @@ bool ESP32_MailClient::sendMail(SMTPData &smtpData) smtpData._net->getStreamPtr()->print(buf.c_str()); File file; + /* if (smtpData._storageType == MailClientStorageType::SD) file = SD.open(smtpData._attach._filename[i].c_str(), FILE_READ); else if (smtpData._storageType == MailClientStorageType::SPIFFS) file = SPIFFS.open(smtpData._attach._filename[i].c_str(), FILE_READ); + else if (smtpData._storageType == MailClientStorageType::FFat) + file = FFat.open(smtpData._attach._filename[i].c_str(), FILE_READ); + */ + file = smtpData.fsp->open(smtpData._attach._filename[i].c_str(), FILE_READ); send_base64_encode_mime_file(smtpData._net->getStreamPtr(), file); smtpData._net->getStreamPtr()->print(ESP32_MAIL_STR_34); @@ -2036,6 +2047,7 @@ bool ESP32_MailClient::sdBegin(uint8_t sck, uint8_t miso, uint8_t mosi, uint8_t _mosi = mosi; _ss = ss; _sdConfigSet = true; + SPI.begin(_sck, _miso, _mosi, _ss); return SD.begin(_ss, SPI); } @@ -2331,7 +2343,7 @@ bool ESP32_MailClient::waitIMAPResponse(IMAPData &imapData, uint8_t imapCommandT delete[] midx; if (imapData._storageType == MailClientStorageType::SD) - if (!SD.exists(filepath.c_str())) + if (!imapData.fsp->exists(filepath.c_str())) createDirs(filepath); if (!imapData._headerSaved) @@ -2353,7 +2365,7 @@ bool ESP32_MailClient::waitIMAPResponse(IMAPData &imapData, uint8_t imapCommandT } if (imapData._storageType == MailClientStorageType::SD) - file = SD.open(filepath.c_str(), FILE_WRITE); + file = imapData.fsp->open(filepath.c_str(), FILE_WRITE); else if (imapData._storageType == MailClientStorageType::SPIFFS) file = SPIFFS.open(filepath.c_str(), FILE_WRITE); } @@ -2922,7 +2934,7 @@ bool ESP32_MailClient::waitIMAPResponse(IMAPData &imapData, uint8_t imapCommandT delete[] midx; if (imapData._storageType == MailClientStorageType::SD) - if (!SD.exists(filepath.c_str())) + if (!imapData.fsp->exists(filepath.c_str())) createDirs(filepath); if (!imapData._headerSaved) @@ -2944,7 +2956,7 @@ bool ESP32_MailClient::waitIMAPResponse(IMAPData &imapData, uint8_t imapCommandT } if (imapData._storageType == MailClientStorageType::SD) - file = SD.open(filepath.c_str(), FILE_WRITE); + file = imapData.fsp->open(filepath.c_str(), FILE_WRITE); else if (imapData._storageType == MailClientStorageType::SPIFFS) file = SPIFFS.open(filepath.c_str(), FILE_WRITE); } @@ -3003,7 +3015,7 @@ bool ESP32_MailClient::waitIMAPResponse(IMAPData &imapData, uint8_t imapCommandT delete[] midx; if (imapData._storageType == MailClientStorageType::SD) - if (!SD.exists(filepath.c_str())) + if (!imapData.fsp->exists(filepath.c_str())) createDirs(filepath); filepath += ESP32_MAIL_STR_202; @@ -3011,7 +3023,7 @@ bool ESP32_MailClient::waitIMAPResponse(IMAPData &imapData, uint8_t imapCommandT filepath += imapData._messageDataInfo[mailIndex][messageDataIndex]._filename; if (imapData._storageType == MailClientStorageType::SD) - file = SD.open(filepath.c_str(), FILE_WRITE); + file = imapData.fsp->open(filepath.c_str(), FILE_WRITE); else if (imapData._storageType == MailClientStorageType::SPIFFS) file = SPIFFS.open(filepath.c_str(), FILE_WRITE); } @@ -3167,7 +3179,7 @@ bool ESP32_MailClient::waitIMAPResponse(IMAPData &imapData, uint8_t imapCommandT { if (imapData._storageType == MailClientStorageType::SD) - file = SD.open(hpath.c_str(), FILE_WRITE); + file = imapData.fsp->open(hpath.c_str(), FILE_WRITE); else if (imapData._storageType == MailClientStorageType::SPIFFS) file = SPIFFS.open(hpath.c_str(), FILE_WRITE); @@ -3714,6 +3726,17 @@ void IMAPData::setFetchUID(const String &fetchUID) void IMAPData::setFileStorageType(uint8_t storageType) { _storageType = storageType; + switch (storageType) { + case MailClientStorageType::SPIFFS: + fsp = &SPIFFS; + break; + case MailClientStorageType::SD: + fsp = &SD; + break; + case MailClientStorageType::FFat: + fsp = &FFat; + break; + } } void IMAPData::setDownloadAttachment(bool download) @@ -4733,6 +4756,17 @@ void SMTPData::removeAttachFile(uint8_t index) void SMTPData::setFileStorageType(uint8_t storageType) { _storageType = storageType; + switch (storageType) { + case MailClientStorageType::SPIFFS: + fsp = &SPIFFS; + break; + case MailClientStorageType::SD: + fsp = &SD; + break; + case MailClientStorageType::FFat: + fsp = &FFat; + break; + } } void SMTPData::clearAttachData() diff --git a/libesp32/ESP32-Mail-Client/src/ESP32_MailClient.h b/libesp32/ESP32-Mail-Client/src/ESP32_MailClient.h index 943cd62f7..b6a8da775 100755 --- a/libesp32/ESP32-Mail-Client/src/ESP32_MailClient.h +++ b/libesp32/ESP32-Mail-Client/src/ESP32_MailClient.h @@ -48,6 +48,7 @@ #include "RFC2047.h" #include "ESP32MailHTTPClient.h" #include "ESP32TimeHelper.h" +#include #define FORMAT_SPIFFS_IF_FAILED true @@ -90,6 +91,7 @@ struct MailClientStorageType { static const uint8_t SPIFFS = 0; static const uint8_t SD = 1; + static const uint8_t FFat = 2; }; static const char ESP32_MAIL_STR_1[] PROGMEM = "Content-Type: multipart/mixed; boundary=\""; @@ -1302,6 +1304,7 @@ private: std::string _host = ""; uint16_t _port = 993; uint8_t _storageType = 1; + FS *fsp = &SD; bool _unseen = false; std::string _loginEmail = ""; std::string _loginPassword = ""; @@ -1859,7 +1862,7 @@ protected: string _host = ""; uint16_t _port = 0; uint8_t _storageType = 1; - + FS *fsp = &SD; string _fromName = ""; string _senderEmail = ""; string _subject = ""; diff --git a/tasmota/sendemail.ino b/tasmota/sendemail.ino index 0a4c4de0e..bc080bd7f 100644 --- a/tasmota/sendemail.ino +++ b/tasmota/sendemail.ino @@ -330,6 +330,12 @@ String buffer; if (!buffer.startsWith(F("354"))) { goto exit; } + + buffer = F("MIME-Version: 1.0\r\n"); + client->print(buffer); + buffer = F("Content-Type: Multipart/mixed; boundary=frontier\r\n"); + client->print(buffer); + buffer = F("From: "); buffer += from; client->println(buffer); @@ -350,6 +356,7 @@ String buffer; AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif + #ifdef USE_SCRIPT if (*msg=='*' && *(msg+1)==0) { g_client=client; @@ -378,9 +385,98 @@ exit: } void xsend_message_txt(char *msg) { - g_client->println(msg); -} +#ifdef DEBUG_EMAIL_PORT + AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),msg); +#endif +#if defined(USE_SCRIPT_FATFS) && defined(USE_SCRIPT) + if (*msg=='@') { + msg++; + attach_File(msg); + } else if (*msg=='&') { + msg++; + attach_Array(msg); + } else { + g_client->print(F("--frontier\r\n")); + g_client->print(F("Content-Type: text/plain\r\n\r\n")); + g_client->println(msg); + g_client->print(F("\r\n--frontier\r\n")); + } #else + g_client->print(F("--frontier\r\n")); + g_client->print(F("Content-Type: text/plain\r\n\r\n")); + g_client->println(msg); + g_client->print(F("\r\n--frontier\r\n")); +#endif +} + +#if defined(USE_SCRIPT_FATFS) && defined(USE_SCRIPT) +#include +extern FS *fsp; + +void attach_File(char *path) { + g_client->print(F("--frontier\r\n")); + g_client->print(F("Content-Type: text/plain\r\n")); + char buff[64]; + char *cp = path; + while (*cp=='/') cp++; + File file = fsp->open(path, "r"); + if (file) { + sprintf_P(buff,PSTR("Content-Disposition: attachment; filename=\"%s\"\r\n\r\n"), cp); + g_client->write(buff); + uint16_t flen = file.size(); + uint8_t fbuff[64]; + uint16_t blen = sizeof(fbuff); + while (flen>0) { + file.read(fbuff, blen); + flen -= blen; + g_client->write(fbuff, blen); + if (flenprint(F("\r\n\r\nfile not found!\r\n")); + } + g_client->print(F("\r\n--frontier\r\n")); +} + +float *get_array_by_name(char *name, uint16_t *alen); +void flt2char(float num, char *nbuff); + +void attach_Array(char *aname) { + float *array = 0; + uint16_t alen; + array = get_array_by_name(aname, &alen); + g_client->print(F("--frontier\r\n")); + g_client->print(F("Content-Type: text/plain\r\n")); + if (array && alen) { +#ifdef DEBUG_EMAIL_PORT + AddLog_P2(LOG_LEVEL_INFO, PSTR("array found %d"),alen); +#endif + char buff[64]; + sprintf_P(buff,PSTR("Content-Disposition: attachment; filename=\"%s.txt\"\r\n\r\n"), aname); + g_client->write(buff); + float *fp=array; + for (uint32_t cnt = 0; cntwrite(nbuff, strlen(nbuff)); + } + } else { + g_client->print(F("\r\n\r\narray not found!\r\n")); + } + g_client->print(F("\r\n--frontier\r\n")); +} + +#endif // defined(USE_SCRIPT_FATFS) && defined(USE_SCRIPT) + +#else + /* * Created by K. Suwatchai (Mobizt) @@ -413,6 +509,9 @@ void script_send_email_body(void(*func)(char *)); #define xPSTR(a) a //The Email Sending data object contains config and data to send SMTPData smtpData; +#define MAX_ATTCHMENTS 8 +char *attachments[MAX_ATTCHMENTS]; +uint8_t num_attachments; //Callback function to get the Email sending status //void sendCallback(SendStatus info); @@ -435,7 +534,7 @@ uint16_t SendMail(char *buffer) { // return if not enough memory uint32_t mem=ESP.getFreeHeap(); - AddLog_P2(LOG_LEVEL_INFO, PSTR("heap: %d"),mem); + //AddLog_P2(LOG_LEVEL_INFO, PSTR("heap: %d"),mem); if (memprint(F("\r\n\r\narray not found!\r\n")); + } +} void send_message_txt(char *txt) { - if (*txt=='&') { + if (*txt=='@') { txt++; smtpData.addAttachFile(txt); + } else if (*txt=='&') { + txt++; + attach_Array(txt); } else if (*txt=='$') { txt++; #if defined(ESP32) && defined(USE_WEBCAM) From ddac2668575913fec154a3a43113bfac0373e602 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Wed, 23 Sep 2020 12:53:52 +0200 Subject: [PATCH 018/119] fix esp32 watch init bug --- tasmota/xdrv_83_esp32watch.ino | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/tasmota/xdrv_83_esp32watch.ino b/tasmota/xdrv_83_esp32watch.ino index 2f759aa9a..6a58974c0 100644 --- a/tasmota/xdrv_83_esp32watch.ino +++ b/tasmota/xdrv_83_esp32watch.ino @@ -64,6 +64,7 @@ struct TTGO_globs { bool bma_double_click = false; bool bma_click = false; bool bma_button = false; + bool power_ok = false; } ttgo_globs; @@ -115,15 +116,19 @@ void TTGO_Init(void) { ttgo_globs.bma->enableWakeupInterrupt(true); ttgo_globs.bma->enableAnyNoMotionInterrupt(true); ttgo_globs.bma->enableAccel(); -#endif +#endif // USE_BMA423 } void initPower(void) { int ret = ttgo_globs.ttgo_power->begin(axpReadBytes, axpWriteBytes); if (ret == AXP_FAIL) { //DBGX("AXP Power begin failed"); + // Serial.printf("AXP202 failed\n" ); } else { I2cSetActiveFound(AXP202_SLAVE_ADDRESS, "AXP202"); + ttgo_globs.power_ok = true; + // Serial.printf("AXP202 OK\n" ); + //Change the button boot time to 4 seconds ttgo_globs.ttgo_power->setShutdownTime(AXP_POWER_OFF_TIME_4S); // Turn off the charging instructions, there should be no @@ -162,6 +167,7 @@ void initPower(void) { portYIELD_FROM_ISR (); } }, FALLING); + } } @@ -205,6 +211,8 @@ const char HTTP_TTGO_BMA[] PROGMEM = void TTGO_WebShow(uint32_t json) { + if (ttgo_globs.power_ok == false) return; + TTGO_GetADC(); char vstring[32]; @@ -276,8 +284,9 @@ int32_t ttgo_sleeptime; ttgo_sleeptime = stime; +#ifdef USE_DISPLAY DisplayOnOff(0); - +#endif if (ttgo_sleeptime>=0) { // ligh sleep mode WifiShutdown(); @@ -311,7 +320,9 @@ int32_t ttgo_sleeptime; if (ttgo_sleeptime) { ttgo_globs.lenergy = false; rtc_clk_cpu_freq_set(RTC_CPU_FREQ_240M); +#ifdef USE_DISPLAY DisplayOnOff(1); +#endif } else { while (ttgo_globs.lenergy == true) { TTGO_loop(0); @@ -332,7 +343,9 @@ uint8_t data; if (ttgo_globs.lenergy) { ttgo_globs.lenergy = false; rtc_clk_cpu_freq_set(RTC_CPU_FREQ_240M); +#ifdef USE_DISPLAY DisplayOnOff(1); +#endif } #ifdef USE_BMA423 From d9f2b1b2a45ef39953d969766e0e21f1a3b65671 Mon Sep 17 00:00:00 2001 From: Staars Date: Wed, 23 Sep 2020 16:48:49 +0200 Subject: [PATCH 019/119] update xsns_62_MI_HM10 --- tasmota/xsns_62_MI_HM10.ino | 201 ++++++++++++++++++++++-------------- 1 file changed, 125 insertions(+), 76 deletions(-) diff --git a/tasmota/xsns_62_MI_HM10.ino b/tasmota/xsns_62_MI_HM10.ino index 05ba845fd..50f12fd12 100644 --- a/tasmota/xsns_62_MI_HM10.ino +++ b/tasmota/xsns_62_MI_HM10.ino @@ -20,6 +20,8 @@ -------------------------------------------------------------------------------------------- Version yyyymmdd Action Description -------------------------------------------------------------------------------------------- + 0.9.4.1 20200807 added - add ATC, some optimizations and a bit more error handling + --- 0.9.4.0 20200807 added - multiple backports from the HM10-driver (NLIGHT,MJYD2S,YEERC,MHOC401,MHOC303), fixing Flora values, adding realtime-bridge, better battery for LYWSD03 and MHOC401 --- @@ -52,7 +54,7 @@ TasmotaSerial *HM10Serial; #define HM10_MAX_TASK_NUMBER 12 uint8_t HM10_TASK_LIST[HM10_MAX_TASK_NUMBER+1][2]; // first value: kind of task - second value: delay in x * 100ms -#define HM10_MAX_RX_BUF 64 +#define HM10_MAX_RX_BUF 384 struct { uint8_t current_task_delay; // number of 100ms-cycles @@ -75,8 +77,6 @@ struct { uint32_t autoScan:1; uint32_t shallTriggerTele:1; uint32_t triggeredTele:1; - // uint32_t shallClearResults:1; // BLE scan results - // TODO: more to come } mode; struct { uint8_t sensor; // points to to the number 0...255 @@ -90,28 +90,28 @@ struct { uint32_t minimalSummary:1; uint32_t noRealTime:1; } option; + char *rxBuffer; } HM10; #pragma pack(1) // byte-aligned structures to read the sensor data - struct { - uint16_t temp; - uint8_t hum; - uint16_t volt; - } LYWSD0x_HT; - struct { - uint8_t spare; - uint16_t temp; - uint16_t hum; - } CGD1_HT; - struct { - uint16_t temp; - uint8_t spare; - uint32_t lux; - uint8_t moist; - uint16_t fert; - } Flora_TLMF; // temperature, lux, moisture, fertility - +struct LYWSD0x_HT_t{ + uint16_t temp; + uint8_t hum; + uint16_t volt; +}; +struct CGD1_HT_t{ + uint8_t spare; + uint16_t temp; + uint16_t hum; +}; +struct Flora_TLMF_t{ + uint16_t temp; + uint8_t spare; + uint32_t lux; + uint8_t moist; + uint16_t fert; +}; // temperature, lux, moisture, fertility struct mi_beacon_t{ uint16_t frame; @@ -141,6 +141,16 @@ struct mi_beacon_t{ }; uint8_t padding[12]; }; + +struct ATCPacket_t{ + uint8_t MAC[6]; + int16_t temp; //sadly this is in wrong endianess + uint8_t hum; + uint8_t batPer; + uint16_t batMV; + uint8_t frameCnt; +}; + #pragma pack(0) struct mi_sensor_t{ @@ -229,8 +239,9 @@ const char kHM10_Commands[] PROGMEM = "Scan|AT|Period|Baud|Time|Auto #define YEERC 9 #define MHOC401 10 #define MHOC303 11 +#define ATC 12 -#define HM10_TYPES 11 //count this manually +#define HM10_TYPES 12 //count this manually const uint16_t kHM10SlaveID[HM10_TYPES]={ 0x0098, // Flora @@ -243,7 +254,8 @@ const uint16_t kHM10SlaveID[HM10_TYPES]={ 0x07f6, // MJYD2S 0x0153, // yee-rc 0x0387, // MHO-C401 - 0x06d3 // MHO-C303 + 0x06d3, // MHO-C303 + 0x0a1c // ATC -> this is a fake ID }; const char kHM10DeviceType1[] PROGMEM = "Flora"; @@ -257,8 +269,9 @@ const char kHM10DeviceType8[] PROGMEM = "MJYD2S"; const char kHM10DeviceType9[] PROGMEM = "YEERC"; const char kHM10DeviceType10[] PROGMEM ="MHOC401"; const char kHM10DeviceType11[] PROGMEM ="MHOC303"; +const char kHM10DeviceType12[] PROGMEM ="ATC"; -const char * kHM10DeviceType[] PROGMEM = {kHM10DeviceType1,kHM10DeviceType2,kHM10DeviceType3,kHM10DeviceType4,kHM10DeviceType5,kHM10DeviceType6,kHM10DeviceType7,kHM10DeviceType8,kHM10DeviceType9,kHM10DeviceType10,kHM10DeviceType11}; +const char * kHM10DeviceType[] PROGMEM = {kHM10DeviceType1,kHM10DeviceType2,kHM10DeviceType3,kHM10DeviceType4,kHM10DeviceType5,kHM10DeviceType6,kHM10DeviceType7,kHM10DeviceType8,kHM10DeviceType9,kHM10DeviceType10,kHM10DeviceType11,kHM10DeviceType12}; /*********************************************************************************************\ * enumerations @@ -364,8 +377,8 @@ void HM10_Reset(void) { HM10_Launchtask(TASK_HM10_DISCONN,0,1); // disco void HM10_Discovery_Scan(void) { HM10_Launchtask(TASK_HM10_DISCONN,0,1); // disconnect - HM10_Launchtask(TASK_HM10_DISC,1,5); // discovery - HM10_Launchtask(TASK_HM10_STATUS_EVENT,2,2); // status + HM10_Launchtask(TASK_HM10_DISC,1,1); // discovery + HM10_Launchtask(TASK_HM10_STATUS_EVENT,2,1); // status } void HM10_Read_LYWSD03(void) { //and MHO-C401 @@ -533,6 +546,8 @@ void HM10SerialInit(void) { HM10.option.ignoreBogusBattery = 1; HM10.option.noSummary = 0; HM10.option.minimalSummary = 0; + + HM10.rxBuffer = new char[HM10_MAX_RX_BUF]; } return; } @@ -542,8 +557,6 @@ void HM10SerialInit(void) { \*********************************************************************************************/ void HM10parseMiBeacon(char * _buf, uint32_t _slot){ - // uint8_t _rssi; - // memcpy(&_rssi,_buf-1,1); float _tempFloat; mi_beacon_t _beacon; if (MIBLEsensors[_slot].type==MJ_HT_V1 || MIBLEsensors[_slot].type==CGG1){ @@ -648,76 +661,109 @@ void HM10parseMiBeacon(char * _buf, uint32_t _slot){ HM10.mode.shallTriggerTele = 1; } -void HM10ParseResponse(char *buf, uint16_t bufsize) { - if (!strncmp(buf,"OK",2)) { - DEBUG_SENSOR_LOG(PSTR("%s: got OK"),D_CMND_HM10); - } +void HM10parseATC(char * _buf, uint32_t _slot){ + ATCPacket_t *_packet = (ATCPacket_t*)_buf; + if(memcmp(_packet->MAC,MIBLEsensors.at(_slot).MAC,6)!=0) return; // data corruption + MIBLEsensors.at(_slot).temp = (float)(__builtin_bswap16(_packet->temp))/10.0f; + MIBLEsensors.at(_slot).hum = (float)_packet->hum; + MIBLEsensors.at(_slot).bat = _packet->batPer; + MIBLEsensors[_slot].shallSendMQTT = 1; +} + +char* HM10ParseResponse(char *buf, uint16_t bufsize) { if (!strncmp(buf,"HMSoft",6)) { //8 const char* _fw = "000"; memcpy((void *)_fw,(void *)(buf+8),3); HM10.firmware = atoi(_fw); DEBUG_SENSOR_LOG(PSTR("%s: Firmware: %d"),D_CMND_HM10, HM10.firmware); - return; + return buf; } - char * _pos = strstr(buf, "ISA:"); + char * _pos = nullptr; + uint32_t _idx = 0; + char _subStr[] = "SA:"; + while(_pos = (char*) memchr(buf+_idx, 'I', 60)){ //strstr() does miss too much + _idx=_pos-buf; + if(memcmp(&_pos+1,_subStr,3)){ + break; + } + } if(_pos) { uint8_t _newMacArray[6] = {0}; memcpy((void *)_newMacArray,(void *)(_pos+4),6); uint32_t _rssi = 255- (uint8_t)(_pos[11]); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("rssi: %u"),(255- (uint8_t)(_pos[11]))); HM10_ReverseMAC(_newMacArray); DEBUG_SENSOR_LOG(PSTR("%s: MAC-array: %02x%02x%02x%02x%02x%02x"),D_CMND_HM10,_newMacArray[0],_newMacArray[1],_newMacArray[2],_newMacArray[3],_newMacArray[4],_newMacArray[5]); uint16_t _type=0xffff; - for (uint32_t idx =10;idx64) return _pos+12; + else return nullptr; } else if (strstr(buf, "LOST")){ + HM10.current_task_delay = 0; HM10.mode.connected = false; } + else if (strstr(buf, "CONNF")){ + HM10.mode.connected = false; + HM10.current_task_delay = 0; + } else if (strstr(buf, "CONN")){ HM10.current_task_delay = 0; } else { DEBUG_SENSOR_LOG(PSTR("%s: empty response"),D_CMND_HM10); + return buf; } + return _pos; } void HM10readHT_LY(char *_buf){ - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: raw data: %x%x%x%x%x%x%x"),D_CMND_HM10,_buf[0],_buf[1],_buf[2],_buf[3],_buf[4],_buf[5],_buf[6]); + // AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t*)_buf,7); if(_buf[0]==0x4f && _buf[1]==0x4b) return; // "OK" if(_buf[0] != 0 && _buf[1] != 0){ - memcpy(&LYWSD0x_HT,(void *)_buf,sizeof(LYWSD0x_HT)); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: T * 100: %u, H: %u"),D_CMND_HM10,LYWSD0x_HT.temp,LYWSD0x_HT.hum); + LYWSD0x_HT_t *packet = (LYWSD0x_HT_t*)_buf; + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: T * 100: %u, H: %u"),D_CMND_HM10,packet->temp,packet->hum); uint32_t _slot = HM10.state.sensor; DEBUG_SENSOR_LOG(PSTR("MIBLE: Sensor slot: %u"), _slot); static float _tempFloat; - _tempFloat=(float)(LYWSD0x_HT.temp)/100.0f; + _tempFloat=(float)(packet->temp)/100.0f; if(_tempFloat<60){ MIBLEsensors[_slot].temp=_tempFloat; HM10.mode.awaiting = none; HM10.current_task_delay = 0; MIBLEsensors[_slot].showedUp=255; // this sensor is real } - _tempFloat=(float)LYWSD0x_HT.hum; + _tempFloat=(float)packet->hum; if(_tempFloat<100){ MIBLEsensors[_slot].hum = _tempFloat; DEBUG_SENSOR_LOG(PSTR("LYWSD0x: hum updated")); } MIBLEsensors[_slot].eventType.tempHum = 1; if (MIBLEsensors[_slot].type == LYWSD03MMC || MIBLEsensors[_slot].type == MHOC401){ - MIBLEsensors[_slot].bat = ((float)LYWSD0x_HT.volt-2100.0f)/12.0f; + MIBLEsensors[_slot].bat = ((float)packet->volt-2100.0f)/12.0f; MIBLEsensors[_slot].eventType.bat = 1; } MIBLEsensors[_slot].shallSendMQTT = 1; @@ -730,20 +776,20 @@ void HM10readHT_CGD1(char *_buf){ if(_buf[0]==0x4f && _buf[1]==0x4b) return; // "OK" if(_buf[0] == 0){ if(_buf[1]==0 && _buf[2]==0 && _buf[3]==0 && _buf[4]==0) return; - memcpy(&CGD1_HT,(void *)_buf,5); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: T * 100: %u, H * 100: %u"),D_CMND_HM10,CGD1_HT.temp,CGD1_HT.hum); + CGD1_HT_t *_packet = (CGD1_HT_t*)_buf; + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: T * 100: %u, H * 100: %u"),D_CMND_HM10,_packet->temp,_packet->hum); uint32_t _slot = HM10.state.sensor; DEBUG_SENSOR_LOG(PSTR("MIBLE: Sensor slot: %u"), _slot); static float _tempFloat; - _tempFloat=(float)(CGD1_HT.temp)/100.0f; + _tempFloat=(float)(_packet->temp)/100.0f; if(_tempFloat<60){ MIBLEsensors[_slot].temp=_tempFloat; HM10.mode.awaiting = none; HM10.current_task_delay = 0; MIBLEsensors[_slot].showedUp=255; // this sensor is real } - _tempFloat=(float)CGD1_HT.hum/100.0f; + _tempFloat=(float)_packet->hum/100.0f; if(_tempFloat<100){ MIBLEsensors[_slot].hum = _tempFloat; DEBUG_SENSOR_LOG(PSTR("CGD1: hum updated")); @@ -784,23 +830,23 @@ void HM10readHT_MJ_HT_V1(char *_buf){ } void HM10readTLMF(char *_buf){ - DEBUG_SENSOR_LOG(PSTR("%s: raw data: %x%x%x%x%x%x%x"),D_CMND_HM10,_buf[0],_buf[1],_buf[2],_buf[3],_buf[4],_buf[5],_buf[6]); + AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t*)_buf,10); if(_buf[0]==0x4f && _buf[1]==0x4b) return; // "OK" if(_buf[0] != 0 || _buf[1] != 0){ // this will lose 0.0 degree, but it is not possible to measure a successful reading - memcpy(&Flora_TLMF,(void *)_buf,10); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: T * 10: %u, L: %u, M: %u, F: %u"),D_CMND_HM10,Flora_TLMF.temp,Flora_TLMF.lux,Flora_TLMF.moist,Flora_TLMF.fert); + Flora_TLMF_t *_packet = (Flora_TLMF_t*)_buf; + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: T * 10: %u, L: %u, M: %u, F: %u"),D_CMND_HM10,_packet->temp,_packet->lux,_packet->moist,_packet->fert); uint32_t _slot = HM10.state.sensor; DEBUG_SENSOR_LOG(PSTR("MIBLE: Sensor slot: %u"), _slot); static float _tempFloat; - _tempFloat=(float)(Flora_TLMF.temp)/10.0f; + _tempFloat=(float)(_packet->temp)/10.0f; if(_tempFloat<60){ MIBLEsensors[_slot].temp=_tempFloat; MIBLEsensors[_slot].showedUp=255; // this sensor is real } - MIBLEsensors[_slot].lux = Flora_TLMF.lux; - MIBLEsensors[_slot].moisture = Flora_TLMF.moist; - MIBLEsensors[_slot].fertility = Flora_TLMF.fert; + MIBLEsensors[_slot].lux = _packet->lux; + MIBLEsensors[_slot].moisture = _packet->moist; + MIBLEsensors[_slot].fertility = _packet->fert; MIBLEsensors[_slot].eventType.temp = 1; MIBLEsensors[_slot].eventType.lux = 1; MIBLEsensors[_slot].eventType.moist = 1; @@ -842,12 +888,10 @@ bool HM10readBat(char *_buf){ bool HM10SerialHandleFeedback(){ // every 50 milliseconds bool success = false; uint32_t i = 0; - static char ret[HM10_MAX_RX_BUF] = {0}; while(HM10Serial->available()) { - // delay(0); if(iread(); + HM10.rxBuffer[i] = HM10Serial->read(); } i++; success = true; @@ -864,45 +908,48 @@ bool HM10SerialHandleFeedback(){ // every 50 milliseconds HM10triggerTele(); } return success; - } + } switch (HM10.mode.awaiting){ case bat: if (HM10.mode.connected) { - if (HM10readBat(ret)){ + if (HM10readBat(HM10.rxBuffer)){ HM10.mode.awaiting = none; HM10.current_task_delay = 0; } } break; case tempHumLY: - if (HM10.mode.connected) HM10readHT_LY(ret); + if (HM10.mode.connected) HM10readHT_LY(HM10.rxBuffer); break; case tempHumCGD1: - if (HM10.mode.connected) HM10readHT_CGD1(ret); + if (HM10.mode.connected) HM10readHT_CGD1(HM10.rxBuffer); break; case TLMF: - if (HM10.mode.connected) HM10readTLMF(ret); + if (HM10.mode.connected) HM10readTLMF(HM10.rxBuffer); break; case discScan: if(success) { - HM10ParseResponse(ret,i); + char *_src = HM10ParseResponse(HM10.rxBuffer,i); + if(_src){ + HM10ParseResponse(_src,i-(_src-HM10.rxBuffer)); // try a second parse + } } break; case tempHumMJ: - if (HM10.mode.connected) HM10readHT_MJ_HT_V1(ret); + if (HM10.mode.connected) HM10readHT_MJ_HT_V1(HM10.rxBuffer); break; case none: if(success) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: response: %s"),D_CMND_HM10, (char *)ret); + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: response: %s"),D_CMND_HM10, (char *)HM10.rxBuffer); // for(uint32_t j = 0; j Date: Wed, 23 Sep 2020 16:51:38 +0200 Subject: [PATCH 020/119] Fix Status13 shutter json and exception 9 --- tasmota/support_command.ino | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index db83627e3..9701826fd 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -584,11 +584,12 @@ void CmndStatus(void) ResponseAppend_P(PSTR("{\"" D_STATUS13_SHUTTER "%d\":{\"Relay1\":%d,\"Relay2\":%d,\"Open\":%d,\"Close\":%d," "\"50perc\":%d,\"Delay\":%d,\"Opt\":\"%s\"," "\"Calib\":\"%d:%d:%d:%d:%d\"," - "\"Mode\":\"%d\"}"), + "\"Mode\":\"%d\"}}"), i, Settings.shutter_startrelay[i], Settings.shutter_startrelay[i] +1, Settings.shutter_opentime[i], Settings.shutter_closetime[i], - Settings.shutter_set50percent[i], Settings.shutter_motordelay[i], GetBinary(&Settings.shutter_options[i], 4).c_str(), + Settings.shutter_set50percent[i], Settings.shutter_motordelay[i], GetBinary(&Settings.shutter_options + (i * sizeof(Settings.shutter_options)), 4).c_str(), Settings.shuttercoeff[0][i], Settings.shuttercoeff[1][i], Settings.shuttercoeff[2][i], Settings.shuttercoeff[3][i], Settings.shuttercoeff[4][i], - Settings.shutter_mode); } + Settings.shutter_mode); + } ResponseJsonEnd(); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "13")); } From bbd15fa174f0f772a1a1481bc89b319c2975f814 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 23 Sep 2020 17:13:10 +0200 Subject: [PATCH 021/119] Fix Status13 shutter exception 9 --- tasmota/support.ino | 14 +++++++++++++- tasmota/support_command.ino | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/tasmota/support.ino b/tasmota/support.ino index 0c6ab80d3..18c5469ae 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -117,7 +117,7 @@ String GetResetReason(void) /*********************************************************************************************\ * Miscellaneous \*********************************************************************************************/ - +/* String GetBinary(const void* ptr, size_t count) { uint32_t value = *(uint32_t*)ptr; value <<= (32 - count); @@ -129,6 +129,18 @@ String GetBinary(const void* ptr, size_t count) { } return result; } +*/ +String GetBinary8(uint8_t value, size_t count) { + if (count > 8) { count = 8; } + value <<= (8 - count); + String result; + result.reserve(count + 1); + for (uint32_t i = 0; i < count; i++) { + result += (value &0x80) ? '1' : '0'; + value <<= 1; + } + return result; +} // Get span until single character in string size_t strchrspn(const char *str1, int character) diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index 9701826fd..67fa2d07f 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -586,7 +586,7 @@ void CmndStatus(void) "\"Calib\":\"%d:%d:%d:%d:%d\"," "\"Mode\":\"%d\"}}"), i, Settings.shutter_startrelay[i], Settings.shutter_startrelay[i] +1, Settings.shutter_opentime[i], Settings.shutter_closetime[i], - Settings.shutter_set50percent[i], Settings.shutter_motordelay[i], GetBinary(&Settings.shutter_options + (i * sizeof(Settings.shutter_options)), 4).c_str(), + Settings.shutter_set50percent[i], Settings.shutter_motordelay[i], GetBinary8(Settings.shutter_options[i], 4).c_str(), Settings.shuttercoeff[0][i], Settings.shuttercoeff[1][i], Settings.shuttercoeff[2][i], Settings.shuttercoeff[3][i], Settings.shuttercoeff[4][i], Settings.shutter_mode); } From f3591b8419559c294fcc291ecd6f940d0137a022 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 23 Sep 2020 19:38:24 +0200 Subject: [PATCH 022/119] Fix memory corruption --- lib/jsmn-shadinger-1.0/README.md | 20 +++++++++++++++++--- lib/jsmn-shadinger-1.0/test/test-json.cpp | 2 +- tasmota/support.ino | 3 ++- tasmota/xdrv_01_webserver.ino | 5 ++--- tasmota/xdrv_05_irremote.ino | 4 ++-- tasmota/xdrv_05_irremote_full.ino | 4 ++-- tasmota/xdrv_09_timers.ino | 3 ++- tasmota/xdrv_10_rules.ino | 5 +++-- tasmota/xdrv_17_rcswitch.ino | 3 ++- tasmota/xdrv_20_hue.ino | 2 +- tasmota/xdrv_23_zigbee_2_devices.ino | 2 -- tasmota/xdrv_23_zigbee_3_hue.ino | 2 +- tasmota/xdrv_23_zigbee_A_impl.ino | 15 ++++++++------- tasmota/xdrv_39_thermostat.ino | 3 ++- tasmota/xdrv_40_telegram.ino | 3 ++- 15 files changed, 47 insertions(+), 29 deletions(-) diff --git a/lib/jsmn-shadinger-1.0/README.md b/lib/jsmn-shadinger-1.0/README.md index f98503eb1..bf5b59565 100644 --- a/lib/jsmn-shadinger-1.0/README.md +++ b/lib/jsmn-shadinger-1.0/README.md @@ -1,9 +1,15 @@ # JSMN lightweight JSON parser for Tasmota -Intro: +Intro: this library uses the JSMN in-place JSON parser. +See https://github.com/zserge/jsmn and https://zserge.com/jsmn/ + +It is proposed as a replacement for ArduinoJson. It has less features, does only parsing but does it in a very efficient way. ## Benefits +First, the memory impact is very low: 4 bytes per token and no need to add an extra buffer for values. +Second, the code is much smaller than ArduinoJson by 5-7KB. + ## How to use `{"Device":"0x1234","Power":true,"Temperature":25.5}` @@ -24,7 +30,8 @@ If what you need is to parse a JSON Object for values with default values: #include "JsonParser.h" char json_buffer[] = "{\"Device\":\"0x1234\",\"Power\":true,\"Temperature\":25.6}"; -JsonParserObject root = JsonParser(json_buffer).getRootObject(); +JsonParser parser(json_buffer); +JsonParserObject root = parser.getRootObject(); if (!root) { ResponseCmndChar_P(PSTR("Invalid JSON")); return; } uint16_t d = root.getUInt(PSTR("DEVICE"), 0xFFFF); // case insensitive @@ -37,7 +44,8 @@ Alternative pattern, if you want to test the existence of the attribute first: #include "JsonParser.h" char json_buffer[] = "{\"Device\":\"0x1234\",\"Power\":true,\"Temperature\":25.6}"; -JsonParserObject root = JsonParser(json_buffer).getRootObject(); +JsonParser parser(json_buffer); +JsonParserObject root = parser.getRootObject(); if (!root) { ResponseCmndChar_P(PSTR("Invalid JSON")); return; } JsonParserToken val = root[PSTR("DEVICE")]; @@ -54,6 +62,12 @@ if (val) { } ``` +WARNING: never use the following form: +``` +JsonParserObject root = JsonParser(json_buffer).getRootObject(); +``` +In this case, the `JsonParser` object is temporary and destroyed at the end of the expression. Setting the JsonParser to a local variable ensures that the lifetime of the object is extended to the end of the scope. + ## Types and conversion JSMN relies on the concept of JSON Tokens `JsonParserToken`. Tokens do not hold any data, but point to token boundaries in JSON string instead. Every jsmn token has a type, which indicates the type of corresponding JSON token. JSMN for Tasmota extends the type from JSMN to ease further parsing. diff --git a/lib/jsmn-shadinger-1.0/test/test-json.cpp b/lib/jsmn-shadinger-1.0/test/test-json.cpp index 9ede0a2bb..ccfbf45fd 100644 --- a/lib/jsmn-shadinger-1.0/test/test-json.cpp +++ b/lib/jsmn-shadinger-1.0/test/test-json.cpp @@ -15,7 +15,7 @@ int main(int argc, char* argv[]) { // char * json_str = test_complex; char * json_str = test_simple; - JsonParser parser(64); // size for 64 tokens + // JsonParser parser(64); // size for 64 tokens int r = parser.parse(json_str); diff --git a/tasmota/support.ino b/tasmota/support.ino index 18c5469ae..23b8780fa 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -1473,7 +1473,8 @@ bool JsonTemplate(char* dataBuf) if (strlen(dataBuf) < 9) { return false; } // Workaround exception if empty JSON like {} - Needs checks - JsonParserObject root = JsonParser((char*) dataBuf).getRootObject(); + JsonParser parser((char*) dataBuf); + JsonParserObject root = parser.getRootObject(); if (!root) { return false; } // All parameters are optional allowing for partial changes diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index 16daa8f6f..f1aff262b 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -27,8 +27,6 @@ #define XDRV_01 1 -#include "JsonParser.h" - #ifndef WIFI_SOFT_AP_CHANNEL #define WIFI_SOFT_AP_CHANNEL 1 // Soft Access Point Channel number between 1 and 11 as used by WifiManager web GUI #endif @@ -3366,7 +3364,8 @@ bool JsonWebColor(const char* dataBuf) } } #else - JsonParserObject root = JsonParser((char*) dataBuf).getRootObject(); + JsonParser parser((char*) dataBuf); + JsonParserObject root = parser.getRootObject(); JsonParserArray arr = root[PSTR(D_CMND_WEBCOLOR)].getArray(); if (arr) { // if arr is valid, i.e. json is valid, the key D_CMND_WEBCOLOR was found and the token is an arra uint32_t i = 0; diff --git a/tasmota/xdrv_05_irremote.ino b/tasmota/xdrv_05_irremote.ino index ebd1f06df..0c96e7d2a 100644 --- a/tasmota/xdrv_05_irremote.ino +++ b/tasmota/xdrv_05_irremote.ino @@ -25,7 +25,6 @@ #define XDRV_05 5 #include -#include "JsonParser.h" enum IrErrors { IE_NO_ERROR, IE_INVALID_RAWDATA, IE_INVALID_JSON, IE_SYNTAX_IRSEND }; @@ -204,7 +203,8 @@ uint32_t IrRemoteCmndIrSendJson(void) uint16_t repeat = root[UpperCase_P(parm_uc, PSTR(D_JSON_IR_REPEAT))]; #else RemoveSpace(XdrvMailbox.data); // TODO is this really needed? - JsonParserObject root = JsonParser((char*) XdrvMailbox.data).getRootObject(); + JsonParser parser(XdrvMailbox.data); + JsonParserObject root = parser.getRootObject(); if (!root) { return IE_INVALID_JSON; } // IRsend { "protocol": "SAMSUNG", "bits": 32, "data": 551502015 } diff --git a/tasmota/xdrv_05_irremote_full.ino b/tasmota/xdrv_05_irremote_full.ino index d72711fc8..275112bab 100644 --- a/tasmota/xdrv_05_irremote_full.ino +++ b/tasmota/xdrv_05_irremote_full.ino @@ -29,7 +29,6 @@ #include #include #include -#include "JsonParser.h" enum IrErrors { IE_RESPONSE_PROVIDED, IE_NO_ERROR, IE_INVALID_RAWDATA, IE_INVALID_JSON, IE_SYNTAX_IRSEND, IE_SYNTAX_IRHVAC, IE_UNSUPPORTED_HVAC, IE_UNSUPPORTED_PROTOCOL }; @@ -288,7 +287,8 @@ uint32_t IrRemoteCmndIrHvacJson(void) stdAc::state_t state, prev; //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("IRHVAC: Received %s"), XdrvMailbox.data); - JsonParserObject root = JsonParser((char*) XdrvMailbox.data).getRootObject(); + JsonParser parser(XdrvMailbox.data); + JsonParserObject root = parser.getRootObject(); if (!root) { return IE_INVALID_JSON; } // from: https://github.com/crankyoldgit/IRremoteESP8266/blob/master/examples/CommonAcControl/CommonAcControl.ino diff --git a/tasmota/xdrv_09_timers.ino b/tasmota/xdrv_09_timers.ino index 79efc1f1c..b9d6d57c7 100644 --- a/tasmota/xdrv_09_timers.ino +++ b/tasmota/xdrv_09_timers.ino @@ -425,7 +425,8 @@ void CmndTimer(void) #if defined(USE_RULES)==0 && defined(USE_SCRIPT)==0 if (devices_present) { #endif - JsonParserObject root = JsonParser(XdrvMailbox.data).getRootObject(); + JsonParser parser(XdrvMailbox.data); + JsonParserObject root = parser.getRootObject(); if (!root) { Response_P(PSTR("{\"" D_CMND_TIMER "%d\":\"" D_JSON_INVALID_JSON "\"}"), index); // JSON decode failed error = 1; diff --git a/tasmota/xdrv_10_rules.ino b/tasmota/xdrv_10_rules.ino index abc6fcece..7377585c5 100644 --- a/tasmota/xdrv_10_rules.ino +++ b/tasmota/xdrv_10_rules.ino @@ -532,7 +532,7 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule) #else String buf = event; // copy the string into a new buffer that will be modified - JsonParser parser = JsonParser((char*)buf.c_str()); + JsonParser parser((char*)buf.c_str()); JsonParserObject obj = parser.getRootObject(); if (!obj) { AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL: Event too long (%d)"), event.length()); @@ -1069,7 +1069,8 @@ bool RulesMqttData(void) if (event_item.Key.length() == 0) { //If did not specify Key value = sData; } else { //If specified Key, need to parse Key/Value from JSON data - JsonParserObject jsonData = JsonParser((char*)sData.c_str()).getRootObject(); + JsonParser parser((char*)sData.c_str()); + JsonParserObject jsonData = parser.getRootObject(); String key1 = event_item.Key; String key2; diff --git a/tasmota/xdrv_17_rcswitch.ino b/tasmota/xdrv_17_rcswitch.ino index af89e0a9f..af3dc1bba 100644 --- a/tasmota/xdrv_17_rcswitch.ino +++ b/tasmota/xdrv_17_rcswitch.ino @@ -104,7 +104,8 @@ void CmndRfSend(void) int repeat = 10; int pulse = 350; - JsonParserObject root = JsonParser(XdrvMailbox.data).getRootObject(); + JsonParser parser(XdrvMailbox.data); + JsonParserObject root = parser.getRootObject(); if (root) { // RFsend {"data":0x501014,"bits":24,"protocol":1,"repeat":10,"pulse":350} char parm_uc[10]; diff --git a/tasmota/xdrv_20_hue.ino b/tasmota/xdrv_20_hue.ino index 6bdc420af..7c2e29395 100644 --- a/tasmota/xdrv_20_hue.ino +++ b/tasmota/xdrv_20_hue.ino @@ -569,7 +569,7 @@ void HueLightsCommand(uint8_t device, uint32_t device_id, String &response) { if (Webserver->args()) { response = "["; - JsonParser parser = JsonParser((char*) Webserver->arg((Webserver->args())-1).c_str()); + JsonParser parser((char*) Webserver->arg((Webserver->args())-1).c_str()); JsonParserObject root = parser.getRootObject(); JsonParserToken hue_on = root[PSTR("on")]; diff --git a/tasmota/xdrv_23_zigbee_2_devices.ino b/tasmota/xdrv_23_zigbee_2_devices.ino index e3182faad..e68342da6 100644 --- a/tasmota/xdrv_23_zigbee_2_devices.ino +++ b/tasmota/xdrv_23_zigbee_2_devices.ino @@ -19,8 +19,6 @@ #ifdef USE_ZIGBEE -#include "JsonParser.h" - #ifndef ZIGBEE_SAVE_DELAY_SECONDS #define ZIGBEE_SAVE_DELAY_SECONDS 2 // wait for 2s before saving Zigbee info #endif diff --git a/tasmota/xdrv_23_zigbee_3_hue.ino b/tasmota/xdrv_23_zigbee_3_hue.ino index 4b95a58be..1f4b18e19 100644 --- a/tasmota/xdrv_23_zigbee_3_hue.ino +++ b/tasmota/xdrv_23_zigbee_3_hue.ino @@ -218,7 +218,7 @@ void ZigbeeHandleHue(uint16_t shortaddr, uint32_t device_id, String &response) { if (Webserver->args()) { response = "["; - JsonParser parser = JsonParser((char*) Webserver->arg((Webserver->args())-1).c_str()); + JsonParser parser((char*) Webserver->arg((Webserver->args())-1).c_str()); JsonParserObject root = parser.getRootObject(); JsonParserToken hue_on = root[PSTR("on")]; diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index b35296370..09a96dae1 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -21,8 +21,6 @@ #define XDRV_23 23 -#include "JsonParser.h" - const char kZbCommands[] PROGMEM = D_PRFX_ZB "|" // prefix #ifdef USE_ZIGBEE_ZNP D_CMND_ZIGBEEZNPSEND "|" D_CMND_ZIGBEEZNPRECEIVE "|" @@ -626,7 +624,8 @@ void CmndZbSend(void) { // ZbSend { "device":"0x1234", "endpoint":"0x03", "send":{"Color":"1,2"} } // ZbSend { "device":"0x1234", "endpoint":"0x03", "send":{"Color":"0x1122,0xFFEE"} } if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } - JsonParserObject root = JsonParser(XdrvMailbox.data).getRootObject(); + JsonParser parser(XdrvMailbox.data); + JsonParserObject root = parser.getRootObject(); if (!root) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } // params @@ -748,7 +747,8 @@ void ZbBindUnbind(bool unbind) { // false = bind, true = unbind // local endpoint is always 1, IEEE addresses are calculated if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } - JsonParserObject root = JsonParser(XdrvMailbox.data).getRootObject(); + JsonParser parser(XdrvMailbox.data); + JsonParserObject root = parser.getRootObject(); if (!root) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } // params @@ -1064,8 +1064,8 @@ void CmndZbSave(void) { // ZbRestore {"Device":"0x5ADF","Name":"Petite_Lampe","IEEEAddr":"0x90FD9FFFFE03B051","ModelId":"TRADFRI bulb E27 WS opal 980lm","Manufacturer":"IKEA of Sweden","Endpoints":["0x01","0xF2"]} void CmndZbRestore(void) { if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } - JsonParser p(XdrvMailbox.data); - JsonParserToken root = p.getRoot(); + JsonParser parser(XdrvMailbox.data); + JsonParserToken root = parser.getRoot(); if (!p || !(root.isObject() || root.isArray())) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } @@ -1219,7 +1219,8 @@ void CmndZbConfig(void) { // if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } RemoveAllSpaces(XdrvMailbox.data); if (strlen(XdrvMailbox.data) > 0) { - JsonParserObject root = JsonParser(XdrvMailbox.data).getRootObject(); + JsonParser parser(XdrvMailbox.data); + JsonParserObject root = parser.getRootObject(); if (!root) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } // Channel diff --git a/tasmota/xdrv_39_thermostat.ino b/tasmota/xdrv_39_thermostat.ino index 9c70fcb2d..4a29ad36b 100644 --- a/tasmota/xdrv_39_thermostat.ino +++ b/tasmota/xdrv_39_thermostat.ino @@ -1328,7 +1328,8 @@ void ThermostatDebug(uint8_t ctr_output) #endif // DEBUG_THERMOSTAT void ThermostatGetLocalSensor(uint8_t ctr_output) { - JsonParserObject root = JsonParser(mqtt_data).getRootObject(); + JsonParser parser(mqtt_data); + JsonParserObject root = parser.getRootObject(); if (root) { JsonParserToken value_token = root[PSTR(THERMOSTAT_SENSOR_NAME)].getObject()[PSTR("Temperature")]; if (value_token.isNum()) { diff --git a/tasmota/xdrv_40_telegram.ino b/tasmota/xdrv_40_telegram.ino index e1716f56d..9834d3b30 100644 --- a/tasmota/xdrv_40_telegram.ino +++ b/tasmota/xdrv_40_telegram.ino @@ -226,7 +226,8 @@ void TelegramAnalizeMessage(void) { Telegram.message[i][5] = ""; String buf = Telegram.message[i][0]; // we need to keep a copy of the buffer - JsonParserObject root = JsonParser((char*)buf.c_str()).getRootObject(); + JsonParser parser((char*)buf.c_str()); + JsonParserObject root = parser.getRootObject(); if (root) { Telegram.message[i][0] = root["update_id"].getStr(); Telegram.message[i][1] = root["message"].getObject()["from"].getObject()["id"].getStr(); From bb3960711f17137eeecff51d83ea197de8a9d550 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 23 Sep 2020 19:52:34 +0200 Subject: [PATCH 023/119] Fix compilation for ZBBridge --- tasmota/xdrv_23_zigbee_A_impl.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index 09a96dae1..90cc4e28c 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -1067,7 +1067,7 @@ void CmndZbRestore(void) { JsonParser parser(XdrvMailbox.data); JsonParserToken root = parser.getRoot(); - if (!p || !(root.isObject() || root.isArray())) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } + if (!parser || !(root.isObject() || root.isArray())) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } // Check is root contains `ZbStatus` key, if so change the root JsonParserToken zbstatus = root.getObject().findStartsWith(PSTR("ZbStatus")); From 019e402fe77b05473001ee23de045aab83fbe4ca Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 24 Sep 2020 08:51:43 +0200 Subject: [PATCH 024/119] Move IR from ArduinoJson to JSMN --- lib/jsmn-shadinger-1.0/src/JsonGenerator.cpp | 185 ++++++++++++++++++ lib/jsmn-shadinger-1.0/src/JsonGenerator.h | 72 +++++++ lib/jsmn-shadinger-1.0/src/JsonParser.cpp | 5 +- lib/jsmn-shadinger-1.0/src/JsonParser.h | 2 + lib/jsmn-shadinger-1.0/src/JsonParser.hpp.gch | Bin 2299028 -> 0 bytes tasmota/support.ino | 44 ----- tasmota/support_json.ino | 117 ----------- tasmota/tasmota.ino | 2 + tasmota/xdrv_01_webserver.ino | 21 -- tasmota/xdrv_05_irremote.ino | 26 +-- tasmota/xdrv_05_irremote_full.ino | 116 +++++------ tasmota/xdrv_09_timers.ino | 85 -------- tasmota/xdrv_10_rules.ino | 36 ---- 13 files changed, 319 insertions(+), 392 deletions(-) create mode 100644 lib/jsmn-shadinger-1.0/src/JsonGenerator.cpp create mode 100644 lib/jsmn-shadinger-1.0/src/JsonGenerator.h delete mode 100644 lib/jsmn-shadinger-1.0/src/JsonParser.hpp.gch delete mode 100644 tasmota/support_json.ino diff --git a/lib/jsmn-shadinger-1.0/src/JsonGenerator.cpp b/lib/jsmn-shadinger-1.0/src/JsonGenerator.cpp new file mode 100644 index 000000000..a9554a55a --- /dev/null +++ b/lib/jsmn-shadinger-1.0/src/JsonGenerator.cpp @@ -0,0 +1,185 @@ +/* + JsonGenerator.cpp - lightweight JSON parser + + Copyright (C) 2020 Stephan Hadinger + + 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 . +*/ + +#include "JsonGenerator.h" + +/*********************************************************************************************\ + * JSON Generator for Arrays +\*********************************************************************************************/ +void JsonGeneratorArray::pre(void) { + // remove trailing ']' + val.remove(val.length()-1); + if (val.length() > 1) { // if not empty, prefix with comma + val += ','; + } +} + +// void JsonGeneratorArray::post(void) { +// val += ']'; +// } + +// Add signed int (32 bits) +void JsonGeneratorArray::add(int32_t uval32) { + pre(); + val += uval32; + post(); +} + +// Add unsigned int (32 bits) +void JsonGeneratorArray::add(uint32_t uval32) { + pre(); + val += uval32; + post(); +} + +// Add a raw string, that will not be escaped. +// Can be used to add a sub-array, sub-object or 'null', 'true', 'false' values +void JsonGeneratorArray::addStrRaw(const char * sval) { + pre(); + val += sval; + post(); +} + +// Add a JSON String (will be escaped) +void JsonGeneratorArray::addStr(const char * sval) { + pre(); + val += '"'; + val += EscapeJSONString(sval).c_str(); + val += '"'; + post(); +} + +/*********************************************************************************************\ + * JSON Generator for Objects +\*********************************************************************************************/ +void JsonGeneratorObject::pre(const char * key) { + // remove trailing '}' + val.remove(val.length()-1); + if (val.length() > 1) { // if not empty, prefix with comma + val += ','; + } + val += '"'; + val += EscapeJSONString(key); + val += '"'; + val += ':'; +} + +// void JsonGeneratorObject::post(void) { +// val += '}'; +// } + +// Add signed int (32 bits) +void JsonGeneratorObject::add(const char* key, int32_t uval32) { + pre(key); + val += uval32; + post(); +} + +// Add unsigned int (32 bits) +void JsonGeneratorObject::add(const char* key, uint32_t uval32) { + pre(key); + val += uval32; + post(); +} + +void JsonGeneratorObject::add(const char* key, const String & str) { + pre(key); + val += '"'; + val += EscapeJSONString(str.c_str()).c_str(); + val += '"'; + post(); +} + +// Add a raw string, that will not be escaped. +// Can be used to add a sub-array, sub-object or 'null', 'true', 'false' values +void JsonGeneratorObject::addStrRaw(const char* key, const char * sval) { + pre(key); + val += sval; + post(); +} + +// Add a JSON String (will be escaped) +void JsonGeneratorObject::addStr(const char* key, const char * sval) { + pre(key); + val += '"'; + val += EscapeJSONString(sval).c_str(); + val += '"'; + post(); +} + +/*********************************************************************************************\ + * JSON Generator for Arrays +\*********************************************************************************************/ +// does the character needs to be escaped, and if so with which character +static char EscapeJSONChar(char c) { + if ((c == '\"') || (c == '\\')) { + return c; + } + if (c == '\n') { return 'n'; } + if (c == '\t') { return 't'; } + if (c == '\r') { return 'r'; } + if (c == '\f') { return 'f'; } + if (c == '\b') { return 'b'; } + return 0; +} + +String EscapeJSONString(const char *str) { + // As this function is used in ResponseCmndChar() and ResponseCmndIdxChar() + // it needs to be PROGMEM safe! + String r(""); + if (nullptr == str) { return r; } + + bool needs_escape = false; + size_t len_out = 1; + const char* c = str; + char ch = '.'; + while (ch != '\0') { + ch = pgm_read_byte(c++); + if (EscapeJSONChar(ch)) { + len_out++; + needs_escape = true; + } + len_out++; + } + + if (needs_escape) { + // we need to escape some chars + // allocate target buffer + r.reserve(len_out); + c = str; + char *d = r.begin(); + char ch = '.'; + while (ch != '\0') { + ch = pgm_read_byte(c++); + char c2 = EscapeJSONChar(ch); + if (c2) { + *d++ = '\\'; + *d++ = c2; + } else { + *d++ = ch; + } + } + *d = 0; // add NULL terminator + r = (char*) r.begin(); // assign the buffer to the string + } else { + r = FPSTR(str); + } + + return r; +} \ No newline at end of file diff --git a/lib/jsmn-shadinger-1.0/src/JsonGenerator.h b/lib/jsmn-shadinger-1.0/src/JsonGenerator.h new file mode 100644 index 000000000..8670aabbd --- /dev/null +++ b/lib/jsmn-shadinger-1.0/src/JsonGenerator.h @@ -0,0 +1,72 @@ +/* + JsonGenerator.h - lightweight JSON generator + + Copyright (C) 2020 Stephan Hadinger + + 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 . +*/ + +#ifndef __JSON_GENERATOR__ +#define __JSON_GENERATOR__ + +#include +#include +#include + +extern String EscapeJSONString(const char *str); + +/*********************************************************************************************\ + * JSON Generator for Arrays +\*********************************************************************************************/ +class JsonGeneratorArray { +public: + + JsonGeneratorArray(): val("[]") {} // start with empty array + + void add(uint32_t uval32); + void add(int32_t uval32); + void addStrRaw(const char * sval); + void addStr(const char * sval); + + inline String &toString(void) { return val; } + +protected: + void pre(void); + void post(void) { val += ']'; } + String val; +}; + +/*********************************************************************************************\ + * JSON Generator for Objects +\*********************************************************************************************/ +class JsonGeneratorObject { +public: + + JsonGeneratorObject(): val("{}") {} // start with empty object + + void add(const char* key, uint32_t uval32); + void add(const char* key, int32_t uval32); + void add(const char* key, const String & str); + void addStrRaw(const char* key, const char * sval); + void addStr(const char* key, const char * sval); + + inline String &toString(void) { return val; } + +protected: + void pre(const char * key); + void post(void) { val += '}'; } + String val; +}; + +#endif // __JSON_PARSER__ \ No newline at end of file diff --git a/lib/jsmn-shadinger-1.0/src/JsonParser.cpp b/lib/jsmn-shadinger-1.0/src/JsonParser.cpp index ab2a905f4..04ff03fe8 100644 --- a/lib/jsmn-shadinger-1.0/src/JsonParser.cpp +++ b/lib/jsmn-shadinger-1.0/src/JsonParser.cpp @@ -1,5 +1,5 @@ /* - JsonParser.h - lightweight JSON parser + JsonParser.cpp - lightweight JSON parser Copyright (C) 2020 Stephan Hadinger @@ -366,6 +366,9 @@ float JsonParserObject::getFloat(const char * needle, float val) const { const char * JsonParserObject::getStr(const char * needle, const char * val) const { return (*this)[needle].getStr(val); } +const char * JsonParserObject::getStr(const char * needle) const { + return getStr(needle, ""); +} void JsonParser::parse(char * json_in) { k_current_json_buffer = ""; diff --git a/lib/jsmn-shadinger-1.0/src/JsonParser.h b/lib/jsmn-shadinger-1.0/src/JsonParser.h index 42886d628..a59227ec4 100644 --- a/lib/jsmn-shadinger-1.0/src/JsonParser.h +++ b/lib/jsmn-shadinger-1.0/src/JsonParser.h @@ -67,6 +67,7 @@ public: JsonParserToken(const jsmntok_t * token) : t(token) { if (nullptr == t) { t = &token_bad; } } + JsonParserToken() : t(&token_bad) { } // no explicit destructor (not needed) inline bool isValid(void) const { return t->type != JSMN_INVALID; } @@ -160,6 +161,7 @@ public: uint64_t getULong(const char *, uint64_t) const; float getFloat(const char *, float) const; const char * getStr(const char *, const char *) const; + const char * getStr(const char *) const; // get first element (key) JsonParserKey getFirstElement(void) const; diff --git a/lib/jsmn-shadinger-1.0/src/JsonParser.hpp.gch b/lib/jsmn-shadinger-1.0/src/JsonParser.hpp.gch deleted file mode 100644 index e3d9ed686152f6e8b238238039f13a6c1089fec5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2299028 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 }(2-X> zFPBalCoH1=CSH_2bF#sUL)(ih6jqBne$Gqr%0^!BbzkMK%Xy9^l|jBCiukRsG7ijo zt3Gt!UE$*>{fFmeJ#>GpIA+{lXzyy#!e ztMq&wR1l+xx2VV{x%^gLSLv=8>!@nb@`7?1Cmy>QynL}-5;ql>MRu-pbr_OnT0r?{m0;@p+-au9c34r|WK2rVyjcwTaIp(8asFW=@H zCrI8j=SA(~I}yCNwGG^@u!`^YIWKdLHu9nbFC|y=9{i70ev>gf`n`I`3=hQ= z$DHL_UW_pjBOZGcycmCpm&68?iwDZZH_hn7mZTYB|1e%2bmPm#9p&QNoEIN0FTp%7 zFAAU|wLCB53yl-DQGZjp$VMGp1YUgFUOB0-TGI1#UW!jQ@KMx9U&9wJ<)1QcL7i*)M$1j!1EDOkA8;woA~e<#NH(dnJAv3MwzrBVoXG- zyR)o5>`XF=I;m2QqF0;>f3iUW^|Y!Wb-u!CG_tj=&R4`^LeAXTfBn`Qc>*pHUx`?| z$kb0FCUz}J+0LXHAD)$6IbY{0T?0=aY-50*#L!6q+4m~=1zcE3*+EsEYxp;91KDhd zG%>v@h;uX%s%oE=xh=(Me@M6!9Us!^t(!ZOdIyJjVlEu>5kenQ{YYWO!_R-j!|(Jx zk+h$)M@B=aa#HGCl|CEjvt_}JJUsUqyq=#HZN59H>A7#LR_<}U+^08S+}Oa&{idXC zLT{bSW^z}LihK*XE7}gOQCN)`@VVSI^^J1pP=Cf{=Xu_%3R2Wy+^Cb;&CIj%>UTbh zIgSo@Aa{)C*F)};#5wh-KfK)KUs2TDummP|`Dk{f!oPBeASSCS$hS&i^~lX%zsnSO zfa|!M|DbQOsoXa=$$fB3(k~(DX?983(ds(a?tPrWc~%LN`&J~}BzMb%f6INQMq$OnAFScw>rLv;)(>6m6lq2dWA_5Js;G*N zJ;JW-PRhtDVPg+HI*u9-nbX;@32=dp_-f1GAYTT{+O@@3J0N!~qC7Een~+TXyuouw z&glFxJ_>T8ZE=Ibs@~)CG6?hu)jm@xO-0HN*?Gqrs)Bx$gvLMA&77_9thDg=QT*tb z_#S1T>Pyzg3U!E?Xz@t@*=(lYUJplv3lcX9QVt}E4z8?seQJl<(Z!BLIlzFMA}$>e zY9%YYleYo0%?^RVU&%c^RQI6WMq27C8t6M>ENFWZ)oBDj)ww1j4aM;A!p1FF0XebAwZn-t)Lc3N=c781f+Wv<{~q1 z=;jrd)V5NRY@QgT70Oaaq8e>L{KP8PP%GtMT98KpvfPuroX+I|%QECIGt>nl!jXfr z{-IX#9Gx|PJTJ>xTJL(=Ts57p!hi7g*N=oiV=Q{xkn#;_H&re4y3hib8OQ|k;nhK% zh7rkPCK_e0TTC?a#C1aY;LFYUwX}?Qb)mbVQ@m;8Dv#_`@9J`pHm-6_*jMy0XDl3D z?)9eR&gS=Zbl%+C?@h^=Sn7vComEaIb6T#>PcX*kip&jUJdxhRUA28rch$?|%f7}+ z#HkaSxSl=T=M3GLz2HsBlHKp?cFkVx?mTqkNZ=ScTp(0!6ui9s#AMVMOyAA=mUzdS zCX8z1Mb4hk&}2H>a*qvvC)Ly0ym+^V2_ql9DPi;C=islPei#{k3k8W^?V7jR9kAq5 z0yaV9jV$rb2@Usm)`P!r-S5s5ubaTs8)+9LWE<9&R9$#qm+aJ&ekQ}HkFJ5Tm!AFb zjU(3%7jT&lhPr)qSt39FYHCdvb+|q~-RYuE!raPRb0;aZ3z?<74i=vENGL4NW;*zN zsz*Yb3ix3-*dn29Oz`s$3X;=S`N_PUvgf=?Hg5+6A%`>9cbr#w?D8Zh@UkzI20 zZPnw zrw?b&#&U)ty)B1>@#%8Lo3~Y8c{V7Z0K@jSdS5lyi~31KsJ}92o4&8A`>sK;>XwJK!(W-*(0pOnO7*0T#u6KR$i}Vx zUFH1wpERV1krQm{)lVcm6HN4|hBgoNIVN{&3GDVG{MjaIk6! zQZpQ&KNqCz#QY{fZatN$|J(e^QFA9N-XMi7HQ6OI-&ZY~Jy|PAW!|YT2=dIS%t1-> zD=X(sW`dmfkO}hQ15@i;r#=;A)cdMK0a`&Oysvsb`=cNYdO?sTZ@wtVv4u^7cUDwjdS+c{GI=;1nH2PsV`nw**asgVtkQD!o%9^k~ip6YUUu*g_XxLc|lqiGC@|WO|AV>KNV!hhN`c!w1Vv0P&N0)M?soX zK~8@6ML}MvZW5$V_GHD~DpTt>NZY-ksxG@h@uAAYIybdZknSO05M<)5$%+GZko4P1beZ4{Sbxt8@_Wc)nae|thYaksJRkwDfM&iKo-`s#d1C~XWoUG%JOv55L%_{Q*?b=&lA=_@~P3?zsX6e~-jSg{@lDNu9(zY_qJ9_|>n^8WN$QzP4))~LK(_xdNDe@fHD z>;>OF_GbV2Q)$&7o$9ab=|!6wDDPI99_qL*l$ZW&XN~htpii_L(=>FS>D21X^|qmv z*vl#QchHqtvK_g}%Ug$Do9d0{BH@-fp{+wF`BOg(s#1udY}Di2@2UkpV~L1;l?g=N z2;08N)ZgWoy8z9ZJkQKJzb13gve3#Mt6PVD@b^w=FuOHqVQ3}PBCvZ88M)-B^7mJC zif&2lA|`fs=)uyET}aaqFT1wp?9~=k4nl+htul>ATT_#%zwT4C=2@*nr!V2rUde79 z`kMKX9Dpf+cAD*=FQOg$t_khCA~WlT+Dv_&)s=O(T8HK?^-kz(b?fpwhSuCIJ(0Ev zXui60=tbynr}0A9y|m5AN%yC1j=<={lklI;H?}!azRfAFh;*Or#(&j zY|iT@9*jxpTu-|9_^i#@_@SxIIa{}J(}E9AGIpNV+^vdqw;8Z^9Yf= z_FCduaLR_H^vVtL9we~CtUbI0$&*&m#Xm3e-U}dgK6ZehFCu&hQcyIQ^&AeJ9 z4cVJLkNRO`_yt2PiaTxil3GaXRgG#v&V@hqs!(b2`@6W;4B0y}a&xK4UfX(=s|!_& zjBf4U(E+qj3hr`N1}f;@i0%~f%&R4UJf}HiomIv>WO+vhS@l|_iFE%I^0c9Qv&*!Q zYvF(Y5i&<1ueJLkWN!Q8Cdl>?Ps2Ap)|5_naUU>j@5uIBO1E6Htk@N^RMQ9Q6YZn3yKk_GxfiJLakfmr9v8Ll z7;?pt(5=wUcDH7m4XtKdp?`tjmil3&sDY`(rQM{X(D4zv4ib(h;-7ltHx?URm7Z4@DaJ0gOgLe8>wx{x>O)y=Le+~b6Ocx_NvmNrh7zBE<+T|9ZHfanxYPZU zc9$#ZUX1DeqK)T8KgFD!d72#4SL|hoQAJ(qqgFs1*j0b*MVI=+A=D289jrDb2fm#j zTPji>B6>nR!c!t|bdI}48@r?&euNo;Qnib_D=v*UJvFK5QeVAtgZulbdyQM*65|im zSdMI+A;0!iuWoan4U9J>F_;wFw&7;y2A#{LN8O@_z>K47pZqp}dTSs)Q zPuq(b*6;sqgZtdMdyOqO zQ?w4jd)KhBjXCiptW!b1;w@{KJJf^?4f}0=N}rQ2{$gqUtLt>{W1x-%a|$C*KNb9R1Fbc(4>qKjMJ&;6NSv~fu6(>rAlUCIXc=L_~4&x>UR ztwiM*>M%8Wr1v-h_Ye~yUHM|JTCAY+%+e?SuwGfx>+<^Stj1oM<9p@7=_aA&YQCS- zWSWGos{Gh1Uohmx*t{QJEl_>lD_ixs+}JCRJ#T4!4{6tARep8VBy{>~?}RwFTbEyD z(O%iy{g&zg;9$G9gmB_tpVG}=vd4fd8(QrjJ#uYx$kL;pOBiJN2Oje4UY7^y-}nS_ z4Q;UT-+Hwhi_<|E{b6!O54UxeJcZxdwIZAjC->97X&?NNr8}EeF0k_t7 zx$!yVRm~s=4m~^fQ^@L(JY?ms&zO|&AzANFAz%3iFzb29!DS|)h0G7JpjW#@A#eIJ zmNUThCCr4V!DUJ4# zypeIYtLnENSP=0>vTKGz;*6N+HLiLu-I9#^XP1TJ7LFc(C)(3h?}a%_fr#CFb(MTo zD}5fkZhZf#HsE?oTt)D@XUva;_3&jMLoy-#WJ!%cIgYRngGz=sLZ5`Z^<&4Gj}HqH z>n#&Ma16Z6T`#Gzsag>#3!RD~WX+1ue8)MLl~$s>-FbN0X~t!cbyAMzGSB7L-IH=! zUTfk~xk6CdBkmozJo_1!@()$@Cmug6Ns^?_a8S;WY+B={_lHN)rWe^|GjNM=b=hU2 zO`dLgugzHs&AFU2e8svqV|Xsj$E;X)X)N`_fXf_1Zo-;Y&uav#&$&$4pEtXqu0wRV zykq#9j^QEVmyVJlA)(%zr&{BdK2g9EB7Wg`^fE_NAaa$UCwa!^eh1ZE`?^oY>y|j! zH|}D`tgla8rhXU)9A!I|q_zC*>m&)6B*Z*F4DC&rk!YOGx&JZu&YWI4wdOh+^HRri z?jggHHubtwCL(FWl8oK;G~XwUbRg2NNspmPo3d}0i889|6AvpdRM*EjoO5?V;8rxS z@~E+)T^JqsU{B2~UD^ESHLd+aLhr^-wcge43jW{xmZ$I2OY>VEZMdIdbt}2umG|3h zNKWm92=5Qu_K?68U(3jAM-{FIE*u<)*=SnpP$PAUKU|A(*Q>|>mGe%0=o<+9-mVq6 zN#EDVXYXs|SENPUPEBHUE3zgnV){AiXU1GPp5%`I}N%-Gm5L zhupFOBupVDZmR8K%lH#t`9>&LpK9Ngtk`!b$D+4<>ltEmjo!0`l#xk(6NW}FgWnj9SmO<~`0at#W{jV}u zqvgSX@!>FVc3(y(;QvrQ9mrk%+;T>{oXZoEefF19V-^LpDjM@x>g6)C@Y-0}7B|lOQ5lo zd}Wcp_=OWD!q`R>p)BT~y8&TXruU^O6LU3gD)9o{&-}sxy~*CQ?O|b{>Zrqgua~&% z>@Y%C%FVUOJ@ruujjU(AFIw%=%n_E9!+ux6Y8+mQv67s1P6Ohe4!#L*@Qf8^lnGu?f^?UZ$DA$=HY2a0&e0w)Q?H**2H_~rb+aRZq@8YATj_TGq zR(#PtXb1Q?*0DuyeZ$jr&-;VT) z&>i;)+Tf8uIF?7-eO!Fh_v4zQ#iw`r200036F)(PS02qXBa3lY)7j6F|i*2k0EUKq55D4AFsnv-EzTNhX z&gFID!NhL+mQg=7(1|xfpNYx-@lj;#XF4JC8yAbU$qDlW61h|4RdRGBfQ$*Ua2n?~ z>-Qk1`nmB@t0r~p94DUcB*87Zsb0Sv8=kw07LD`kiq`{_^xerztQ?a6c;UpqJGo7) z6KE`ybrDTKAc9Rh?6pZ9**|~&kwq|z&y5=wJ8Htc05)~m#KMOufSt#)@Wa$@`+lYV zCKluqHH*N4?`JG<>yTL8_UksXn5*)xBIUwyv6YkW1zemEwBuaf)za!9C)d#UsF_Z2 zS7r0Z#kPQwp?U0a_^jCQPkTB^P{rwleXn=$ud`9}|FnPl@Q*AVPE<>TvMquIf7+X* z58z*uV(;8;h0N)AS1a?IivY5K2VB3n+rBjF=Z)SJQxa%8ViBstF4i{UM&mtVaAh)D zlTBAUqHP4={o`UC=iUnlo)omBvfygzfaOjh+3`_xXxmsCJD!z)@SpZxg{=G|a3X}y zX14H^`f|j;(3CB$p}Rx2R*V?<5A*Z+ztm0qTYaRzg`m`qLtqfm3h_o@b;SN@QFq1D zZ+*6S%C`tq<$q))r@U~|965WvWyQ>;8T~CDsYeWSwosjY;e=RTw%jP|_OyM{!ND5e z5*-njEhHcQ$hx9>;pCcpRy^3S5B`mh*o(*u-H1Q4qTWWTCh~8_@75*d<6?gay%%sd zFvueE&A8ZU8TSGT0)uwgv{5QI8Pdr%yv_ZC6Up&((HF>j9h=~%XF&Rxa(Ek`HHk8^ z{!dnC$jfoDdk`6QrVZtV>OdURfu`~(59zk=bs=9KlN8b_2{QUH0PKfoqe=k5eNrL~e%YrP3Pp?=%zgY!?bnbjB zp(WwalenKfD?WI{KK$=Lvt)bEo{hSB#6AOl)}*^weMcW-w7TRy8+Lng(%d|t$K+viIC zyrFyECTZS6J||37!9f=Nruuz$EX7Pkkj2?cui{$?pz(_;L; zM^@x+*7*ss7PYO@PfBQiNv0TbLzC=9d4FalYF;?SOi8le_vFv4qwpJ@TxX~pp=W#U z>~%>CxoVIuUBJQt|6f}ebhR*0hNM@$aFUV4V+1eH((-`-&HT|JVhXrC^=wpB60h`< z79`m4tR_WF@}E{X+18~DBL)L3G{qH82kTOz=6|p^(J|^MC2kff+-}_wFH~X>J(&uN zqwE+gtz2%AAbyGe&F}p12DC~g5GuE<`2i6h3!0y4unT3t+6*=(HJE%fYO0wX>)w+6 zk4BXYnOoY3|#O$5lCEeAri!zD=Ld@;< z_0h}f{&Tw16O69OoaXNhD_j0^6EU!ABmH)27$)zD>*rD)%wqZsYwXyW+j#~DN*&*Bv&}um#0K+dW)vwsoj1kjoMV!u-u}s0aaj? z6H$riKcWid>WDBVmBfbgy!w}~j`j3Z^IgU;L3bw2$kj)qRypv}bjds#HNuhliIm1H zG{ivqO}Y~uNPjw5=%DMb*Eg$jfCxu?wpLgy*YVfum>xU#^3kZ*j&}PL;w%HxbkQ_@Buujq z1X_LChOe;>@74Rj$>^OZz3zr-;%i~O_8nJc-Tl#b;It0gN99KZ6#uDWWD~TSYcSN87ZnP!ujgajlaHnG%9`ZT1sOQjhVtie$X4q zNKdP>=s@b2uK%S?>HI*-2g5#sU3Q(fXE@cDpysnjq6{b3GU|t_!9?~Vm)5x$Wf^db z1fM=+2{>?iF7%Nm(K7%@+dj9hFc>}-n>N$7(>)vNtJPpAr zlKj$<>v6}v?mg$_H8I-1uY1dgPJ;l$Ej=Z&7X(b0g|5@fQZA5Yq0?RCkz3Gr-<0Jy z*i+QEg?;zMP(N>4E+y(IzKimrh?`lC;HKY>exQG@HgI2H#nn zr-|t1Wv6|$$F3g^z|lbxU-#`6HJg~gDglpni6_7(H7DWrhAW2K7w+G1o#39*x~H}G zli`|lK{diXYJ^0-&ak&G0l5Y>mIhB;)o>6!EfLYQXm|k`eWY_R3sa3SG)sJj#Ln>= z9dhc>oCM^XzCCS(xYRSIIq{=l+C?z*9Xl#P=@uTi-)rcmkq@= zA zoc1~m?thUb4c;V6nih>GAdaW@;h=eV-vA}evY9MtPR(UWbNII`o6C{j`?oA}8f7_Q z$I_7T+ViwHNbRjK$4t@T1eGNT(kqI1`CnxT$=2LFP7;Vy zw84nVO$n4#KIw3&+%7QGcy5J@Q<6w~ExkSb)Lg_hl`B2_pT_F|OI=H?Yt`s#@6#4| z3m82Cml`3F=637GWS9pT(r8U`rg_tRP-o4H;#rNfrtw8&NoR-mEKV)rP{=bxs(Fl% z3j)R9RUJE*5i}rB(9Mg2GAAHIyZ`9Pg5)Cz#feRW+m1|O`E;~mL7EhUecC{RFfC!5 z>j7=wnwv$mvU_{plU87?jFD{yIfX2PZAcvVZkroE;kl>ee9G1Is98s=yh{l`BYDMSsGk63Bn>eElA8*LzeG^fk&ry zm|{j{8Fx7El7Dkqe%9uESx?FXM^+jcT%zLaeuLX23KU1Ub;puCma%5Nza|-R-f3oT zl337&y`o0td4r+H0V8m!Jg2}?HyhVfuGh8n9Jo}zx8QC;#If*GBhZRZOhhy)jYfmw zyYtDzE13xEAwrrZM053>M%? zgvf7@RU*kp89KGhl5Du(WV`QZa~a;@;gh>?sqFk;^jx@Rc7zhroyhff~BrLvm}OWlXKrZUXe(hJ~H89svh zA7n_Q(r7fOfV@adJj`VH4l<;irzkt$UALYsA+kkdsfU>*POgJ9&fJ4|4{HS&)`zI$ziEmf@>yNB0Y!Ke{*ltt6WEi|PVDL7&#LLY8z7EP`bRI3y*1;?Ps)K1^bF!Sg^Nx!* zoN8VN%Xs+YC0r`IX|U9Ng=;Fq7g~BbT*^lU-2YGqX;d1G25lxVnu4&|n4hL#wj!;T z37CEgi$VC3{E!|qjdG;ZDj(~hW>HSWRI88j;~IoBCt`7&$**X8z~H`gd6t>~z5E8= z_RpK5t%G;}T?hBOX2rzcbn^b=@8)%|65LSp8ZMRFbXe+E;hM@%t)*APrShwR`yb>- zqta+JXfyfI6q?JArZ93v`}<6O7^@Nn;r}kbC{;cW|i;-@~P{eWShp0C!6-LY9I?jp*Ocsq{8KX2hU}rb*MIX~mRY z#A*aQLP(Kj-dwL~CIa&CYDE?cB0vy|w^_l^?Af%O9$YH_|77SGsJR)Xy_ngI__1EQ z%ukCb-`T8fm545$-)57{m&?+CD`|es>oo)+rRiv^I%ygsu`#>UfFC2t{0EJjNW$FP zA>_;6M~4X3qHpp6?_9Z1qBCvni^=E9^U$rDTzhV@|@)-x2{_D)$C3 zPRl`vYg$g|YuL4p_F5P2e;LEmXiZ~y8kdF_kO#YJUo%mQAZnUrGf~qVn->nviI+L` zG|K+Jjp6CsP8jDAl8e0oHT)WfP>wF+A}K7ynzQZ<5~eIz9y`jbFn}hF>PwRqe@vVa z@$^God8=G1a07Ti5&G5sV)(kFWv zNe?87x@oLISsEVsd_KFYMw%2eea6LtD=Rbl98KHw=7#D@Q}|F@a0VI1rY)^qHQzi?!|^q(iTlXs_F9!?)AMH`QL7!KL|_Yp*Tfn#@Fd z3K})d>H>vAgW==nPu+fDC1QZ`qB#kO=ywjUalxw(5@qI-x!y^pH)vPF z7>PrR)!5$Lr4(9uK?!s5ei~=Q$)`Y%II~uo%_L)5WOxtq6?Prtl!^RPgY!=zLm5@I zwxyOtZGU*~M*ORmk=lSgZvsC1a>ZGHQ`aMZHdu*W+v|981fL9uj@Bcx+5pemfN8Y> z0uthH8t8BOgFlu>#EX3RZ+Qr}7(6s>@etqgVCuvPaX5L=y1w&UlOo+1V^x~n-84HT z>y|j+V1|>`W(nIa`6h3j=b&(@!DxZO)4qzOeK51x%MibmUWO#+?Q!nyai6!x(a37P z{fhK&PkFjHXFWJ|*ugQ_F!UEVO| zK2Ld7TA9v(_GH=ll;}qlM`qNgl%43?(S60w>qky~`uNU1!HtR|*eC~#dND(Pm?$XM4_o3N8~#St&c!5&yv_Na)@LU@ zd5nrKfjW?g_Qavr{%#%Ju?2te*%YJr@*|>8KRD9kT#6BU<0vdnZw))UXD-QqUhcZ= zY)bT@@*`u82Wu|cb#!;!xIQ~huMZMIPi;JcubE2Q1v%aJb*QGTrj*TQnTmX-$Y(za zAZ^W*e2HoqBOK|nJeHlVF^y!QX$&U5=ayR>6$_nORZm`S@jlltA~PuVxmQBe=v&?P zjjg^KIZSjq7mH@t@_&HDp?-tEeJ{4$I#@pwykX@6MYvJm(o6MExf8i*C})K#Ys^k2 zf0&ZR&KhypIu}d-Zlt(0W!MhAH9PcvKbsPDsN6pM&y=kFe~uhj^J2@WbM-T4{=Q~a zIhK!=%J4Ddx)UqE4yQ9qFU@yE=@>Az%Opq5d{Ty6ke9j+gsPXcF*|9@xNid3J7wlK z`#|$L68ATL&xVDQ;i7R1#|*spaBF3)GuHWv9&Yu#Bg=fa6?^>uqqfcIMFM+KZ42zB zI`^NoZP}zh7dn^D0du8>vL4rF?caw_Nrz6vFF$l5;R<7Q3u4zjh}Fe3v*lR9;B+(u zO4|#kzQYf&Df~oPsDKNdHhi)U7b>XLP3~oQvX`L)imEwhIq#2OxqsTPZd%SQ6x&!b zYrJ!3t5z8DWrdYzT`12IlIk=&UQ^LKJW1rg2c*-r^{Jk1PSG#mu&Su5F(mbd^B#1< zzq*$)bmGC#iJxg(dF;B?84W9p!lU&(C5dUI`qYmDT`{-*C|37T>^l6D($I-~TvqJq-Vr0%vAQyLRqHJdL+;>PAhbR20YPlB z?o4P?L5+|I-CAuGV$N2t^%>cyAqauw^f)r>jCRe=+JmP z5=GZ1Z||>56}dG?C$MgL5*9P`#Q~WtB>g1w5Zu<;-{%`fFahB^nigp>a}Y+dXk_UU z@>@j1hiS-r*blHR@Ucx6zAeH#;sHTG43$ywbl(?FM8vWYNU5;rV1-1ybWVSU0(XfW zfc1nG=f8i)k}yU1r7Q`P;jARZH{aCMnm=+r*F_HyHX$Xbw zRK6cBu?*USge7Z|4r{KIU1s4rfOwOM!@}U|I7Y&&K}5z#?PJ>XVk9e&_JAZJ9lBS1 z#Yi1N`V}d4n6vRHBUpp*1YtT5@j6D3f&jq*f~8$`5rbd@Qawm-VJ(9n@&kxYAeu4s z*1;3``M=H}c_DEDvDxKe%TluiX&VdGIcjt`BXt333=3u3y)y>YXkfa6G?f)mk3_Q{ z7^xeL2-)^nI~$u(5T-i_`bbGgdaC;HOKe|(^bJz#X&c3_{qz9gILocq{z6|C?Q4+m z;0;U;zLwsMWCv0!q=>~jyI5ZCJwftin4Feg9nP5Ug3NmYlRd-LM{(gHdco!MS2j1x$U8C(5=vrz0nL>J2?NU1eT&DBAAhK1~nkT__IxF(h@VuU^* z{LWJA?{i=$i`o~Y0HijHrRbJ#nae`{gVtjYVKajdITwVqb&oPoKNF_+g%izHPM(7X1Ru;|MuIqG0 zas%liBMsz!+QCBwmlr_FVC2F1udlF>bjwdWMjDcM$B%`i(--~0xEm}UdgO!oA+0+? zwq{HX4IBX7ht~rn=pRD)Shn2HNHUPHGzb#Eswg9R);}YmXxL4#^i8Q>U^l~Vf!zwb z4R$+hENmR?4%lB|cf#(16_BxZvr*r$8t94SF;FJUVS`~;z=pu05)%b%DC{cO)vz4w z8rU#cs0%?QK~fXm9h=IKev72GG19~WJv3Ly$OD|ygC2w|)5&h}%ko$t<%*g)4 z48v`3?}Y?*vjk?SCv|0w;ZTG$f;5d`C9w3nY53dj$VE|@n&>o1MRz1^@0u!*pHVE4lA zgWV7N8|?3}2Ve!{$K+!%EQdkJp^oJ+KV}!o3YiWDDT-CI1>)QGj5Gu!)O)fZc{dtQ zg!vu>2NrGNe!t%siEbEph%h1&=(_+cBA+q9`VCwc*g(l(a~5tG!f6mL&^%%jBMb)t ztpxV8yED=lN&=!41+Kgd#)5E>0SM`1$F~gQK$?hXA=Po^EYf%o@U(#3 zRu+$SWTXio9cQ_PN>={CNWLIlMl=Cg?PLElBTWR!hDBTxa}zZc8Pk=rUT_^?1!S$c z9Mco<%0bRU$b1%h-H%@nWeH3|0=pS$y~b%EBTWYB5Fi)FIKM*#K^Y6eJ-Ac@G}8q`4q%Mh-gZ5=Y!B01OeH<{}8GXQd$7gNS4xXYhR(k0%;*gV_B#}rC(z>1X3VKXBg=ZH&@^S zX%R>pS;W7t1pUfLcOjuRxFsY>F$?+R7b8?MLM5H}s~-!q1cWTc;W1ltBSu;ZQY^w8 zv+KkwdJqV|BaDC?zx#%l)-sSh7=Tl%T3!{FgLIIQ&PEQ|#Zn3e3E$KNfRrnT4l&XS zkWM4<6z`E}f&nfBgxf6fRAugDMp_Ay2P?sIwlaQXK<6Lu1r(xyJ(oPxg@scf+%(4W z`HNofSm~@pxC(?(!wQMgQpl@vC_<_cQkghpJd3&tg!3Q>NqXSy1&p*BB=mPA{oVaV zjKG0#pCP+oIb;(ftpRBfW9Xvo?(U2f1`-ti-x~%f3<0_HaC;Bkb zT9EcL(zX0i0~q#5MEV+R+ri>=s$uG9EaW92}nt7H-wjLxm zFfAar<=Y?g>4CHXq@Nf$|8P+nOK$_n{Xi0t2gNfz8R;jGP>AF~+sSA|k^L4x`3f2I zfc@7*bU0(|;jR%^SU5U}Y>Twou`CKK&+x;5jY#i0gZ$XQiyuKpfrQQz_@3H{PyNX63i*I0VdAdNttBN=ng3_kF+Z4=0YSQe!*?XI%OF(Bz6locBJ~3b z1R4B-F!snmNXir|FD}>c=$wp`Sk&vI zK6>4q0}9ngy{>Wl6uW0Gi19e@1VpTPLF?P#hjrQLc{o&)HNHQZVi8mGL8W4;Pn(8r zXDS+$FPGG3ryed$EdaF?7UIvR2bwEzA*kuFQpI?oSU@ZS(HP0pl@^_tSPbGHSf=J) z=*q+r5QX?$mIA-7WNIm>$B?lqt50%VyP;+{YsOE?*5V2GPovzww^b5%FT3C@4m<`c&vpYsL(7O_8mf%FLc}L7; zVigGVUhtUPfFqkZ;W{LAMk2hf13FoeYdM+T1o{z@K1Rel%OgIce4%kQ6x0Tl>Q&yN zOsoNM9HwZ-+ru^_*HoGb9Wd^J;1JR;#zMG%Ga+@Jn1&4Eny<5Y?77*E3CeM{;7#u;z zR!}*iK2MSNXjc&42VG7eocWx;6xe{)0=YjSheA@n{L#NV6Wc%>WK#=VKd4u~?V!p- z1s2QauG_;>J3!@wCd>k#?HkT@U?-?hP(2ZQA@=6O0aNKPP85T~*_kTYCZIP{yFgW9 zs#NBq*O-b06@*h+RN&?gxI|&|I1Il6sjG;AL08`L$>Jba4OUi1tbtgQEe&@%{n3aaJ1ag0syb8kip1i2iJTq>m4jI+K5b>Gcu=UC$V@{m=O0X+1oe`sM%mvi=ltEo>G4Czsw7PJv#;lFfsHp$S)>)1YjS3P&8q(k%-(>ld0cIFyOq*{b{J zf^5NAP#a-^MYTR$7mmWwhp-?!Fb87m$q$>b+&RdhNkT68RTjOUKM!gd&K*3r)j^iI z00NZ+8En_mTOW8{1hs>y_FY_C=miL>9_*^mwsnZfuh*8#pi$*;f?q#1jbwdSK$Qjc zYt?klOk4%gm1Vl;v>ssU8mQ_pwEMPadOt-sD?DLUQua#d?kZ(iE&+0-L1ErEAsI%{ zD7EXLlEa8zP0Q;;n;RhJvsHa&hNA93<|e3doUDISb%q}yPWKy5*T3N$y;HdbfoK-6 zO;~fB)7%CHe=A$c^#M%W0Wk%HriO*N={4^zsBCOuM9i6+EOif5X4W+PQHu}kD*9|q zEu5`3;_zdwn{g}p2XYx;r4M38#7u1Qh{Ic7u$ucgT$44Ax>6giMBZZxsZy|wuWB&sm>eIs-0_GNu(`_*d$@5sdJ8H7nua5eV2!K8!_idG#NOc$a;^#^7U5LuVv_2n zzsI2rd@{q$|KX^W>z`fFN392>rqLQpzRc5IATkq75+|aTsC* z;&8+fh$9h4A&y2IgE$s(9O8JyoxdF~#^`yZ(sO7xCTO*E9Op0L-4V1T?9%)kA0v4%r0jd!aHb!iM*c9<*&U)=xMM@l82treLuV+DZhvAK2P+m~^n7-F#a!Hm< z1xXBnAo;LmyA4dG234HRemwWdbUs;gBz^_zHR2mYe6L46-aJr0SqmKO55l6JuHU3* zAq`X<2KDqT%yXuG0o4jpY2W_? z`>>NAaU>^8mvO9KfCWIMVC5M$tgOOP1wqYWD%02kRhcRT3fDWFFH5RFo4Bw5yTsi@*6h42-o1EASywoGGZ0Ps)(BMPc&Q~ zz81sbwXF4*r5p4?36|9&si#dz*Bd8AgINNnhMBuM$b|ZcGI$^k}j_*a>8<;sKJ-a zl0_d5m&eX+$XHdWUAOfHUIA1!SY2w?A@~716%kVrQD&EZ4XgxW73|SeP_v@COl439 zKv`6!UQbhV@kPUZ_*@J=vxKr}J72$^R)O4gPFf{bwF<1hDySArRr5UmfT?PrZgKvq zFTJydsp_C`xrL#%`+m&8R1Hc9<+ZOqNnoNTh)5V(`}MtYOwHh5VX8K$ z6`bLEIYM4BRR>f*P=*&Z>Djt^0Z+cLL|sU{VmG*eALl|;f;>0I^N(i8-BPMT_MIioM8G{bHc$XHa{4JF5OvgV*# zfoj`oadGZKT7W19)x{A@u*vN@o_NZ#EpezJ+t&VwENZm^)q|-{&nKb5W4ATpc23y& z*QGv81%pC!fhoT>tDKCfHlX%!!XB0vVVwOKWd9bZ+f0WviQvGlCJDd@q+&PaM zSJcuk?ju1(vD9YEAJaHPk6@-Br2G*rYRlQ#s7@F@J_h{^CwPwd0`Vo{ma(t&>Ng5% zrnBZhcMYw_Mvn&7hF!ID;f%~ojR6(QT4OrS&cr8s0j&|xG#oJ|*MUHm8w5!b;Ki#m{M?(a-Z z1{DH@2adGL!^9L2>sj4jWhS0wDhd=XDX2~Hds1VRiQV53|AZz@ovKz49T|3~B8G6n z(^D2TW@;L!b)YQjOu64ab6L>GEuxU{cSLH$Q-NoC4A)!rbP!u`BCEQRsMkRDvM1yx zLuLx%l`>iM%h(LaH6mi(cq^Z1CWupP;kAO7(4%8_7UF$S7L|}_rx#PRL4AZd3C}a> z7pQ-roZ76Wt`AG0UytWtcN=TEk)?=k)m%`Ma5hXxCT9ADtxAD}UqDftym=>CDpo%a za=Aci>fXpJzcDo*RATnYKh@e5;G`*$v<{NhMa12k8|8IVq9KV&tnMFqgnkV>3lMv7 z(gz26>0`fzpawDZFyM0?mRbbrCR2|tCf&mnje}-0^)$I}TRvxMoU;Qg>&VtU+g>Av zFM3NLSs0Q<5Q}n(7h6*9U?od&=o!qhs#k5xHe+fTs75gQ)x1S{nec&DcaX1^hPW`X z96JTs<*!{H=)KM#pgutL>s@zjEVBZ{HTLhjvAJ}YuLL!RlYQ_Uj7uHPkqN5X!PxeQ zAI7@rg}e%Ko7qg~2gh(}hg^2Zt%l4R&X`;4X*fNkRwLekq*Wy@ma->PYd|$aio`c} zID48nNVwtVjodKCtvwNVWU`^;x5SQVJD~MOw zcWJwx(i{3V9Gb^x^=WZ3*@DA$`G(1iD-A$oi()U7UB;rY3HRY+lPOs7XK{Y@*Goa{ZTK+Lm*sObW}qKH>qE|D{jQrVtRNl= z&cn3&mG9_1%}Ef&+17^B{Tg!8c1ZdUlHEsiQjIUQYR5_chGYP!#vgp&GI0t7Jf#}{ z_3RT9r$O{0qWo%9DOA8SAO<4`zab9coHVK4bp)TJJx<~WJN*$Ys%g7%x;M`vMP*P; z@7Ar#I?sVf&q-Tdiic(X%EhZQ1iB#pir5vg8)A3F9*7}`p@=;ZaRcGaL47oO9%|OX zwAQ(ky0hL3ATX?gC)>t0@L-d=lP8hEbcncLu(lye6IyzJ_5gY!;_nYse18e7++*z4g;T?G|{v-T((k0BR! zt|7kUT!%Jpzm=&3P}7()eBpu~4#7iVjvpx*z*JwqT75X-btGH^6RfJ=HQ#|u-2in6 z=j%5q2^t@4xe1~xly^hy_hz0xG`oY0(~#Y&`lsKjSGFObNmtp8v)D-LOD@L#L+ z0=W-rJ5*TJ(8`lAD#7jp#H}!8=r4ciMf(s0IxaP|Y$6|)cm(1E>k0o7kJQM0IL@3H zm;@0wQCfFs$&!yD>BCe+?x87|dID+@Cmx==-9vs@G4pbW{DHUvaV6p^#MOvv5Z5BE zLtKxz0nwsH)UMc(RXv3&G;cLx(3#v!JOdF5!lFhEZH(57-RFoaak^30_USGB1&9|Q ztZK|wKX?`@N5gn4&pawEEK4RYk z)-@iw+8|k5M2nhGzjGu@zJa7SBqt1QrH`23f@lDuAt#UA8=acv-hqA!%AzKpYTlfw z_n>wmQ+Lwd9~x zpQ5;eq6yHFgFa{;u*D5TC&+Y0T=JpsawgHKsY4(RBU;q*>fuxQ1Q*Ul9EeEo#My2=sAKo)~gFL9MvQ?@9kmx6wW6TC-Uzv%KTPM#FW^Mb&$b&JlRSwW*0 zs5+oylLosPp(%dvXcP!Gw!^Md&~q9w{>cmY0#a!q)eI3YI*yC(&r~|> zmSF1arKNhiN{`(x$j+~vrE?Ko<5@BT=-;`Lp3ihf&m|g(8p~3b`aS%Ir80tA%hcr; z$+46oe7zs}!oi+EJ19u6>86H9N+Q-m?0`rQOhzNp!%_4wj6KjTeF}6>m@c{$3JX>T zwn7X;q}3F2pqV%Ynw3$Y{@xxc!q*g<2!;sitbT*VzD-E2o5G)hs7)NGTGQB_LKz_4 zyruqsG$PH9DNr4ME8A4>C}b2Y0Hk$aT5qE;UU0r3t(@5d-T$K*90gioa-oWWK;r-k z`GMsTY5r^vbgP@*^q_&j4#by;6f)5Z@eZN9>~{r5IUHN+uzdvER~+^!`BUs$=>u{S zQpt8s!J5FH4#!DsxM_bn_E#VtN4ze_-0_B+FJcA6&WIES3C5to{l}i zz6G;`l!)I8d4w+u?2kC#f(&VI~{tG*+%7u;RM_lU{R7dwU` zvR}o-hdS&>IBc(U*goN~{YJLaCv(*PZ95x=W#8(Ji!5SJ#8Qa05!)i#!vJhYA}$hc7w{zFEyN@#>{4i3*e;LQ z%z?8X?e4%$cG%t~+eZbTIvk_4)|7S)-^Xlnyb7>6Vh_ZH!fgf~lI=@^q~(ijr{d2F z>w0ryyOhJe{cQDx>j)fRIzCtSH<@@!dr-Is-#O-z+O8e_HMR@OeiPtehhvi*wkgFz z>~BL%o(9(^M0+TX?b?X_gc}Q-E88Tq4%>TW|Dpr`NVb!uwQIsm&tdx;t8ev?W78aD zw#)W0V1ffrDZKEau^*yipqGy+)D-*;xWFW%OX&YM$+3gLiw<&@^r-KM6#NBC3bqFJ zLY#%TS~y)&{~ssZDc~2x+<1wHLK$FP*{1#WvfU3jTejCY9N+D*ecECBfoy*U=JO#< z-w#1@tO0PUNp2hVuOMm}^|UE~eu&j&-%+FOJ6x1-I|Ppdubbpv%6`sFsQZXL5h)A@ zPM7T!z!=2SvVT|bJuss$i}Sw%*lvj!if9iJ*q(++;SXPium5&p|CDfdfbS5!GAj;Q z1p@?$tcmSlhkfFDV}Cm03d9)GF*+Xaz&U3jMh|JQog1-?aCL$05&Ox$U2Zn^*C3u1 z{vTknthhcQ+Cwqft|i#U;h0@!mWkWtuz$m0`;~0FWy9D5kwR@jeGmOI_QQmm3;bKQ z?*l&}dSyp@KrD%94z0h#^>W}wV0#AQN(auYgZ3}U@f0~wClRY7wnFTQXbv;MtwP+3 zco*?KqKDr%DPL?Cll^*v9e}fBnpQB^8a=`E4G`+zRiJOjO`tW ze+zdT=$`Xix*`tS#8$z6a}(DC`%@6NAYPPXpMlA8ebYl**<`WE+;WFwlx_$1uQ_lT3h3G@2-03> zY!5=5DBKd@F~kH!r-Hh?`G0!w`TpaWT{h@HjyL!Y-$}S}rephL{~Qosfl*o^yLLQ1 zhiyNH{Q%jn3GC*;50&jrz{?IiX?kMXw`;c)#`PT0AF(9j{|dDr(*`kXsx>p*`WL0! zj|eW9Y~clgGJY59``Mb-aQCV)=Ihtu-yU3E{zHNLqlbMYUFpg2cyAF=u-6!#{-_Ijmluk1~a6zYZ_&OGy$?@Y^bOzKz zL}x*19z=5}D_9Fi-?Q@K?}@*?8x?l-eS025@Hb2G^Myku)ph;iOyAG@-0pNx?X+Qf zN}H1JS&1Ts?|#q9QncoPXWFpKo)EcHFY+e774NRm`RP77A=Yh_cT&tXSO@vzUvII0 z=l(m%>3Lk_c~rrEOk%0v$|X&>n>H*kH2-KgVE(+it~)!O)>NrDYaK|uebBGQO*Pu@ z>Euvc8$r-Kos#Ypj1k-=7%LbDG=A4J%j0VL4T(H3pVVl|x#Q_+ylkBp6lo-Fq)AgQ zRdFD^f}d5$L~_xAcEHt8dfrvZx%(nkrY|FGz}jJoZP8ot&rV$TijHXzz=t zvSTO7uAeJpc3ZTbcSTt=r4og9pnPsr?nAPs-^ z0%?Dr?C%E}%j~%&kuxu?k(ngsmorOoCh~(IJ#=n+nHkT07Cqg|3PW8EoSCn^PdqqV z8ZMKANJC|FNbs=W5nvSRXayXjV3jXM;1?%+N#@(v{z-%WEg>9BMtbmR0={8`{mi5X zf3yVnHPAicbTynSv*t|F&=gZ%&=$gXS z$+J(ZKAun??CcpCRcpFuE>AcA6>J5OOqiuwj0SLj7mJqBcG>} zr)QbYMadthZK;pBWN@`4aqU|;J)O&c(X@^c6RqJRBU;V!AbW=Hsl74$V7P6sR`Hk% z**t#6iVF!h0~4+Xuk2{0e5L4owp(B?-@u-}%{OYud;Y{Xx)${>;kCT@p|uytj5Iz| zi>9AJX7stpX4pJ?%=V~7X58z}W?VgV^q5N?GNWWMHe-3kCmkcE!3^tRtY)EXFL?d7 zG5jx>5%ikPP}SlRE+pKB8ERxFG9x<4;AhGOkXU z?(LkYg1L-FPug`Z*$^tD!9JQ^M*fK}uFdM@+V4c9-lKs+;6;lT2eM}HNs<}!`~z7_9?aUNFz)5*0XPg*+!uSe&?%eF;#G}= zq)K-2H957f{?K=<&om2I6-sMFVll^S*`T%Fo| z`I#GIlGLi5_dD> zf(Nz)t;*wMzA$x_O)HpiqO`^BWrikwCQ)m7ndtcAWIH|GN<}})sOk3f&s^qe*1;&P z;M=A3(#juQtlOLbrOmfyTILBQ;gORcoYvf)W~fjyjFjASUa`#ckf&3B&p+n{Pz}4` z^0K~bV1jyG|1R1xavhgp=A!$`EyMXm_v!8iYHF37sT%s&0#Afj#jv6J=Va6jS=%#!iG34pw5XiyDx+Xo(wA6 z7#iYi@1H)nubhs1=Gj3uxIV5nvaxG7S4%P10pQbNK8eoEs!W3jPgr9E(`gv*76q zxXKqol_#;uCD-Eq9oj%7JWYBmDqw9oU#93XMk<=!xS(IKi-4eW;E$4Upl$njOsKCA zk$T9tHe|~gm?X%3u&Y&B0)2wqTLrm`oK11-p(=;7yP?tO!B!S;JQ9g83@xcno)fdF zb5RLptxuz&= zx3W}EO;-w?IPjliE*$#$U0FjuN2gY;gWP|keA;>hxsU(Ze5z^lZg1g%wemlRAp@@T zl+Uv;hVpq%@I26%&y(phwdEY_Kv9yoDeIKNlyy>uK>yjZvMtM%bclmYZ!!LND9`h` z)r27TA)L=SLGD|AHlMZ+L$CFRuTh?ad|nj11T^N;P@Z&HQ!f{WUE!=# ze?b~d`6Ois^xvLO`#zyPzu(PgLT0r!$bBg1^I(wsouAF8+H!QjV3>uuS_X%FUWPH0 z&ntpgfj`J69oAHlL}~E60;+Np97h^V`6Ois^#6PLq+^uV@8)wxT6H(beK_Sa?sd?Z z6!x2s%BKEL?Ng<@x<87~YRKm`7(@9?5WEgF=CglL-G!Vf3o=FGrg}>$O!*{b2=t%M zsPBC%M>+my3Tcl1evp<^OdU-KwxzUI}wZ?C(Cwz)2os#M;6B-h!7<=sPmI*(@- zH{7D%wDRAtF5CN{+c1doct`Lq&{&p+wn>NaVbTp%(aWOF4n!VFgQ+Y@83O(P={g&q zTJ3W%lp@go|H>yFx3^D2c`o-+^UJ%B=X`D|?|$N^^Z6-7_X`gBlyL)w^qkL!f{z3r z1EX-!X+Q=cm>MJ<)>NTqb@Avv%JncLNE2RF-7}#YQ<%;xQfBfBod5t)cnuKJRQf9}u zYF?zw9*6;J6U|yC+rfoSY1Wk*y}@5wmxondj93Fzp#yxo*R`~7&Z_2&{9|15VB3q} z2Me7dcd)9_*1uC{j|;pT{<@;O*U-8a8o36nC|=E`oruUcF}ZCbUh>Et9Gxky_wP3A zeAfa#+23Z!9#^)qJBE)c;AxM%np>K6A$jRJAQ;vp)8~EJ@mSo(L#9o^lRC#t4;&a67=C$>yBCHQ7z)pM8<0nHO6U35vpNlh<3^4==)T0&De0m9 zbEq`nggNdX4kQn>y^M=pPxh#mHA+lVmc_2kCuXO!#5$c_@8s3FcwAT>^3T)kpC@Lw z1?~;s-;V6Gb-pkV`l}?plachhoUi)0ox5**sMn_^l;3rU^Y~X+nAavflALA>Q42aX zwYWuQtkP^6%@#IAh0ID`BdOD9&&OTJv96a#w>;*)%+)F5{Y!H^1IawkTiTPQ-c6Fa zWjsANz-Jh)R!*+^dSOxcr7X(4prF5CVZlOz`331S;Uu3^Fqa^`3_?6TQ$<(=7}ZMu zFb#Im`NX{q(w`k1f?ZMD3V5%WH2s)dl zjulLNi75@cbRtci=;S$pscqOLTktm4(NwAj9qV zzsCFIo9~5sLUsW5m+f)i6LjF_$@Y5SKE!jfzsNJ5ZIF3+ieIdoGA7C5W(z#H?L`}BLE!jVlC8eg$p8upVH4zjkK_DyaeLZd4`#CyB!9G6m zS7!q=oWN(tBm9SyveqeMRX*`rn#eSBGA2FLR`p7r0ku$ zdSa$Zf}-NFLqi^hf3DOUJ zy$;c?z5dX);TqB3C$9BLe7wr)X0vrVXfW|3UC0 z&^yPsXG9(RP9k(zQ%A;(|5f)WyhWNdmE^>M1x%HON9iOM71pH|9&|;EECY(p`&}{^{d^dj@MNjHu~+nccAkryaEBgDbG{3?x#qCg6;p{H@c5=_RE)+ zR6{YrxvBENZ|nTtPjX2po#tNY<-zGx@fj{E|5KF|>QDwYWHPmuFlc#Dm?dG5ilAi3 zo`fXRYekftaCdVmTXb3H-nFdwn~sN3L;op!uXfN>ScYGcSWI5Pg$bR}=p?pld(*7& zwq3KPA(AT=s|p^yG~M`x+oM*h6rXc`T&5P58=WXiuF*r%(cjW^%GP;B_|QaOa@v-A zEgUvFQOEf%R3B9m-2L$dx>28`R)T zV1qNZ#%EAB8+ue~@U$+P94?y6hdo-F+7=!0Zs|GXnJ#Uy3$DMkc=hqU`7(gCr7W&8 zy`Iy`zYJE0X7m}T*@hJ+y3icH2BZw7tPTyCspWpz&A%gT# zS31uy!3e=og5v}u1t$wm6PyopxF;~Y#Fm;%w{(xHdkNn*C%w~6$5U*r+3{%is4mX9 z%Rt8mik|+0DNXXtx7N&YwR_Y|kHCc*$#)aE?t;SwM+i;=I@+^gYt5ybLZW7-#313a z>x26_tT(OU%dAhZfdxBT+0z?~rOlAZt55uitL;6ZA3rm}c4ao{342uY&f-B)7o4Fd z((S=8KkFTSW*?@^$muUq%6-SO5n_&V^0mCoBm~hz+GfEXS}5W#DtJ`Y%`^Me z>pnz_q&^kgcHqC|qOVome7I*=_kk=&c2tL6KA#Ou8NWGHw^E49JydKOOBBN~!V-eT zfyOaKit4YYbMH-qD-y?;D_y$DOnG6KQfg{cVF&G0wtutO^Lq zI$pi}a7Di}UKJF1>+SSq`Wi3h*^1oJWWlbRoahenMSj-Qwk$dHmwu{4hO(}y^regG zuioH*BJbjz$gb8yoUkS+a=fNKb(@JdDquh@P~GBg4`O~PL&MlFf6|0eH)F$J?Z!wixbB9K z2J0SvwFS*)7@DXrbkNw(2IQdMpW{t82=t#`^Gpfe3*PD;nK4^&Y}1%K6*5hAH??3I z!L)+u1k(#<5cCnuC`j*ikRD&b%s_8+66?TGz;7_s%(a5uk8vHJZeQL9cuEB2ff}di zy!c6G4Zq0T~)q@mSqpAKL=^HUs9~2p&sj6YeJ}}h)6xoV_=gSMr znQ91%vV$LFc|ZIeQ%J5TCu_=WF2mi zIMy!8IPNCc+y=0eAACVRF;ymV11eLJBzIY=IdoCZ@TIO{3()JkwD&F8>)1Eu+x0HU zku+^nKhp_uAmRi$77g4e+XsLb5Fg6^7a+ZpXQ-patqEIh#se#flC$KjebP{m?|pK?9}xPg}j5qaUGOv8@SLHitCn|I@bKZ#u7aPqsC9 zp54~sVrz+i+1hJm(xPlyfB25Xs@)u%go*Yrp5*`2);K@kkGRgVt?Poegw&Y))3)|$ z(c>Ma?n>DPSTecm{c(WUTJm4EejXQaj!pX;wvt%Qj;Ujrz>u^|h4PT3WD-U|GRHLAp&$^}3uO-Lj$m3W5~{ zD+yK>tRh%du$o|X!5V@!1#1b`7OW#!SFoO7eZdBT4FwwsHWq9m*i^8YU~@tGv03kH zc<+W99)hNJFX`Nqi=-opgtB2#6{?Kw%@i7iBFpz>?!J+U&LGGY_>Gu(Q;#v#1r&J+ zcbR5y8qX9K#1v%=KbF{P$|9z^f}*@@D#g+17&4=2bpu6i#&;)=cZ6Zy1-pw}~lSz7-XurXG*k@5|IcP*kQC z^~>pPshJuCii+{cA=kl7;J>2!qN%=hZ;fH?|=vP~Y9Ok5BFM4!aQD zf7pYFWxcQA-q$Ux@j7hVH#1RZB%wUE8zItNZweED(Xy>G#{c_pj1~&-BYr}pRe-G0 z#^^o`1^TR$;W`)To{;i(toDJfbG|pXgw#p<_-Dr?15cjms?WoMJ-we6%eD&Vp?E&5W!Hvo`Ssudkgjv z3=`}t*iW#(-~hpaf`bGH3;rfJL~y8}O)y+=m|%q9aKRCRBY{!4ah*a2TqxSH!wPbR zN3&L>*3^ZPhfG~4ImOV0l9x?gC=~#fj3Vct^F(VJ1?6OmsaGX8ntE08w5Dox`=Ix# zqmhs@hmYl~i_mqUi%^t5L(fYEZ|Zr;mzuHXrDC=iJ6fs{>1S`zyQ{HKO)fU|yi^u5v7KYB4>W`^2rYd9TjHwQqI%BFHrp}mZj-fNAreW%g zskY&(IsR>TvE6;7Az9R8zdLuB!UaxIoiTLSR5?u@Hq}Q%hfNh9zb!kd^xv#!0`ySb zGWFrq3`~7EwNz6dPL0FVhg17B_2JY6ENW1~draU^qbA~vRI3f0IyG}sr%o-%(5X|` zVd~VW7f~t@k=`w!{`_mdg>70VqG0aBsjqhIr|tKMS=iyBUrVpo0MqG@z6_LUvLHvNJu}_b7 z4R*d88^nG3(~v(y-p=^xKK=dQkLv2z!-R(^y((s-c`fznqu_Pw(?<)A5gaQxPH?>7 z1i^`dlLR9LCksvyj1v4^aH`-m!RdlC1ZN7)5}YkKM{us-Ji+;b(Si#E7YZ&CTr9Xm zaH-%j!R3N~2(A!ZDY!~-wcr}TwSwye*9&eC+$gw7aI@eR!L5RS3T_kJF1SN*r(lfW zF2PvAIAGN8_;fv5B?XJJ)s55_iqT&xGQ)6@p?u;aagLV;%F?Lv?etOeDAYl!8>R~b z6_>@>=~K-xTo%YhrY@gq0hXK{dw6oVsXHg1o4Rurp}Y|T4_XJ0$`KLb8bgifE5kD*Q z+70tLxMUubQ_o_$uu~_E^;yTOIQ3&T^bzzJg5z8YyM~a*u!othY5#k>?Y>8X8-+N_ z;n-?y$2siVH@`l9VkZRY9#DFRYcbLJWIxEnOA^%pd?!SjgE`K>=o(IeAIt#KoXZ|) z?nS|VUDx;YXZR}1HJdn^i`fHR-|c~}^AzY>Zw_?rr~Bv>t~eZjif#M+fQ}WHxk7cv zMOyIm3;{i>u@rF|;uXaI3iNwt6s)Kj^r>hHIR*7S{l8&8Sv+TOgMVVf_4#Da?IHWh zJo!2)x=2G#;Ez2pt2JjlJ)&mkAxG`9NRVKp2BKhqv^9 zhH_HQ!NVWLYM-z!qI{2?3JHDt)8*7+qsP#OtUBR$+)vC#_X4P#PQX|yr+C4Wf`1F1 z5i8!pDxuWpcIzXWZ6K&L+zq`pwG0|b?<#rQA<6-rFY zl}S0#PRLLxD&>oqiZ)Eaeodw};8_1@Ie~)xT1wYYdx*n^{o3g!WlqQJ*UYlQ)f4RN zAY*7dRk8+8eH0r+ZO1pd`RS1Mgc$1=K>1>Xq1 z6?`Z7Uhsq9N5M~mp9Q}NDi}|8YJwI)`c5hFPJ+&YE`qLtZi4QDi3Af1CK2=y^b|}g z=p~p;Fu9;NFv{7goMgOYnrV?6G*#~L_D)=FaPLvk8BFW5TDUWd37q{f5hKP?R0RZ7}kuX)Rv>r=iFnU(cG3;^J zp*7fhvj4$>r%n1$OJ>Bv4%ec}4%^LSdx!%!*&4;x|>;!;F*dYW)Sod%qW;i&{r_CU>3owg4qPK3+52? z6Z99P??#hdxdd|y<`K**m{0H*!Tf>+1Pcll5-coOM6jq}F~Q=3B?JQmOA3|}EG<|@ zu&iL9V31%r!SaF?1S<+w609s(MX;)1HNonFH3Vw{y{B4LAo^JfsD_UB_{c2NojJ0= z)T>irn7VNC6MmX-XUk;V578rRRAulRQdKHpn1iz&MAt-CnQqomMh!RXs0Nw(bgCSt zWm@v1X_=N>Y3kFd^i3Tv6|`x^mFl#nR!wlO&4wO=q2yN6A}rMi(;_SthN*v~c3|os zsp^?JL#hp?&X5|2X~mV=m|?}0DwC-*r1ob~K?R3RX4?jcJ*dnyz7)mf9kIl<(~*BtU`wg=AEn3{S^UyEhFTsL5E2BL!-`hOq=S zFHKe7_D&xKABAeFxu&55H7?WbUurj|p#wEN(>Q@zwWiLcOV^ey$AnB#gE5U0sBbcj z6Q~<9Ez?pDWLT!9uE#VepkBeMIvp&JrCxXnb2&u~&@d>Vp3bmtOI?>~-IjVM(+Ge% zFspG1mii3C2!J{x!>TRycBVyI>Nri8d+IYy7jo*RO)Ik06Degw{9kLb_G>c9Q?Or~ z^*#N65P+WPpbmq=Kpp<|pYEU9@0HTQeTeq=Y-#_0h5Hcrgy<#LUy{!%+eIBX;_aa- zc={=I3L(H@vOQIBo8VF4Q`x59T%;hc!0>hpa3P5H>o}42YdH(ZKl^o^cCSJHx#+UX zVCc{96xsJ3k-mLLp|&7xw{_U2eR{_Y-=N|U1AJ~et{>6=JEPj#gZ{!Io|Sgs?8gk_ zkK(S;KF?ycFEk$yy>KohVaDsPbpUx8hHB%Bgg;u7Z8ksbuB^#c$Q;@++j#hu=Hs*%^(TdXpSg?&?TfugM?FBms zb`Q*e1b-KtDmYDW zy5J1KnS!$fXA8~|oGUm_aK2!)-~z#gf{O$f3oa2{D!5E=x!@myD+E^xt`b}=xJGa- zFzSS}D(s5JfPm)VIDVsIH4WCN=9&g;RH;lOGb%6Be4CmQUbEPk?lxbKdS{21o_9j91VJamyqEGlQ(xmaIE$8r)BIWy<>2;3b6@iz!64bw1; z8ir{YMs-qC1-Bi-ZFnTaDHOTMH0GiffG=A(j+Cepn+8VIuF7pIg8MkobQ+qdz%^CA zOJ#lC_zWm2BmCB-S>2nHT>(W6*EE8mzDzSdheF*C zejRZ~tBRcPDiTr;ps5iab#V^@wqq4tQR6kuj;Mds)Wq|XO0rY}q^QYjYSN?&um}mS zgQ8Zh8J|X>4pvjMk2mVaQa2z)eT`{OL*27!PSb%Y!=oqEscCAN^(cw~XT)s*Mg1Bc zK5=|#n=Ubir%|ZywHTM2YJ*x?WRb>tZb1+Ai>A2|b@}*hy~y=bSt<;@P%Wkmk7LsX z*)$RA$dut}6zbkh6QM?+Oshh45i_g`(beBH5u$;BX+g9pQ-)~{U7qkto8u$?4MAa6 zFIFlBhK zWD-+`r~aFO(l3^60rq=V%>9plU&pTwa`t&lkZ?4Au?PD+hW2SLGr@k~2N>;e%<(-x z2m0&gec3Y4WxfhHY}n^F4%F98n)A^7raPhy(Hx?{ZACnSctwue=QxhC_W2HReh%{$ zd=L4Dp(c(8i%f3^+3613E3h4d81KM+Pw7oL{#uZ}L1GVi9k%UUpm6maj^T6I9O%0v z{}t$a5A+=obJ*}5&Mvdx;n;a>KXBN$%Y1g=lA-C@13tm7svvd~Zm7dCyNns9KxPTz zpCbF0ApLSP1q)gzg_J;l*~X=dLoGplPk&=*go(2sn;|^ipr;#@_CUip$3WK*-0tR( z$bPdDdp_9C@33DU+l>(Emqg8B9=P?0`w-uK=eSuu3C70slg(HEaz2FAHje?ti zKX{Ia#5Ch$L!`m<*bpf3g0pY_k@(;2(!>pI5gh&ID0^3N8*t%83FZWG)txI=KKU<~jF&k>P2 z!*fKW*Yq3_sW3f9MB4GWyS3dLu=ftadt|8T(IT?N@MsYkYkH1|>^40|L|OemJx4^( z4^il#1OFd`|Nr?MQSrRNr9Z{)rgBn|U*3cqP4W3>%jx6O;ct5Lne^v~sLP-$1C-RkJyTUF9$FYJT|5dEMtv|&EasGq*%?jzW{?5;q*PSih_YdH+ z1Xr?pC81BOb9wE9O;ld{1rG=w1pdGWBxdpfX)rw>L`pW7YL<>mneM96+5T@nAUT5% z;#?EvqiHV*IKy`rnS9>t{AiuZoZM0kVfqF43q(%Hs`{4Z3Y&G?JwniTu zg-zsxV}i#8PXK@50}?a&fHasgOiJ)dyzfYTx{w0rq4WKh4=C^d*%qR08$NzGByk{%q5tu(Rn6{}u zh=)z&gOh@P3!Vc0zy~B|@&ReURIb=?J;OU;6)88lh4g;U2ab6s+b9_7K|*fd9$#XE z%2R*nRd-HELh8Fe+aC=6(DyGM9@&Z-d~g~zkq^!Yo)tU?{DBWh44;g0>=Q}D%xVK( zaZ8{_(n+<+1Elr)J|LcgURU*PgAe}n@!j$zHk^In+jUMz`;0&BgL?H&bkWB#(KQ|W zgY&S8d~iYVqTnUq4}3skrg}gcOno9LIg_Mzb9M_JWL0#wAN#;wA4tyNgJ5^xk6&VU z>pnOL9~Aj%A6zZ|>Ga;WrA``~Pfygl{jA&vDQ0XC5jt_$7}yb1h)4@k`9 z1JZ!y+>@t@u@5dnDJeJkfb^Pu;8^xSNM;X)dJyjsJU%EsNcTa-xgk{={59!rd;zRUwH9F&D9an*6}6X_%~&4?cQ2Bes{%Twwt?SD#vTe-G%zj zTdhhZOyoYO+52Q$0!w-?Z zOxy=STEF>}15H@Wm{$~{<0e)&i6zTgAFhk}m; z9|NQCO=IdAC}=8rSsP5iov<8$jFXtAHa^*qf~jS&n9g8PXFEK>yJL{T(}s$aADDiz z4-@b#pB>-rzkH$`Q;$KBA$X;`)!l_mJpo0wXewU`y1xQVPeGA6JO`mEvfaOA*VpR} zw#nD_IS3td3>~mTBR>j;awwiVp;PPla4H8CdMag~22-7Xwj7@OygorsBcjs!Imdf8 zic`NN8PRW83w91z$vHk!YP+O0uj7oW&%ZaaPYV1s@KX<78F;`gGn1w}uO zo?ZN&{&^}M13W>7sl1*FJ_8!RPgSyx9~L^`pJ(t7iQ%Jz{~X0#08m!cU(%qd#`}`4 zW$HPkNC^V@&tduID`)nl!B1(Dsh2ln!mIA_viZh;>L0SN-qo-2j`bC_*2Ws~&-5Ez z2L_K1qHplx7mt$!*4o2!pXV@%^7%sWrQj>U*Me_=QHAk)>YSc(7XPSt2IU_Nw zq-R*D-voOJic)CGa^?K5EQRa8BIO#?7Gh|JmDi5Vq}W5RU7pp#L)%{Msa~ZR+iq-Bqdn1$P<{64&qhepUbSE9<9k zEADCO*Rmz=1;4h|@ytf;fcnC>u$p}PPVl|p2f>emp9DV(ei2kCEK08lT7cd)Fj4?V z0ng4gO{({fZ{Z|TV^tfyeetLg>fk$2l(PP@zwSx30~Dpy)ESS4`Z$R` z;6O?d?EQvg|4Y2REzmXvL;n3!#-)50v%5O=8|x|$33>bbwXZ(?KlU5_Umm;Ej5Wul z!guXD(`rvChgR_r=g0OAy!Sci^#fO+6_JQxgAt9Z&{GYaTn|ta=;jG2 zK%lzeIOh0XJ0UqkKG!+hhE(3A)u#5b?)v1AkAr?XpL-fj?^lu(tArHR&?x?HK0RaT z@GbMAT>-TAEXgX3pDnjH=btIOLmrsV+K_tM|#dQ{hBtVzi2UGddsM1Vg|bP1c8q#?!_Yyc*@9s7q0Pgs z9~a*(doRu}DB*7O{jwN&R&eL?PbYa!FPK5lM=+ycCP81p%z{}2vkGPt%r2Ni&`;1` zFsEQHpz&McPN`?^XD@odizIGQm5xo=&Xgx8I>UiGZS}XCa8OYea1UzO1>D(3B}@t# z$_<`{__9xbte<|Fi44-z`fT;|Nk%eIln1=W`tXT+%Lg9!M2; z7mvt5c?uBZnnvkX=vUB`ASf@IO7q1d1IwfWMefp6+7cV}K}Tv(Oyso9&lok~EbMDl9Em%`J5ad7~mvRM}NDqQMhEM-4+oTVDGk_xJBlsdFqYYEA zw>^7(qr+tp|7-3<$2-tJ3HEu^IN6T_+TV>O>JH*NMEmz640Ty$w)Hs}znj~%*R=wD zo}Nwevvv8vj4v%i=|n1!z9o)%@3k4b(gp;EAJ^W_UeNACM^tC}jVfx(x#0?G%XtLz z3g#31MKHf$0l|WTg#-%=77;88^ltU--7Bj~NV8b)-03zkskLQost;;2f}nJ9XS(RU zMj>?nWEdXpi`4lUOP{DDs7-t_(}ir`|b0QT8?UCHN%X z>&E%~K#`{u*Co18Qr*$}5n}&4&{&58jg#$x#>*6_)BL}N)ewvmVX9+>x-`Q((CI|H zR+p|1p?eGUY4ZN3>(bz`(qUBhQI|Hku1lQ_(;Kcg#gJ>NH^l`@2nGn26f7lJTCj{@ zS;0WTAi;8iNFp`?u3DiEylEWQL)h(RobOicG>ofm-^)T&Dgg zQ_^m#X=IqD9(2iw=Uh?pIUz+hnJOP;%T)QuLx##nE-_U;@&X=>O#da8mFI$T%BZF; zq+1rwRBlj|S3D{3Hm)60c|ehSOtqFu!c=R?`4-j6Yo}h_^CBVnci!;MjoK9c%Edml(g$BBsJdzyQMa|C)OtRN~V!u_6Sc7WsH^Lc$g|JQ$CaPQrj*_o%!GqbZZv;7$MXE=c2 zK!$@D1~DAW@LPsM7zQ&O%5WIN;S5JG3}HBu;V6cq0oTUE_zuVd4--2_vTE2lmTO|? zNTP|IV`(OKj)a=nInroi=g6jsoukBR*g1+wM6S*=FQG=(4y+Ejso`}|Orn~GkCNCg zT`9bd{{{Lhs1lQ!fYLFk2`EsLnt-|!k<=OMEGPl(fdCX^4Tp~Ug8>lZs(~spsR^ik zLhAy)6aD|YE*SR>upB%}1gP=dkzmk0?k82FE(Cl{c3sVlp>-i|hDSvIp8s=QP#@0s zn@!8h8{Htt#bp7UV_g^nTw`4r%P^FohT%Ad;~7q1IFaEbhLagiVK|lHG=|?X{GQ=- zhBFw>WH^gq7{l2N!x_$D7{M@-;arCE7)CLi57_v!@G(qeALfr6cS(?3lPZLqnN%Sp z(xeI@f3RRui{xrn50n~I592-v3aUnZL5@vKAB6#vh#M5&qM3Jq%#lw~ zO|wQ-)G&OMnTegF__>cLc(CB{aNU zApjL_(p;j=aOA*}?Lu?u38_%+CQbq^&BRHdQNz>eo){U;{yV5&X!j-#08O4g<6}F6 z_22l}04}S>Z}7bG@PU)cvG2;T$}w=PWB=`_+*`JCedK9KjO`*G*f!#U?c;wsa9;yF zuwcJ^;TN$3SRp>k_H*P=C>xKA`F6ZeUA#l(H0Io5EWXs;&j6HVU4eWKNJWZthH z-%y&ofhIIa6OW2@$Hb#zH5Ju-M#dVeJ(?`63RFW*XzJ9T!t00s*`J~ht@NKO;T(@j zKPg<*{xyEKz*zL5xDPk(!95KA@tDR?xT^leKKE)ChkJLPf&a=qJIh%(rdF_e=mF@@ z&W-o!#59%rzu-9@xPH8bKTU3+{^@2eH-wJqzU&+^HTQq^r}wV5zZ*ew&wJX~y%&uC zG%V6JgLw}>OPU=?7Z;>AgLw}f1Rt9Qia;N$W0($Db1XOH(S2c1E+3L%a*ni}xPL!2 z3Lj7<-U)Vcv!Nvo@`WJG1P*K`E623)-1w+$KWmNUdRmgLPjX`@|9SbI5v4sX{?})_ z$=z<^w&rk*h4<*=X$UWe z8=q-$j{(HD4Bs>Sz;FyG1>;9D3sBfGoP+4@9%G9?TbSz&!@bo2)_vs@g9mQ>}1@k?f0r%D$;Zgu40LkUc zSA`h17sFhpwUF=ZL*3Nm{8(LnXoS;D3u5l%MUtCNP1jM2Q>x0BTe$0;d|;RpK28g1 zf`G0VoBCdO&7Zz@qJW6oSP8{ML2kcmuO=PpMw0EPU(I`tY2YgqKg6{&Y>&HeqTo<* zd#?#CCF=Fst4&*Uko@>%`KnQd?VWr@$ugAB&!+Mj(TogD3I_S8Ys*L7NNIm)blCw5 zUJvpy_(`*Y#}6o<>)NXw7W({&@)<^y3oI05pKWf1ZEE5+F%e5!f}e8w1ibFFBKMYt zxCx4nxo6leUa?t078?AftUIkp{@mV6CtGz{CI{W2j{AeojlUC{0wr!TQ#&Eu8K!jW z9m(*daG+aXo9^Hy%G9pAinciLd9Td=miXs*WL+&96c$1B-dR_>E#zFYfbOA0x!6L% z@3VbxtxQdXbyY|=KWy*dun4C^0^K?&7%I{)u{$W;)@J@lccPo8*RS=B=*G2V#&kC` z^GCW*qPxYuVJ6Uy_4yY-y#AG4|HiIyuM3Rd3D-5>Oc9SGr7wh5vwCe3uOfV9&L;DOF7LK{D_E{(2ELp83eusjaa|hXIfiE$o?(~+ zXk5=XSolxroPD*MEwdHAQs$5c&yn~h-u@XEuUy>>-<>w!zx?jO9b$#MSLuxIIK8l* zhx-zLsVXdz9}*Qo)V?U|-$5pby8vshDfy8M>q%uE0HVWWW?`>((11V)!1SnBD4xnR z&h{iHI27yb4Ub#ZJ8Lx+PWTOx4@j}oRftFW|6qLV2J8&idjLBD?q#?SurU~25QO2u5#3@# zCI_^OF$qRGNsBU@9N-ZA1Mm_*{ANwj1-s`{HBv#s3N? znct;$RUZrR5ahETs6{y)07Us51Vs7#$?y>1e~=F*!DtitV2(!e!3=B22TS_@EFX_u z#r3A6eDtec9(|M#@`;{rhWWwqf0fVFv`Zmqp70`&%IB!a;^zFggYn#-lCN&g7wcxH zcGVvt@%jM6 zPJqUB*Z!6Nl&57^4>wgm{tDAYv-=h?Ok%j4;R=Q;8Lnc8`^Dq^yBYq;@C`%UmlWgc zF@#S^(Q6sQh721s#C_y3eIJGa3~?%{fH^O{M z8TMgxE@Zf$;Q@vR8RFhdc;9n|B@D|Max6a)Loq|#p9$}4z_0~F7lv*OTQl@v*o~nV zLvM!PFbrfkfZ;HPAq+<`)G(aFa2msX4EF=#Gt^Gt1JRX*$1uKP8OAY;XSjsnGKMJ( zH!$4Da1+DL47V`+f#Ft$sSLLYcD5m;S3sx1*=FY^GTsTZA{zK_Pc-W%TnjAQ z6fv1g-VKYeAPnapA!5fKb=wy_36^&eT0g`O&~{SZAspkCEdBzEf6wBZv2Zm*A3)6a zFnCqG{|Ljs05QBF(AN~u3J|Yt0kI{<9sCeK0b&Dl6w)Ie1H|<9kT1sff_S{v109H2 zfVKJ6-_-sY^Wo!+1zyBOMCEcE@~NFpl@WM7Noy53lS_uok)HYRkBDOch&zGL+V`pb z?;qfb7R*>6P6oPA?kDQbf7qbwhYgJ*7jVg$LViC0y`GSM3n1p70{@7=K{+VrO%RT9 zJI}C)$r)$x2#jkyTg=L%>oVCIsHhY>cS z9|hJ^`P@uT@zPwAFe})=6P&ocR4MtoQz35|(9$jrI*hzGHe)JkMiWTk228HUAHvgL z{1L0aFH}z9WWJ%0?5t06N3mt8ZenZ)xK9S26cWa&NIl{%ArW#+k24vB_LiQwlly+B z7TWS^R(xA5zJHD4Wg-o9bcuQ+-k`@H(K5QC+myF=lQf+VeSs&E)q_A)a|^N zcG+HN4xv)$!NQ5IUC}nTmn5^_E!UM^9|Lz-;JhC=zyyWE?(MR@tCpWCoK;V){w&g7 z%RH6l@uJjirB}wXy_f&mzO#6j+sowRWShr}yp}8BY0tdJ2s4nbI&bw6zmSaR!8bT~ z<-5|pZ^)DcIOn0?p#g0X&Bn}-b&=#&i-?VV?eG6ISc(lZ990@v;n_DN=gpPF4q~<2 zqOA93g^(tC+Vz+TUq#-ros{~;FT_{Mq>hKXav*2HgVanEt|#W~cXgug6~>>Fh~j zUNqP~YR9UA8=1Y2cYd*=*Lkm(tM^|1ykqB%&#|{|WbWA4nKGwo!hT-|o@d&M$UH*TL&ONZ&%6-=zofdD);{=#EtvZe}`v?EGRUgwNZu_j2mbJOBPH zI&?ErO!Rv3x4;d!go2yvBJXsWBn*84bLJxbnC-)Xxv-5opJtJ#bL(Kvx9gIMMg6gYb6|>&Kb?e^C_8B_` zi+3k{Ba+u|>nz~1)au=g9jl`6W{Q_WwShzUg_ASgGIka(ozp%|tkNG>l!+GK&5V24 z(hw2u^e3^0m(V}LQV>RRW?Y6y_uNZOcNDBKMT>u<^u_~Rv!(#D+IykRM(Gd%0x*IGJ9|D`l9gPm0nZQ_FjhAP9?2gVpQx*xE*ylM9}3~!@9_8K}Ndd z^r22Az+&OXu)ED7?|rO;#m|ub=CP7B;-zahhFOo0F9-I(5`#N_DVxY>>U;NoIedvu( zvmOjI)8s8mFEM*)`=yD$y*7KW|Ki!#<-^xU-WfV6b?(rRgpwr>Y@S_nm6}QpnMqXcVBx-+lvUdm_H)lg!@NJYVqRXrx+50;Lz7Y5j8d z%ZC-?i0njr{)7h7Z1Py;wRq)@%XYu*EQZ*ld(L}d6o0{!TCbit*cTy_Quhu+>xDyu z&0gWg%t^rUmlkwlQLjOzZPyNs+DE-rqhbXK>D|+1ICizdrKa z$VsV?#`TL?k?on# z91au=z2S&apDqpdUo_{soF7Y+UQz}B&NjE3e`?}oj>L6nEYe-*_F_efooFxVzA%kIZ1E{1w) zeIU)%B4uPyPyf`4(IKvW!*2v$T^~uKPRzN!=B+YPq;EnJE_0H+FJ@6!2D@&bL-d-9 z@g#BKDz69E8Hw8AH$FYACQ(7GTbA|&5|_vyTp65D zQWuHlk=F;0YwUf2Q{;vQXk*IfTpwppM)nW#PwhB1#C6s18%a;rM`BdgTaYDasYM6U zD-)Xf7nv}AY!|f~9a4m$iR@3s!5arX1gUc{85Fp$9AHbnZS&yeYC z^6K~tb`+rXG3pdaG9hqa{!g14@VbhVpBs3<<$xENPd0eH*#G&w*Wu%P2k!b~=MIc| zp1ETnWb2m1xeu_93>xB}+Q^FUL;J_C>g*ruZVta8AG9%YB8T?q4#na~2z|cc!Lpzq z_weChX#tEWW84UnxU`DF(h)3fuu0qx)r zC>jgx4@f2owzcc_z#?$VpRhs&LNSlmb<(ei{P#iAIY;K{IlH5I_0+V%`}g;ygI4|a zh)Nh)%5&vq508mY#doM~;UGhzYJ~Z^)k&M`;y;C(FLa3>LFIz!&VYPs^N`o>ZsFn3 zplEo$fOt&zrfxcKzAm0Nsp%pi9m;Z$iM-Z5$gYy}5RK$E!R z^>V82`_?2bObPK&xX(s$!%gDud*FQ!AT)#|u7`kvC(Rx2C`D1%ISf1?<^lCu_WBSdml}6q!7& ziI!+CW|?&*_ds<-jn6as2Ku;323-g4S8=lq5Yb@Ga=GE#y(iun4f`yTynZbA**H-@wxhCWAd( zor(w@0q+Mvcn7>gjs7IOYaaobVWx0^$so724h+Yma%{N9I|jWO@4v7jYXYu^(f_?o z8*nfmpI_+#GLMC7tAY!BYUF7k{0Q$D=#>l-+-iFIrVtfouAW&K+Z5=-18DhGd}!7c zZ(V=z;6e)aYlSkva^3;ycwWr#J;M(SKQb&~SjzAd!_N%M7=B?`&ai@^fg!3F%i|b| z7>XH67@9Gx2e@`Atlbw_0?wXkQuS0B{XrR6Jb0H!YcJEF0T6@~b0nwi3p@aWMGb@? zB#I-grf>O$1`UEB%$Fly-#fmC1_eP7vIvtlnoqK&L4zR(sTINA@g0T9*xy1B3Sf1F z;U}7A2m~PIFhx9dgYcR?7=loUA`<@0?l4U?6oOEmR~cp*pzqvNPikM3W89AH|G9$ zjRuT{08|Y}ZvAnyJq;QIL8u*=v~#2XO&T;7f>05#AMTrm*J)5F1fh;#Kitb6!i=B? zpaL`(utZo>2mf^)XzP`Bj`2P$Q82?P3~@XN5999&{38U__zvB-Oz)EzViIUi=ux8{ z722y;YAbvu!P;b%`dONG`jA)uYdz|JWL?>CA?uY5a$Sby>8BPHUh&RU+U@S2S#-sl zG&fLBg5yn*P&X0hGK>H;_C?26mgUcVQW4Woy}dsAEFHun;`}efzZl{+MtFUUVHU$v z3{Nw>!Z4TNHHLpPyut7m!`lq+Fucd`KEtOB3mCp&_>rMII1i+&GsEr-doolr9LNyA zdw}V2Pfx_542Lru$8aLU?-~Bia2LZp3=c6p%J2lBv3&1?e8>D-v3U}VG-7!fjP4^0 z&jK2!-}6&h#`S+IrZrUiQu^And^?!r8=X;>|K(-HX1RJiO*e<-H;-YINxt^`%kta3 zuGozEVxL+Hbp}xeD7Ng69aov}IPcdLw+H>Dg>dZqlRPrI<(cbm9LPqwJ9>Dc!U#O{ zxq~-o@BJzD>qz1oD}%zq4C}S`w9g#uCVr9NYj!?FH0oEOlmvn zlWS}zPOncFOY$Vr#&EeEUg#%WfY`KGYoDbhUY3yM<0_|AsCKk5R8Oh+Jn>UP-;j!? zonV&Bxp%93OJ#bw#m;l@2EqJ}dX3D7hHNDt>KQvV3hZZ|cZhd4C}&OG?4k4so@~w2q_i>gi69!g!5sfev%H?*e^fy+ z4j~m+{WoX>fQm#5GO^xBHwDtrqYY$}r{ByIU7l_^+#A-C*sa*7fz9KzoH_x1eUu>; z^5`}6HglzCV|ap4_J>Ouh$?Qj4e0Mfds3i)-$PCpyklAePgglUOWnW>On~r9Z9*!z z%F_D3KTEla!J>I}Tt05rb$-j%W`6~z@?1NC+eX`8^xILz=E!{ZF~fX4TCx?Yxl;6ugcCNQ-G z@88GDfyWBU>uYvh$nX+F+=JLSpGG&!@~00nY;LNK6{8RT3E~ldWcehr`!X4xWO$k3 zRfZ#2`q2yzGK5M;>3Ia{jLZGdvpnMpl-mJhw|luVze0RX60G$e4~_&KQ{JIX_5--Y?hnf5rU9(*q|_Y?{S)H5(FW&9I+Yn%Xc(rG6W%E94Q$%RG6qa1%i+_j)X+q zT1Qh&g&<@@M79+E2Ji8}nx;Vza=c|kZWImp4g!!hnBhC)8&4YaJp`c?2>4vuaiuy& z9abLgDo^S_AEU6!zM4@`)%T$=4Et^?S)>kdAN;ci5Ed#x4ckeyRL>n_$P#QP^rrS+ z$%p^dcHRZ=DuXHpR`#*EI@IoGeLXcTNDu91Pof!c%ka{hj9}vqG=_joddSLFTb`^C zA5y*Yc9E6A6!6rj;ZZNX6tZY4BO*?=)ySs0nitk0a~1q1R7iT% zj0R2mQl0eBx40t8Y2VZz6;8G*8cbpBf8D680ifsfls|05rXq5DIJ3)LhV z=l3Z(eRnrSF|%>KsKyK6ME7S~Ik(r@5z0sU9T*>~T6_#G88erXJsZfz==JY5scAqs z1mJ!Dg^v?617*ihAN+w)RvkY9A9ozFI6VH3`Y0SQ^5J}ej}+uXJ#yy#6h(C7dW#z` zhLgOTz{h^)B1nN5J2F0;7&CKeu0ONrM(a5DI2qgK2Uauowc6bB=5Z;#SchEd-&kIr1Q; zKuEe< z_Nj*D0D^PYC>zVq)C@bIMjq&k!W3XAkQSiP%!9`=KH z^zD5a`kSP`xj)dY=M1YY4PpKiJ_qAleX-?d>Puqr*|(rE$w{&~5Gd2n7Mb%ZNKz?w z;y(JmgX74LFN2gkv5*=*`ky^f-e~-6Z9L(#%Nxa>;*OO!f|(04VM&7KMTLxmy@Paf zwDA?=5|_lnBQf~KvxmKXd3c5;N{gv)RtMoTY}FctvzN*niK^BpOn$RkkyhsHk?R|S zcj~!FZ9LD}$f*Ia|Yn*u_n9ZZ}ZTH_)70QRe&<%3Ya^^Po@;;U@gs9|+7G zIK%3Q856#lv67l(i5e`T)6@!^?NEuz@=;lPU?Ryk*K%5Du>wT z#$y0{u|dW)5~(|#7T8y%mjL^YHuWj{NkKAJ8m)U97*2S-if5)md) z`$B1)MPFEkqO@?sgrJ_7Q?o@PUH8)R)j^U-5ufeeK-lzDr6~f2WSp+)cWcy`6@i-% zmwEfbS`unb>7gQ3w^@Rk&kq3${{9ePk5eyrAE zax?Nz(pu1=IA@x!gDqI|UNCIUoe4v3|CkdR2fog?IIw_Rv zA8``iLVCk2(Csk?8rvb3Xe^|;aCx!-rY59&a-3a@6tlpoTg_npS5phJtud!r8h0nw zMWSmP;M?f3oLKK@qj;|bT19+>kJYk*Zp1w?il`^+meAfL^dZ{?`0B}W3H5dAi9S}b zW0K>YB>dz`(Tet}JfBTC+e|VgXSgFKhbG7K2^OTFRe&$g z5^Xg}q~0?G62bBxYKZI7fJ^h;0V>Qs3}UV~aY;|Nf!%=N;QxwsnfQlFz7iJIxPyFP zamsF&0ACmLlw4R;-n249m$PaV|BaBlH)%HH_VdAUWA3+PmUkm)y1*AA=K#iU0u?>lm%T}KzcmcB+mn! z>5vlSe%e=9I|(ixmCLMj zCCTx5Km-`R=8dDgCunH{xcM^!-Gqv{aQa$>8?TbZ7Uty416jd-4Y=;vSyxO(DWYu&)!y# z-zLXbj>q*-L9Xt>+aWt0++D@h*8*3GD^i055k3da1`!{H$k)u&-pa>rJznmx?)h7&DfUbu0jWQ+I5tb|`xJs1N6z;jY}%>XVN0q}c(!b3I|kM}0%Xz_V|9 zTcIz5+JwHWtEqh#d=2gKrh|31$9;ynq_6q%$jYA2vyk4k4m{h%&&p}g8fcGu_*oq} z#d-KyVS7wMNtJ}>%|N@+xX)!aP&)00cs17t6eHM()s|&0l0H3%>Papq3QG{LSmuIl zES0Ukdqpc#+2#&eLmOpU--&ja%jpa!THi~oX?@pa1o&=mP3t>dC+BI(A3XQvB$d?7 z->u;;={D_#+S%~LQo6ZGV8CQQE72(6k4*QoI(aH4RNxPm%2n}KPWcO<=3%cQQJ%YZ zQIodwbcg2f=#D>~(tTokuK?DhYi_l&#Nq@y=(##SNmCgI|+DDulKV$e=2JQ*2}cT6*YVYov$WhXQ;Tw4-_`go02Hi-D;ZHT2Nklm}Tu;32ne9`1#?IR3Tk z*<5jKPvyi=7suOB+!rt>QfM1E)lz!gHV~@1iY(^rx~B^c`{?ljzB&@?Q^~_Z&qH~P zhhVU!V>=AM!)U>lG!amDVRpW`KlQinLUpKE?h?P$nO27nPztUoJrUqL)6+-~JxqB> z#Qt~VqjlO+*c_Miy<7kJ+nVPsrCMd+SqFcs@#jzvE&Qz>pW^KOX?=(OcU67p9EEz& zDT)Zc0(;#K7E#^6c%YwWaS>j7yxsH+Sh^%9HmBOKg~D7Hfd>!=922{xBu`)E;xXBm zOb>TShj$rdt+V{m^8jCXmjN46qtEJT%EQ^Fz{9Y*dFV6O#c|Jy?9rCI&Qj`OA1E8( zZ?*St;6Xpo-|EFFpT3NT(bYWsMR`y)VmzoFEFOCq^PqoW%7ag+F%P@EQWPfy9@LSP z2VI7ED9tz%?@({Dan1|BtDalP&Q$1XtM|n^mcb4xdGUmbCl!t;A zz{9<|d6>S?#WB}%+$I}7&r-U$d0=9izty+@qF?&S-|F+JtgW^6kUyXLrAi+34i%@G<2f8Qbvix_P*s?BW>uanZHryvka7%OOzq(ckJ_Io5{~f2;c0 zK5uLDP%Q9ZSJ^%&mc`XiF>W79y@90~T_8p8lPIOYa@1UrICt_tf7lXReN9wOGcI0io~8Dq<HDk1@zE4(8?-1t4&}nzcha# z)q`6l52|Hxiy05SBSoUz?#}~Lf=;vN#lEz=s+b7HV0RTBo8d@y4fOT+hBgtqp)717 zrl+|4xC8hSnriBsdYkeQ;0k<{*3HND4K9wwuZz8#@EU7rWQ)LnF@aVmhXWrZG|=j+ z?3iJUk2$#If_|TiygUxy#=BW`>?hbz)kubHN+4|r1Sjg=FGX=Xg;w4^8>rFf|8SB2 z(l$_VqUb~Wn9`}kw#?ypop!I;?BZyjoip5m=dGpXK&Lj)%6A;nxg^laDLW>b(K!NU z8>>mcY}KTcc-YdxJ*;4$n!J;*3bb05H<0YMo1Cr}2;^F?rF~r1jCE}p7_c5VhPVBi z{wcX`Nsb!G9ZF57^IMT#KT~=OS^>So>ZbSA4=#@Gt1ex)=XKW7-7N!UI|Hr4zXy8t zzXw{i&i469pqGSDdcT<+G|PzI_va4QqBmw?4SMfDmd6Epe;z>TO@`c|)M|SBn$o)) z{rjT2>DBCUN%xRs4}*OrK)$Yl0S1t77RuMGpH;`~tdc5v!4Al>7V@4rXo3?VHa+GO zTFCw2X)RB`6-H;)+HHV}xs_--Tx5@yil9BziiP1Yvb2T#m+^tVxFbfrepX+>ju>r5 zq$t{KaPhz$F@*Nj-<0+Oq_bKPNY32W*8Hi5FX{jBz0Kv}ozXXTac z(*l0snE+;@SM?F*Evi`;!k{@o#_{v`K`u|N5KgUji(7Sx~QwxRx{U{av3 z(?}zK0-ubi8fO&d*kB)_q;4Lb9t3|fFe{vhf|X$hTpUNY4Lm!#AGEJ?+6Ky+NPD#v z+Skd|?d$szp?$6L>#Z$1jxzS^{PaMRevZ!!$gyg$v0`M3;x0%X`Z;+AXcg7%Y9T*2 zgH=)LO9D-K*iHNWC+e)D(TCyTz4ObXBsN$XaLC2cs$F2fQskj&yFj-l(vOS>qdvll z&o%p-zj&6;2BL8&k3PGcIs=wf^VwxoJEJ~xCZs+znmWY1N7Nz4G~DR&^a3cR`q||h zQywy%u^!aTgXXA<<7SJHFzEL;k^a>#@a(RBR!*j0*V2@F4PG9U8oUJv_|L;2sI*eOp0Q~MxjQa@9AgCgPT3@ zkXttoUyi$^AADfwB#IrXj6Mc!ZTrB)`>2Px?E|Makq&Jy*wV;qTjCc5LciYtNAJq6 z|8Jgo(Z;Hn@UE6B{%UWeieyL~6)Ln%B|_VD6jV`Cr3z|K{Z09Z!oGh=-F)1->f*S~ ze2_yEo^K*;>Jb=FZ-AAkH*RBVKEP^xHfLbEm{VP^%b70dkS=_)5NJMitbygbuqw{hsWmOG6St5wCtq6W_qSA$KRk7x%e@=@4zm%3=geE5 z;IhVZrq4advC98OEH+pkerV_f{`caS3Y;@Xo|hOh%gX7TIrv;2@DKz%AP%Oy2=8iW zTcT)89ws?tgCDMKbDBnmw1-1O=Mc#V<@ni!Wo6ng6%`JK69y^yVyJMyKz9hlcQqSZ z6Krj8_~+*BubT5}8|mKDhJ-dnhO7O)Xo#F>9e?xHrjQnFQp6S^^pyP%U{IOAVQB z6{r??{HJ^jG3BEW`Pf`HAAM{M4u`%BO0(uQHqy{+L(cFbL;7&wgCARD*qogeEbzgH zRr4`!Ir72AFrb>dFBjjcbi)b}3U1nHa z0E|`cI~HupLs(<1A9eHazNx`s-A=z!bDp=6Hala;Sz2TmHvxHA3Cv_?X&Dd0s(Hw# zJg_kg;6c4y-0q37t6J3xFKh7d6pE>GRqFGlhTKj9532+o!d4ho_j*#z!%$Nmb~^(P z4rl7Lr>9Co+P2V1*3c)nk=_Iz4ip(2XCV(qiwwVHXYH!Z!;BTQZBG=Q*|zZH`eX8> z)X--?Ox+c_C{G^3Wz8;1=NxKJI{M63*tNoY`YOW}7+wv7vhbO0!4rdXeyL%F(KFjH zQ$EhhfsgRI`MB<2NGp~sGMMvv8|m5{L(bD8!=w4gM}CoEPj=RQ#)nb6SS;`%jAMW< zG|R;=YU<*CEnS>;FxEv$sUg{0(8Vi37n;?E)t`-YG2D~~cU$1$K;1l??r2DxbAQxF zOFqv=>V46WV_6Jlggn?38xCh@nHLLfhLJtZUrBW#^ml=Wu;t=_=QZr9J6_hXr-+V5 zJm^<_G89e}c(5&|b>h$_!|D;wtL*I%7@Y3k%{)?Y0_fg174q+&ehO#H#po+%PLj!YFlX(6t=C{(BWUuhyKT6!_{n` z4aEjII9cULm{>nX*{8c9E%Al~mL$A^1~BcOmmy8|MwpJUg3jAe=;jKon=lrmdHF>f z4EMn6$-KWo+VEa}J(O_}45|8E)+keY)s2DP19j6I+{@sgoH_WK1Fx}_cD`cpzXU@6 z0Q8dU#fID2G1)*byvRa&`7z4Uo<{Vl({ka`gx6Zk0Oxiv>~0;hhQZS@YeN^FSnYuUT%Y=$`uuQU9I;bVqR7(Qe8iQ#947Em7M zYspZ-5Z6LtxG%%r3}GS!4ae~>jNi-f2*WIfrx;#jc$wi9hSwPW&G0(Ie;D3mc!%LV zhW8mhVEBmPQ-=8r3mE>(@FT+#hOZdDVfdC|F+-e0jQqj0dx{2zI5Q2yIff#JVul}B zy3c^ddc2zx=;koTYRhddnZ6dsJpN*7PcnojJ(~AxhJ_4^7`_KI&hy|!n0GbD>N^MZ zb`j>+h^0Hv@B+gd3@c zWnEt9CtT|Nd2>&gXVwtt84bRmj`iG^PFZ;c?v00ix?rpe(~YS!ovP1G>+co~T~fX7 zdot*}c7CdlL!10sve+oy*gEsm3>w;W%e0|OtMd!3Go8-k(^p@8e;m_g3hN+ZfkvDc ze@-gkLUtX^a1q1B48ecV^gP2Dz}j?^d!w3O`w+5pfxJ=dd?&m*+tPtdm`An$Hhlg1UFr)rm$vjyB+iPI5 zNu0M~o~&{of{7+^v+K>TiW_Ybx5c754tM6FbhGjr*;L1kG>O~WygF`-NnC_~b)3c| zuG_%sxUnX26~WbUp(b(HhF8apGl^R_wmNRSN!+)`s^g}Z#BEAlSS6Q9CUG0L32|uu zKi6&7U1oH+^ZM3`VO9G^d}ETwUlBvQ+ZXEK}xi1~&Ab_SdcxOTEIpB63&SH0IO7LCc^ z^VmN)jiFP3W9t!uIdSAniykXzP#gpyQLuk-vuEWrC?0~4UiduovTKnvXbA*i(Hyxv zJmNkLS_(l(otW(Q`F$u2N`N3_D9G=bga#x+0CJ}Iv`k2m1Odn*M`mB{EzDeB20d6%8@@E<-!W?<&X+x!jVyz13S@FD?Y=ptbQlR+X6X_5_Igi~(e^EQBJ z6A^%DYmp4+GMvXSis5{Q3m7g0#3LFIZFdpF#SFC!d4@57SWYa%IEL|ncr0PpO99u; zg+0DGAzZ|46S~Ams(R7hZB&sfL6I$?esQE_@M+er~D30`-mc5Gxt$`rqQ%u6*Cb-j}6bM366m55iXuw(sK%RnjElr{U>mUGy z!jY7lCxm^U*FzA>PeeN1xFk&APXRVi_ZL^U_mKoM_n`3zn~Lh5~u3gSrj$pL-nJ)0mClqp9RpZsP94cZJrD0ZTP ze=GPmwQUHZha3EMhyQ`XCH);|bY6KX%&mb9#v$M+{O7R<3D9eLv@iKMbE&R*LPwnQhldW9ujb3|_K4LG%{KQdy}d2r5}RB>K=edkSoCDr zfH`OQJQpePv$XDc@jXoUvehHM0PLN@I5IrEf-7Z>h3SI6=7jAqJ`mE84q(% zNt|pcn>#H_S)HQN){pNlsItw@cX?3=N{GDhnDI7Rty^`NwzQ2mlVO= z#^b&CJHN{_dA!Iih!va?%7+n8WQ{O%gplVUA}3owO`MV$>6EN`*O``hO?v z^cQ`^_Jy2%*J#B)4Xh)`@zI}hB%fy|KXWEd&GDlGO8BTi6(_oAfs=~airj57UaM4p z0!|R9d^W|SOQ1EM&Q%e&w+vB9^=0sgBj*klo6^A-ppYsj-y5Df-7E*h9`d)S>1ngkNQ%6sRpCWjj8(?7rt*3RL>l;2qb*UHf$P0@r%nuy%&tskA**-zHGetNe@h&)MC?)4XK-)@k zwglHCr|?Hn!H-7d>Q}kg4LxV1WQLnf@D#e=pviNO%jw% zG@0>Wu$tw|X12EY9rp8V_DJ_QXdzEBpQ>Wd<7NV+)S4V>9t-3)2`1LTU=Lv+BO>wf zi>vPrF9uF~`}k$2eDC6ttw@+cQrzm+Vo~m5E1cIYDS_q#eC|E|ePh^Y zLG?r^LjUm`E#i|k@sx=^Sr_!;p7u%#Gd4!u-ThhpWch(PIlNd$O)DNwSli>6euxTuP>9kM?Cg@3+IAobd>EF z{?nz*VbeO*zu2*K(w!BT*LB%pXMO{IWw0j=ZfnsFYz2;;t!MPryRDIIgoi~Q{x)6U zB=NIt8WKrM4(h-ra3K1;hGw{5035^CcX3udo=f1tQ^STg z+jegk4d#ev-fM~2)gl<b5_V@R^`#es*k3V`*#5R1I?~JDze$%v##G(?H&_F<0IatwH_OzcZLMs1FLNs0$i2054YXO&mqsb=Nnx5+iz&Q(|5r=2*cZ|Vk%H`l0d7v1G2br<428sie-_nNix zdIObcC@{ zPGyOu&al;9%+-bQ2~85}EBN)wr_GZxiJq!+j}`Qy$FC+a?usR|Rp)d`J~ta}^dA-u zO`Obq)$Tp-poweZPnc8s+?RTRi{O-e6c;n}4`sTC0r9wg1Nqx8ENz+^pyUK2d$m%( zrz2FUox*RE~cn%4Muw&*;d?p5!l3K6 za8CH#Ns=&CFEtr|di5GvnJ|P)+Z)as#pjqiq0f(v(A>$Y5q6CJ-Jvz8ud?bE`*vLcOO z>#=&Ux(huIthDgM)*eow={)3w^4{Gqek_$YzbeWq3A#^b1WzC1vW9y4Lh$rGC0um< zHc6y)QXgh8zo>J5C)>{7&09TCao_S8VSz@psQ4rHZubmg(5> zv@e%UD--F`C$_3jqlyct*^%?9w}y4(!hn*P$Ak+wmu0p_whVfZl}oznn>#^I$EU)w zNuO`S?b`W}0eF|xR{J!4V+Gzuk2HL4ll#~4l@F0bgb{t?% z9=~^r3R*O<3^**-_KZXKhL73A9X1M`=l+Wf&*8y~XgU6)f@liy&Qramq_o&P){$vn zpPn{F0bWYT26j4qV$re*%~AsmRSS~aTtv)2!;M;8CghNoRlR=feW^LN4AhA9GP&kn zR=g7ws3y>5d)kD*(Obd$py3Yg5;w7uGzB#C7fsS;N@&^`O#7vac+!7MTPhav#oqi# zkGS#wE$wbgAz#|__YhC`Z)p$J7xKk*aI@Q2i?S|y_Y1snnD4#z;{Qs6UPzmT`5tT^ zH}1dD5U-##WT6}mca8h6ayZJ-v>fK!tG&2N_0{zDX^GlLU7T&iKNl-_&i#$XNqF>u z?ppu)>S9i&SA(Ifq0dohDDD#7CnC`(R&-ZOl}e&gjU4y$6~p1z#acpg|5Z<;IpWVq z$7fdz)5J+VBA|3x-d%Fb?0{gg%QSqU}xI^eRs)AB5RJ_8?Q?&^5X9ZFyR0Fcy1g2yK=yf*)28@RbnK|6C4hDUkXRfXd%z~MnIEKMeIcY_L_cVxf88v1_`G&@}DN2_Zt zCzTRe;;^YVKWZNz#B3tGg1*8uc<{sQ@;_=XAHnd)0|iZE_{ecL?ivn%`ly9PoByhf z!X2C3H%tpGf$+S4HG&Jl^l$)&ng;qsPBJ|YOK?f+8x^Oj90z^wb>ylI$1(nrq1B|? zhV$t7CByAGwGF4Zt6@sRE42;hK@Wp#e+;j~aNOjA;ou_HxxLCPvD5e;495@&Q^xMs zHk{9M4X#%(yr$ute^{R85nbDG<`$QyIV`H%aL5Y5aCBfeo2I??&i&7Z^X=^Nv<;(c z8%{+;dD@yWwG1cf$p`K8`Lzwlt@wlX+M>D*ht~>*qXxrK-`HG{=Tn?)bhvt)Ha_T-LLDUf{`sR zpr5mg%9ZLj5w&Xf61N>)ozE9sfQKKanxD1msk6jDCPe;nOUtyv2yfsgi(fM!G{Ihgl-Saj)EN(U7= zAM;06(IdFzVXzllU%fpsZ-Bdc!(##F!Q&4-;vi+yGMirLQsK)q4rH>J#OQ6@jxD$R z=IvvUR5#uGcD?XY0jt;1299yMaWU8aDy^+GOnF#d(wg>~kuD9Ti!Ta~)*PjDac3?R z#lU4HUG8#X(ExV_uSJ&_QqGS&d~Y1`Z5I_L<*&du9d<7nu_&bI3!=mvL2FH`&_|zK^2N%@r)$!$)a0yaVQ2R2F%n`fG z+V!e!UyyS3r=RB^wp1qzO8iWwQeo)~;n4*rkfQJ6DlQbI!)2wgf?SDB1KcXTmas5o z(d{E?`J5~w9QEkqK)$DXbZWY4b->amK+%lEiJraSvPzFpB7VGM%A-2;h$&x;zM^eI zvIa8iCo|CceQo9!t??TR6lFGq{p0=NveNohE+n|k#5J}KwXGjgCge{WoGMl2or5Mm zM!E<_XNg2Ks^I5ty^c&niVmdz@Vpc+p<+^JA8$jJFPXUoCUt1QKM|tFA3S(Wsdu;g z`yi3@g!$+0g?SeIHjY=R`-|GPjw#>nikmBucnefCBuWv1aYPLvstlrN zb9TW~$J!;s41j{0e;;*)dIW09YDT(BfH!I^Z8+74#NB6m*ESZXHt%vz>?!7=B()bi2wAm!<$J$jxIDfnlM!|y6Nge||+ zyA@OFQrhXJPt!XMEW#I+sI+d^apz1#IHQB<0xL86=R=-Qk*6o@Hjy}1io z_ZdN}Zj_i`3Ob~%fDYbjHo!SAwHQ8i#bE!{xgmzDRSa8FhA&?3DcJ|*utrJMn|Rr{ zcQ2`fVMyt530AhJs`^;8U6%_->e~xp}nf`^skusU5a;8Xerkg z^sAWonV$315$Dz8b9~1SY6$J!}-DS>tC>%TytBQK@bY%7estpbQ1WUdgaT+JM>)OJ4miR zck<1B_^riv*t^ur2cLZ!K_vT>m%|mO=2@MZw>=xS3m+NniXkLx-bwAe`eZjhXLOz(kHq?7A>IL$=n8zS4mACvd28pLXZs+A4*?SE33E zP0pG3ZO%O3oO#=G=HUX`Bc%iJb2+vT<*pB>#YKJmr3Ot%Bd zCoUL*=K_xt<@$5J2Oq+3Egm(7)K?D@?vEmp{mN_MUUaqL(MACKqwSLpkLW&xbQTUMinBa!xgmYBTjY z-*u1b(qpc2+vE{9?^-CXhmW|x?Rq5N^(gS@BRM(UY#WBe{PZa4$49M*Mid5}!4Vg- zavrsU*F55cd`_ZnEBz`VBQYQL?n+28lW3j=D7QKFx1le!=$l!>tDhH2%nydKS75w) z5qJ8L{KTVk#~%frel+c3JkfRSft!yNFLm`u$bePQ@xUMQxRdetdrcm*D<*!km+^R^ zV&WZoF6i+)&|qxOXLafE;_z+#lQW)36t}{sUf_m5lMjD(Zpt$`i5|8ML$U@wJ2&82 zD{@*C7S&u$?u6%#nZFEPh`ZCvTj61qm!2Uo{%;ZStX1qJVSy67Er3Jz`0GJ>O#>;6 zSkuevwxz?i6%5<X%j}hdeM+K`L55N*<_ok!!A5( zD?JVqMQ4?Ldh~GdV!~_7KF!9!R0y0@_DN2DAj)=X@*q6#$>POM?T}Mo?fYUsp zf0E=>5X2M^nI@B2Mon_DqpEG!3Sj^u*Q(kAF;LkkceGVOo$n&Ubx^B#!{XPGk%v$B z0j@pWM;lFM-ENYbeu5Syqkd&DbouAtGWA!gfwdqP1YN(%Yz~Orz)Y&Wk=A6rGw`a7 zs{z!BRtdoCr#UL@mTt9VlYB78Oz|(XB9NN8#H@5XAxXVIwcdiiGgdZbyeNKgpLc% zivvMq9$2Vpt9u~~@M(-RHdo0vL*I=rCTQlIO`jn?rdW>mf%@xEmYwvZJeiF9?hz=oWc@FGNUH5EVRp6Z2R_aoI(PS zV3d7(6b23jptgN`UliWi#t#hVetYS28xxaR3EJhK+juVjE?j=m##j5k{GyF-!&6P| z+i$|FqysPEHYP%OD%{3laOZpbcHG8Yb-ma1Kd$S4JXQCVjIKVtKlb2{W}S6EoECfV z6P50)`^G-xv(z{C?FPe1Z*_EWIVHfISb{QT{3=X zShJhVOsR(A`$7V=NOMGa`AlK$>tAk4X&8lC+Oo;4y>JQJCn%05C$o0pOU&_w!0~zf zRXFqJ-W=awY49aAR=_(4IkeZMg#@@vrKo|#CKNTy;m#-rOpX3F3Z{!UFbt*OjWtDC zecP2_D}tjwDL$f1BsgXEp~*PP^34iot%C`Mjk}$5ga>mQjZM5&*suh*Fi?_B9rcM- zUXmp!pdJ8oY}s_=H)QgIdJYlM2WA2gs3{pvxTKdq<^TP$=79l9S;yW8dCpu{j*On5 zflb2KmA6lej$Bt#IuvPkXa=gs+CDaT6V?p!jBH7O5P4u1#GU{+mz^vyo>|heIegY| z3wzGd{}hDiWSfHG=1+v+=}FEANEfDI3V3qk^KcyL}=fiXJ& zTd(X0o;R?h#gX5p8s;PE2Q`GRM5axAr}8|tR|D<_%P}rcVPXpMAL0X*L6NiyU;XPN ze_Z)LGbbYEdiH+H))K)#6ExC_r+l-Ake{r2%J;WyERmgNMs(MlWb#ovVA?rh(<3*{ za$lilc$~r5KZKJeM zm>l?^R?zSTluf3LDX~sD2PgEEEdui5&_kx6h@er+t|YF5j{}}%9t#@v!$p(6? zLXv2czK2RlT#B+zq5>#GS+ZnEdVzcbhXH=YI{CfBz|;ur%p@ZFtgiQE$~H474nW$}Er<*rWXPXY22G7* z3Czwi-5}3d|NOEsk>*Hp&OiTXDS662ALfP7DhiTKbZTubQ0W=qS6bZgd<6PI584X? zkBT88532&avW5-)$p=1Ckl3IzyEfs(3u|{Im;;GyNC0z(^dpnNbaOII*>Z8ZMpXu- zhV1r}A3LA#i+A8q95)_WERvL8Fh|F~b)lXupkj!KIw(?QWl&Rxv@co8Adioqd_WA8 zMG{DCVY~UspHbu=h+{k+{Y%NF-uusGsZe7 zi{N8GUdYf!faZBh*XHho^9s#8EPjRqbo%dI^6)papF2;?q4-Z*cI4dvvtMT+!O*+s z@UG~%n2#Y-wwhDBqA~7||AV`aH{fg3iTl|7;a>BMd*hCBW*vj~lXTn_bE@aq+7Ak1 z^30y4TmrgPV_)qx;~M26rltt0=)Zqiw}!HmsB(jsT~MvL4L7=q?n=8hPS6WAQ1 z1>e=wo;%^{Kl7~I{|SZ1TXDxyOoI^hG*hIP~!U31aX%U`L4#apll>u^&^il_pTG z!2_$J$FE0PTiJhGwtB{xs|_oTZG+6{I=5l~2FC1;F~_zbq7N(>@pOMS`LODx<-Sv} z;tI>(_7u^&B53DyCh*cM{AUa?v_;VWpO9PD+$m6d5>Lu=I%_Nd~GC{>S zx;Sa|%R1kgUX={pm7cP-OWb`{wO-= zw@rv`G>UK4>j-}MWZWcVzl}Wx(iy4hi}zwd19+FJ&N(YeOjV~{hf5IQF5s&{wZ99X zu?BffT4~j6jMmabxN}{eufM76AiDD4ornNz{p@W5>T(QY2ct6w2}N^Q#t?g^M5u>LR#C|H!Z^( zv-o3d8#sR1uoJKh5*QfUki}=gqkvmvy_OeSzd`HuR>SB*zM<(^KF!ZZoPL#Zdk7); z9u9(O2wGd4Q1})G9%3_$K+jT^*Ct>~DVRzFCnETuioLX7$-B_!@9sedB^I%s_H+=) z12y2yL+L}TCPCBRqSYW_$9$_R={2{*gtiJdIGBcTiE})&dE`M{r5e z23g>{QxA>HkssL0x#Y<)h$HVJTSgv5Kpl@L=J>VI*} z>qp!^WLp4Q2pz}W`{mDe)R-w5DLdE}`{e@`75I*PgK=C_;Olu#giB!|4s;NhA6%-)=JbI#&9S6_tLyF-2icT=93n6o|_ zx(v5HLyf~2S=mUclF;8i3?l9wI(yNSDcM0IX#4Sq1?^80%2;IVIi@>1(UP$8n`obCVn9uW25j>gN6_RO~${q9ML4f@xIU2J($?h=va%dVMRaqQs{zoO$8p)stF z`%RBv`m#$b!{r_kqU%Ten3b5>sik#na)nL>Kc*l~n$Z$~q_kFXm{QPjbIHe{wmd<$ z{p5m<6PYamjrEDfND2w5CshjMiG)Q2Qw;&#kC=|G4)G6;=#T!Pp-l4qrp?&;{0h=7 zw~UeVI?6KA?fj-GaAtf91Id=oHV_O(`x%5l5v;6oH05`I-+dwH$GgTC{Hh(nfk+>Y zARqJt#Lnr8j{t~^cdoVJ4|qcWF1yVnciLY8QpT>v{0pH+*aT%A_xo0qxGqS`?2cR(k+zSW zWL0tO#&N%qw=wDAZcc<~AG_8vz9Po_l2zwO)YwZOTB$>R)Y|Nr$nc26uYy1|2u}1* z<~Gf_))bo92T9&9aWC7OI|3j&NC}Da+@?~T2UH>n`iyB2BHZmCz?)@sOxeMH(|@1v zk0Xg99sJq#mWrAf^91XPV*qC&E1QY|{_Hx-bh!YE8{$X9)PeK42gr`2#z~|P3~~Eu zJwQ>i#Qo=6(S-r%V4Go?r>tm+dn@EzZv@Et`{tg*KmO8f;J$uCoa`R+1|*)raIlBllk!SR2pRu zYhujDzH7GzWQA8k*sLw<3Mh{t0C5+Twpvpj|?WuhJacWMC0X{!g}GXVO;wF z*fo1d<+#UH6SWr9C1S6uCUAA9-emTzpb`lLcV;a})+~Kr3-6cY1iqvyfTKI98OfU4 z?HI1_O=#^S{3$ZW@lXeq)ce3h}7sk6P0aJmn1>n~}7pgF^w`tGgAk@V=5g2z#w&6>2QK zTZJ^QRaTLv{9g?Juh;6JW18rniogr-3$InpG4LA1@UJ)@rkf)1k%3|ji!7w|zhw!{ zkv2)1r3~$Fxr@9)D&Gl9vc=G(t%yX{`f=_rm3S7`{$>c zhKPC^v8^X)vTL8xi9L0aX7P^9uM=Cwa9Q)gU&%)XLtXIOk${RJB2q;6G{tTEMXpGD ztW~^oUTyrPzp2lYHeu;*4F5z` z5G+UV_@7Od$u;BNwh6JnY1ca`xT{#MX)D2SS#LOGfeFw{Z9&nek0lz0G@dqetiG#? z4leQ8%oNOhVLzMIc1PuCw?lLDr}uFD&+;7_Ck)KHqmtv75wEP+hfi+JRx_U*3Vd>C zCnU<6tN4h`W^(FL9?Zia;3=IhDoH)PSj`aJr@b%Cu1&mdVVonAxAFxeabp&HznNJm;Dh>?tK?~19b(iT@pYodZ5YIxx z*Ym_4W5s)YSl&F51tGE`M9Y2VpZ3bn?V6)%38n%b#PuPiQHCTk%6Bz-$uJIZHIkVa z)}(Mr-XIr~!KIA;FH^XsfksbF4AWC!zUy|VZjY1v=-QXKe^PQ5As#%&?NHKQC(}n5 z4*eMb5O`FKiN}L4Uh6F#)ucnxi8t@VXs%I$=3IZom?Jje`kcrev2Ik;V=hQ^p)4S~IzY=Z;tsA#5>1 z_H)F;xQf#-JdbV)3c_z1KBj3721)^li(?H)*h>R)(hi5lI_6WSjGZTbuJ|J0opF?rtx|raYlPsYJ3LRAg6cQBi*vYz1~r2$OipALB&fR*6qvP`Rj}^7mSZN$sISmEX22b z9IMCRWjzIAl)VVlfc;bfgL4W~n{Z^c!M#+xHlNc+n|vfSzI#qLr_-q-Yak{9@36~O zbHUM7S}1kwiBZ4y1@4F6ixC4mZ-b{NWNN>-cX|une>2zR6fOk4A69hZgWo;Fo38ff z?p$DY_gv?SF0Q{(7affMLxZ!)du_G&Y?qy(9qc};C(_?r%x=bX|HS|0OnqHyo- zT9D0Ov4_1viU+)ca3M;dX?jJbE$Y9ktzXw7ebP%e$6mNW{Q`0-ElQ2ylStu03=H(& zpzgNX7~z>N1QN#8-;rc3VG7F?ZnTj$@K68z-0Q#JaD#J2GUUgE^}Zs2z#;3f$PwY6 zZ-E~H&WpXLCX-R_*ODa~_xu@sbHLXUvQ@M}5csWrESW`)@FLH^UJN29|7Gkcl(fdQ$@P2YHZIqH_%AaN3iyw~y&#?V7vS!oU*Ktvq+87s~7m7?pQC|6cYevcSu*%DBo z-NeeGcc3&A+r&!IWf7F>vLlK3y%6+7&JWGj1A%gB?Vfh3E#b_<@HrWX_tMKb$8{m= zdv4?D>=CMxhR1LV&b%pY7_*Qyll$7sC5I8vmM|4R2iphwk@;Y6l%$@?QF)enX}}9v zdB8Fx&6;$ujEA8JC_!FB@oUpZKINmGG{*R*!b=k~ddm}cq`Si^zFZPIRuePoDSzj0 zuznan`Y9g+$>6aXsyJnM6u@gCz_=E|MYekH*ljF9Hf^*ivo1FFJ}PX~I$+Mtf^-AB zO`PPQW}tRUcxyu$2oDH=td+K8b5sG)v24|s<4jO6P&TzfbC01YhE4FN9Ksl{ZY?8hMn{sS6JX3}hc5}G-pdJN zkPpAq4Ug{gUOXpv>8tBZUU&{8F(=HvwsB*zwe2tz0*O+u*y_fOUCKUBj|>J5xsy5~ z$#iLOZ3Z>7`m^UfkboIt{2(I#(2Z!Y@p;pFV_R#)0`7J5c`Sh-T9goNIr3nzCB}AxrkX7k{4p?y?L7rXE zLiw0Id^l~>rlz#ibE;Oz=}DpIVakv=_J8Fs^Jcn*V?SMCulx{<9c zsszi+z{M%;<1?l%7m#vt6~;7~hN+nf>JlaBp zYwU`Ra{ynofM0Bkfw54V?uiwP04W6lE4U-k;h|TJfkQvhG!7yvou9nwz^+M16v5tS zr6}jAO*Dsv>3o;5kRRXmv#Kg5qeazXWm-F)jsMrKC_v5$=o#1*2TdWV_YqW#Bc^RZ z$C-wGgKLp)yO$L5cr_#%H~QDIkhCE&(vB;DODyUhX%VyFt|7lZE zz+(W!#Q}W@hv+ejN`%O8$_I?d6FSA;v;^ce9NcA%bey@f_UOL~oL$i2`l2Nus|oU( z!Ck=~-Bx@P+=l53r@A9ZJX2V=_oPKicxDebQLX`O*DzYLWIut31ea z??^qT?N6|96d$S2j$un6rudi1QJ~hIIa-yDpzy%*)oO+_eNGs%qs`RTX&?u4_>Cz*QQ=<0;O^rkj+!mE9VqJv84gfa_S zC+ujCSnzwq#FI=mA%rn(L2x@{8L)UvWI-6U zb@kuguL9W}KMW=4?OV232i4MKcYB-dus@!?S~`dzm$6Plp3$$uPB=AfM1nD|!lu4T zF?to&t$s{Id}`5Xk2)eNDH$yOuxRu=uhg z@lnd(>}gjbjvl>Yy5Vv~1|rT}G4;G65<-lh1S9VnuAP)yiJ*u|-M3n)?{;W5w%%LowiU;u|e8 zLAvRT5Sh`s*M`Ur_0-yiWm8-PuS|Yo{lu+WRcgHNRGawGCJ>Zrd7o)zS54VsApc+XLu=>*0%JP>&NrWI?OP$owL8 z;f9vxkpj0@DL=7%hP1IFW~*EIrKdvk~JyMfb3UzWh zH&R0Ze?H!=(=nH$MjdPmo#$K=Iq)QA#iF5E45Nxbqf(F_E?`$$gPf=Mc*2O1OOtOt zv+oPr2WRc_K-xcZx9%abPY7j@b14^(D0_;HF;MpGME8gyVF|z`3Ig;bX+LyjXjOYY zhp3=2Pk8k{{>4PmJsWi38avJ^ylNkROh*5DyvK9Kd`E* zApdc=!EUtz2r#<>Nx|KP;33e9=Jr7?2d2Ox6PbtyDF{6sxPJj&f7&0vn8j1PVtn85 zBJi2Nm;ZEQ_@FFK?2%>q1CN0Pv>y!Apf=B%`&9L9=xz->8r0@=2g?Me%}J3pJQC!w zKYB1!0vHiBG;&|P{DJRda1X}1v>R-h)xk|_|hAIN4(qdzcAHl1Ns+!xMm&UNxa+Pk=q z_Yh4dgf9DwjpL1hVPpZII{{GI(8DkY*9-@&f=ojRLm%(~qgq-G(s>zt#qX74S^bNx zPFA{H7j*&qntQC84b6ZP{X9l!AxdizU+?B6kd2wIvkrbZpW^-9D#Yw?N=|e5%0@n33 ztXsd!;D1WYpFRm4c)+f-B26;*9&_u1r-Xt?NrD6h%Af{4BIWZ`pmi`R(c3)=L`oZt z)15<$joY8Msf`F?Eo=X%Hb-M8wY^iQ5TVgdYS%Y`hE9MuZYmkW2t`pmM*_?EAhY$c zjhTFuMU#B4@1|(7glm7liL|S&!kaSrzpCnkw# zpl3+I7no|p&wTxGM_cr%%@2pLcph&UJ65ah-=7jzVLc-j5+C-Mfws}5gAy#VfGP|O z5c?hKH`M<xKD-C=!PZvKHKj&wLG%2J6bmluW+?n?Z zIs$hY%~;RSuh~PsvAXbju-~ zJ^q>e*t`btOu;^}YZ`nTZZOl?Cf3A^Nb}|_u(E>4Ztk@r|6B*DW?ceXvmlwq+KFSD ze$C$>TH8mU|JHRQD{@TJ<7lVE7u#TIQ*gs6@f!?01r};tyi?f+RRjVFzZg*V(7a&e@}wb9Ran6qcj+TB#@8+%3Wei%9Qn3T@)PTtv7RL8w*?KFkNy7-rqB1t zCD}{`rq4WDCoIZpQAc^!dk-Zn-ZD0cPjZ*-HPeI(v-qXP4^M)WsQR%qGK}lIckWyJ zO{|>YPPyURYn5VaA6bA&v`;>Yr*%1<`=5Nn3ZjKKnEF?%Bv*X$W5!3A7yk}?8Zsfm ze1f%NT!i^1{k4?Cpl*UBv6ej)2l3Br(Qica@)$XY3wS#!^ z5}`Q?+$285&AQL#dR}*6MM7ref89ZhfsOI(3lt0M7^Q2$SFK?huISjOIcZYB|LQcn zo=FHzE>F`S8Leh>hS#ecl3Rltm}c=+id)Pqwq$$*C+4ZLC<*ct9gw({mdQ4=KKys* zvYw*XdXc0rQt3&@zkpR&W151JaVJ!dX&Qrpf^$9Y z2CWQYGDRJrltdqC4!wIF#UzC^<*#_Pcv0TPx~m+*>^AcmJ9f30UG+N3A!$z;d@1C0 z)N~Box?21k1U7DrnqD&G2Q5-F>k+(PL6;$RrcHC)eMdO)Cvi% zY189>yF|xCR0i`^qTht;;^)6t!az>c>&czjjXX|O2)i1@H@p;vO&%NR4!^t(j@3D! z13EH<&cO*1F1ZhktnQ>&z_FdPp0U5Tmh9tNm8}yW&w2w-o3>uO2m{0YxK>?VSHVPU zsVBg5%1lw80k3a3umtwZFT1XXlzm~^4{N6}4xZzB?Df!Cd3{J`a}Dn}un@k5fi5a5 zudY5E(o4K3^w8L$G7vAY>iZ?Khs`qhUhm)iX^rfkvl}6gDpWZ#6-FgOH%u9JThtCR zCkZaGcG}A`kDP=IW^6nMHgO&56D>dystyp5gr}YRGV4v=+6G>G^WFw-X0?+5)vE4RP|un8ddyjdeKy;wpg#C{ zoKn<`6_R&x%ADIwDAhf#+w>aO*D{0~6gFl7=N^KRGVbM^%_Pi7E#pocVr;-SKd z2P8t2ol~p4UW?|fuvuV04qm5ppf&db!)D|AV_rQlBxIXejgTi1R>^n4DmnScRnzv? zJ`OH-z~wt!9Q338=nmENcbdUojK(<{T}lzdy{o|wV>isw+kH_3NCcm!d2ky z6y1M4th&SDY$e@~#s8rnQ1NrOU395URCp78lg|yS$DWE_d351G@73n z_2ftQAMSz=nEtCD-JkCjyf@jwy35^uvq#8P_40~Ua){7FhL^!&zLCZ!RpAi}c05R& z%pzj%G2gRe!Xx^RzigUz999jG^<~rB80a4!aTFKFDt0f2XcVU^@c;#8vbHPcZ5hlP?&|Wbq%fXVcw@6R3kOtZu6j{Tv(H*A2C6RR&)Apo;MTn@= z1d1i%QZ#;e#asCR;&+-v`~Z(NKNB5=v^}gt+#=0Ky^{|(+YD>xZjkuE#-%77g>rm> zNjwBRiSJ9y7H#TCV7R=XaoXMLhB2kpb}fB)hu<@{L!S3`?z#7%Le7x*v^Vyxo%>3B ziR-6@>!(}d5vndbe~AzEi#?S1$#=sI&;uB7Tm|4x{)mnbsesX)xJVO_Sx}^9QiqKV z3jDxU|1Lk4{K;2z3(BIWpL|Egi5_4d0GNgScd3zJkh7UP0WS|a?k#|O&93k)7BBq0 z{hp45B_HkFKg0pD9tC#prF#je0X9JN_$jOfKZVnjp8|!f!T~KBYIg*X&7mQC@G{@( z{_%+0aIlVbZnaCCPk!E{2=l9u8O2VHFvmdIZHznkSr5itMBt)l@wh?fIJiq|NepEM z*(30!ZrAR=WenLJ(iPTAEok16X@AruwAuUY@MP##?Uin@ac_jOE1)b|Gc0?=L#_v0 z;!Xw)P}aGbggPkaC=0#mGpWdzN$#Qb39DoB0ndWJ-;Pp0vVE+{=@I6Nqu^r!nGxK2 zhJn&)*vA69w0!nFiuneF=n(N&h3H0ZbL97v3-q-PByh_>pjwGlj;~$8d2W?hW$Ml{ z6RX7k!lf77!kEHAS3N#bN53J0f;zyTND@WER6VvMcxV1COAaB4OUq|l!6o~tx+wS- z44eF?>Wdio9RP801(vLUvIVPi`%YAo{Y&4p5a?oMWoS8Riy4+Q1tQkM$T-{1bdmV`xpo<3k+@ zDTSDq#2pDyz**%$6Rtv{fc*=^&+#QSFa5lk;{!wb zLgon^l%3o;RJOUzh*KAKA#_3W=GRI#2m7hw_VvNbWzpYPJI zfb%!T_fo%t;Bxl(eg&TmZWbn(2v}Y&>ML+^(5~%ZIKQOH%jSey$13?BkxYrjN5&p; zE_a#t%8x1iYdfZw@qqFI z8pn)cm z4&9i*5+4Vwto22wf(%N1nZ#eTZoKh~{Fz1VU=1-N+-8p|0zR`Z8qkh)V<>OTo3Q`kAZ#C zj=;|-O%Ih#P1x=o|B>M>{=jWDPAE1`z=W2v1jhhnO2iW*kj;=W`Kuvz!S$eeE|nkx zYZ7OE+7f=6VOCZX`;b}7w##1)zcR>7)Fl4(Fs+82U`_hCpYd^r14O4%K4>3d){1?x z^1J>QP_tN=ZNj-mI_lOHa8Amp&NEYD*1{P_r*XQ>RooV4xk(Lv2QjTAH=oh}U6f&| zt5Is9;ZsI`*shwNV)Qc5@M)l-5}xb=f95EDMzLiC#3Zaaf%pIz6$n9fQMtQjW-imE z>|=_zxPZIHCIWsQwh;)uDf-)+Rlp7KR@D03s`crI-l507qo~Q0ws%$}oXbodiPZX$ zQT6#qB+{F8F8K42Ncr5AcD;^7^7^HPb|lil=?E3%dKQvnDuHLx&d?$@`_oz3{xl1%c*p^i0>WQ9OUv+moF%vVy~g6kO+}5#Pa_vp+sNN}oDA%4^nq-!IRO@_G6# zrjgf=6pa==4fA~pGy>T*7R`i4?G(34mjX?`mV(}&RyR(vQnkG2 z5GnrR2Cmc_*%xTp7u=d%poQR81NXVNpuk?ePfxW^56^|}qDEafA8$gVh0nAiHh9kME1XOJ~$?*BOFKwUVT?c6OC@c(Ko!VxJS`K5)4D z@fGdt3hS%2WD?Wv_-X6ops_MJ?FbYR96%CR^daYqhVIuR=hLQjE;(`PI({0<;GMTe zLE(PZzQ#%L%WIs3h=m1P3sUxrTew*-;(T7j^%4poEP+F3p^9(sm9K`_g?f>IiXkEx z(MdDw>*k$fn31*m$s#4YrhGO0JStWr6rI#3*+I#!w~R<<3~?mjE$I!3iqH(T25YVHq!WC)6b<1}u0mFl(G>U@ zK~-dRbx#ZIg<=&Kmj!_>&?Apyuc=u^En^z86Jg>8`%(Vvc@`vq?^<=yIUTzrLm~ds z@^aM6ecE61L|4ZmZ4Fyx-CCt%m|GY2eY z_{YIaluc_MLG_RBWqBu8?LxZxMzehM3tbPgRFj(K2HJ{ z@$tv*ZA^q7?76}f@=3bnd3g$Gr%<8YUsUL-HX#o3Kkdhq(beK@?V;?fH`a%BkbSB{ zU(Oht^9o)OOyGU~HkYl39ZrPsZ}U+$ClxNKX?;2MYb!dBo%pYLVQ*h@A@drZIOWik zm^U>IV@&Nkt`X=EOIp*QbEhL=S2gIhu&Vemh^C(?YJO*mXCKfon)??ntZuw82{vnZ(- zF1oLT>B8~#ZsI)>v6maD?!XVwLHi<`0c-F?WHGJV|MEa-EDd;eA88FXD&{sD`@%$| z1W!c%fW#pdRf@Pfg?;qMv*=5r2ptAkI-+4)DwFfPYybS*j1aHa(?@aPb8?+?6gWiZ zA8Ky`&#>6luuNc-n!-&lGzfo#y%ZZXJc z`&yU^DQJRq&Xltn(LWOn_(W_fQ;#!wN=I;JraDannUN+_eH#NCCwFu!w=cV@KK50J z*YofH*Hw?~((wAM`B= z-yIR$Nv%4oUi$blR1!MWC+aacx-)CXIkjgghUrb_gc9mG4Sjp0+WHD_HrrE|b4GwBeyp(D~q*$jj4dPQLN@rPQrCAa7R`F>z zQU}X}Ov`u%^#maLwLX%~_7UU0=6gJ6)oYbVlkhB#sh_TpM2^#xZGOrhdloG261S)P zX*MBn*=6o0d-)!FOhV6@gT}P6hz2}ZKsCqXQ$KRV6e_fQ#} zRAWCO*OzYvPEBAE2i1=vJw@M6{dG9QY^&543>!yjou#f;RTe(;S+X4UH@A@~LeiKw z3r&eQjm&1Yz5pd-0j)jUicWh4B(HDsM7l;sem;uALNV*ijHWqb7A7)QEOmzi zQx+x`7DkC##zp}?GDi%dRHjZ1!#DZT?b82)hLOM`F6$`I!f`o&)09DXb?9+_(G{>d z8E{-}4%eAI7WF&lcQN&HzU&?>AQ0~_=M#1Mk3|NY4L0NrfPgrQ?K(H7P`Uo)7Kd;! zyn!PywUYNiz(q1MIB{LH+t?PC`u_=n7GS# zse5Z3kVp1pse8K5*rJr9;^{_GABlHobwhgXxJRZaV))K7u-Zn`nvMK3(!4hFv{xVP zEjAKJ$3V7;?O^tdEt4-C&haUe9~*%$VIANsZZ`PLOY_oE7nTq1Y_>ts-4&4xp0{$; zh1Ej<4nD3uvV>S3?|#DT$F+C_1s~U5a3A3buUWe=9DH1R;P5y+C7P}!conjc59qjf^1a@g-annu~?O`q{#Ic>wBY(IX!E9 zy`BFQgNRJ+^}w96X|y&jU0A<(OKRCMHX(g18o{}~us(QOm~ultUX%0A-pL%=pT2b+J3!OskjdhOJ{hMU3ODli(lm7v!uwB?PzX)oNc1+zs9v zxOyO0dv7`!rwtoA@cX~Aq2ma2tmDNW9R&JMn7@T79X^fH#9DxV1__BrbtIHB#80G* zUCGo?;sP4#0%T~K^#I&Lp7i~4az$335(XG=+GmTjER9?qmKf&&rg4BN`mnRj@i^=D zXB_{*t_|9Z@kixzt%@x1$y86KkPfymZpDji;iWL7#0(C^)A$mlbx9af>otuB`b zqZC6zhwtbMq-8s)f6FXb z)WOg#^Wk}h3e(RQ8}m(Jpi)A@%4p;H;?JI-y%v16iOhrVVZrw+%n)BtzqmHP;yjyh zej?&>B(VNl25Y_@c+IyaPPr5VcNX+8Ln9h%f)T}CdL={9q$LK+t25pIaAi=fTqECO z&Jx5IF@jkZLA9*og&l#LTEXUds<7ie1{wkobAk{0?0B|OOLE0E6RejpTQMylbjJ9N zPH8REi<&cQnfk?bf^3CKI^CZ?YCr+_dd~3Y``YA91H&nZBSkOo3TG@?hdu)xb16;x zDK^hO=R9;p(;ze}SZr(5>Qhz}xS%1yB*(@bZjC@81+eDglUEcNEVeURGXo%?qf4o^ zF70a}5oYBH;}*a~0VdlN15(IB1R}nHA^E%T&**&QMytf*^Qo6^7c>v3WeQsB6i=9A zIZ-x}^1sd9{3?#ABEYGtd0)jbV~)^+W?%1%l5{=7yAm{Ij454F~z+ z#21@7?s+oC{@`m+5_nSlqtOCim&&E?dF{C)F7Uw{!%GcYkd5Z}@=BskvX&Zc1URnN z;a&z^*o*p)PF|!Rle|I`9qorJj!lW28IK-~t9Yoq6ts#}0b)lg%JR{Gm#4-Nbj_{ubyL3yHEk zNa#bAbc|xOBzOf^J@uZd?C1_y!8KE+D4Q=fq~WtLd9Yx0KnwDLAl0`+@xzPHfYx`N zHpm{`#kZ<6s?bbES`#?eY+5(lS*aoCg;H3g@;V#L#=v+0QpI83J-2i6$&dLd+-uel zygj-5$RjLV1WdGod2mT0gM3BP7eWs?MZcOoq?9S}C@K7dWi+QLNW3KR#HMAi0(WXj z;w}svJf}$q7stkm$<$d?M89O)(C6;K_$;a>y?SU-lC98ZHxlfPf__mvy||Em*A;qy z5qfvb^saYSH^d4(7{0p|bP9TP&$rFB`t!p-jYddoBIl+}{HI9s>yUGm8d`c|8|W7R zR1`*<O{^Rn{=BD{3?(uXa`?&0+jzL^spzixI4n}WK=T=ducSTTx)PBSY=C$`~hK$}k zFZXwBKDh0jJNok!Yqil%U$TU8_r2P_`kruOLN&O+*4-0s^^GklJjGgLBz;ibJz^DW zo0%hh{cHNqJv1k0egIhxqIE{kd#`y^dT6R_F#OSlfj!_mspB4lEAK81bu?u!_^ims zs&8*$IGK}z*}NyfsGX}r+|U{JP{ow}Lz8i%N3<-ixiK-DBRG*Mn#_4))D+iCGSen=5^Ngl1&?=j>mZUb#C-<-X5q6>63@m z@j|6RX`2<&S#K2Ji{$omKB`YFi4&&3g8aM{aYBFJ))K~fR)<$dw?gLAYp2dHNaA6l z28C=a&8DZ*@04=n>&sj78TtnsBpUFR9)gi7A&4)3wv%+6C^NDG0k=u zE{?T@%NR{<2EXyn2Y%foJoVl*7(Wfh-A#RDF@*<4gBnR2cjxTSR5_fBnqR@x4{6{9 zjn*7?&EO|stQEgx@QZEY0e7G>M!c+-{y?CUGuJ3VPHv)+7`5=-+r7`P_eKYH8?{0n zJ57Vm2Mt)ZJTwiL&$G-m4UhkYOR(aA3<@;D{^}4&Q1W1Qye)hqkSU8cdIUxQYDJ0H z4SC@W9?wOKPbrJSMr$OSAu|EDD4^3R=(wO2*nQp=fR<``ye94Ot^k@=kT!IS`WyEd zL0lJs+~fjlk5LtD*s{LV_5|PzwEj{X>w?(JDA$)N4s%FF=kXnqSsB5Xme%7j(nE=D zJGQVXClBfXH6X__T(*UG!1$L(t3h4+$np<0x{rNP|4N(K2I+HVvc@;9R+yizf&4s; zF#l=;`P{*pQ>yM62)8pj{e4@X*m}+L{JOs{ag!l^P0qLWLU(9Y967T^>g0av-wcMq z2VWmKBZ5_b$3bjUEoCf${OE^j=`MNU1(uJI;$@H5@A*zmE+*u_sPaoZC(z^!;f&f6 z0jJWL-3AQ>qaEzwJI}hV3x;($J#!nC}jya zVHbz7*nbuR35=voUMm#sEkhpLzEqZjEZ#-kj*MR=XPRX-2(le)IhWkT>~Zg+MjnU! z1l*mT&9vn-*|bV}{A9^qjGt}{hO>|#nsmNmIBOmFYJ}0`4G)GAWCZKx4^49>E=eq$ z4}&i;Wl7>qIb&4ku*>N7^u2#yyl7_)_~wGAFPvEXrKhi%9m*emeVdp~#L;z%awDsq z>mI6&P^vAb6)X;1E5$bP@nP@bX}@k4KgYoM>pe9{?^S~`CTh`J-v^uzRWzC7HYE4l z`lE$bS_k}%8VBc&*x#oq=vRAC7S8r*8WYL#>eKXi1-^uSJN9$GC1HtUTRiTHWi+mj zx;|QyXZO7J6YTl0scImz9r&CvKi3EUc1n2>Zo$_dA(5SC$5GleHprkScTZXe5o@X8 z!37kp!6p(9*%suRYj}ciPL@><<$jA46}ocyq9TnIg@o8g7s3B7f+c%<$g|8e*021mow597w?jz zAuQPV#nW#sd{UzR+xtH7vRhwQw?j8icSLK;LGnm?j%kY7>S_c&52YzwaC?B`p2|`T zNgnrut5I2$VQQe^2jF&UYD`!nk2k~{m>Peei-10Ib=xlMKF=8XbN$AaGd9gv+rJGJ zO5;Ft5)_0ADd4*K-Q5VxF1#I+FSD3(YltAc(c>j^9%q~_ zVS2?}_FKiV>_4H0+a0Mm=EO0zl{ALD6uJG`eFUOtcenNLwef|4&G_ie2uf>%ddRLE z@*T@E(`ES@u&hGF9v-aSKH|Md#`Lc^)>q^wO2dK{;AtL0$z(e*d(SEBB&Tg4#FjgS<4n z6h?x*NOzKLe52syXibP0Z17wQN(Skj!N)+^^PZmX!a;`JJ)gXRlrw)YPk@-DFeRuM zM@(_rk&PM2o4~48&bZ9_IA99=4B1l9(!AeA;&Tyzqj>@rB|Q z3pmqkvl?ZO3rnCl9@_Z5&OUynC5w~3g0qZU>5i;Ba>6oN?(eKa`fh$P<&51COAYar)*02-$3oC37>g(x zV0npY5&0il*f7oi6)gjApG0Foj=efGOgYd)H&gk^ocNfM{g#nHFXpJ+uh$)35HNMN|@ED9RZ(3da4J zgh<{eUxZTdxAx|mo)7qvAd+Tl2GBzA7exz6qxH>ZObfi9-+3g^0Js?DtbI}Pq1yH# zUzy>T-E=>*`S*u4NY};oV3Qy@X?AkbUr&XbayzGhG6_S_E=W_Z zD(2ntg!~OQCZ^l^Fut-qu|qU;&AV|A`w58Gq6*RJ3eix2pjf_7R1?`E8{HzKWZqAh zd~oi>?zi8cS#xh8jAO+^;dIL4D8pj#*t9o-s=~0{u0t+$$Oo+HR_Dj>zCZKQR`q%? z!Mnyf-7*P&cUmSP!M=idm4OBO=R+whVI=4SNEiqpvTrhoD=DS2J_Ow!yPdOcV*Y8^ zA1eBpv&}ZPNm3#Et3vi~Gaw7Mw%T58B40DliQZ5H4U@C3+sCFFd~6;>Jk)RiE|&Bm9_wU=4u$y3DOIeQZ_|c#&nr;>UAE~>W^Y9A zLQlU79jX@w&0yyHZxioL+8WNp`IJnTF(p0Lh4i85*nnYUra=6qOb^*oKfcM*Zm5f- zGU__(p^+>+0e&0LCLqD(j3d{@4~(k(LR{-HpMau-{VyrUeA0s9v7JbE$1z1Z)EPq+ zbU5ne{x9K^;oi22WcNDw$v}d0)UVfaWVPT8*xyFl3pH?Q3LbDCPz$D^hTQ9SXZvm} zMEVN9^h*2d8S}4a=p}%IA9*eTLm1JJrZ@py+;9L+Xw)Wd*~h^aCJ7C%Aa=Cr(#UHS z{Yc51v~?VRTj@?X`0U*O$KIF6HFb1RREhNS-9r_cNT z`I}F2&z&>t{m!{_X6DY4v<~>Nykkewx&VHJr@BrI!5uI}oyU5sV#!Al5wHd9Kg?rgB1p<&CNz`-S0iD#SW?_S=C8dU z*1#5U_0oGW>*KbpkL!Ift~bdK58Z~GALDwj1uN8Q5{|MfuFXDCc7IM&)9^n3v@Ip< z7A(0-TGVE6h2jRo)?9eAE{eii^%3C2Oh>=iCd(Ba3w7tHSStx|C>`&<42&+-9b&jy5T8yLo6{@%Fd zTmGM(Y4wWV9$UZEF96bKjH zCuMy){E9RnCy`NqB1cl6KA|4w-NxJLb$cGw@%bHee8Y4&J9U~~$EO6sxv}hhdC-Qs zgpu=G{^RzJGLj4(yg;`TuEy;hqjA@qyX2Zk%8)jv`Yaw3y()&2?==U!0(|qp&yJm#`h@8alUABC`j}*Sf z!nNr&7I&Rg_7scfUF?`br(CeY5yIApkDUVxNVgzkK+K%7*;(-Ay%CG(=5yTz+3YO% z=nu$27@lA{rv|j<{kcU4eJ>a^62pGoczo2$wyiz1=FE|xEr)bOW%5pbdTom?VawUm z$2qQ7>c#hcmhcbv(Qa6LvDN1<@J~)&Z2kB?cM1QPCo}JbXk{P$`rCT8$-xLwd9Q?{ zdRNP%y8OdfwYV|;>G9js%735H9p?hS);JfUiV8i4oQyb^6LI^9)$2B_^pdu%J^x*VDm%3OsA%O&Z`;z>M@9R& z*sn8gzOMboqrE*ZHZR5YJR|Yg_Kk;Od;T89;(iA#3M*UY+>q(9SXui;vV*M|B_e7h*gGXZM~}G@spCrzdwhn_>V~e$RQ<<=N9X0W)C8Tni*bb zm=}APqrT-jzRFB(GR4X|qetrX*sH^OFv@h^;U0tGmjS9n`FU0KOHTg_m-}5{)nPc> zuZ7s4VxMQBN(;Jl7Oo}(1=5z8%NO4~=}686^HrW}Yl45M3C^m6W{|(`4sy0u!##Vv z7q&0hg*g&X8fg{(s5At+gDY?6W%eM>8N4bde{DMaWX+&7a-u#!j#!)iqDikb@SQ59 za`d=^9EBFN&IvzG->C<1Ms>RWo%&vzaI*A2T0caH1b&?S4Bx;ov-}KVyhFId7MJbj zFLk|0PzJBsX~K*o`1#FDBFwQT3z73;dQ#E!Br`>SW|>nbwn(!2Xk0!Xtv}K_H$t+^ z;7IF>5v0wEM_Lzl$}l<7dg!3Z;`24|rFCm3PW+Ovx85CMp7!D75rZbfNsMjv%M*&l z(+*e^zHFWIMFxGRYFg(!V(-fz7HbpwX#Wis>H^iWFf%m_Jqoc2+OFr#zS^rD8SJzLv#AS~M6H-{A9l5abqZ`BDm;|898!Z`O#_!C+uYBqu~g1C z=|C+l5;$gBKXbAr&S!XaPAXAe--f)JHM}|)t#!Ip(;u0OMR|#!h_LJQ!e9VE(Stc_ zxlPv#uEt%ba&7Q2No0kc@PI~H%uUwyO4e=81X%_CLEywB>Uu#yY=$b+onynwZ9i3t$cWf7jH2bekB%zVdG!*x0P9E;xtZ0Ju`B9X5bhA z(H|znF0CZJ$!C4jQee)+4U=qc-J9g5xL;Z3Nw_k8m1nMoSsz}k*q!9IcRx&$Kv%Wr zd5y4yJMcNoq5yegM;Y4}H81EgsLME%HBY6Y4`&czE3h~Cwpgx7pK&E{s_~@>pTlJ z(vq0JpNGvp99|rs3jW35dP^fI$&Tb_{sB(_k_HfqQ9{__gB_)~%7xhnVO&{y4=YtL z?QfCwh_Q7~KYieNk>Q+;Yj&!Qh+i@_cuwEjeSvRDR1UY{?5667{K_m0jt%ejT(f;t z@i>lTN$w%Yg`Y{T9~OicGs{x{R1<5hr&^O=!W~f&#=RC^+;9y1tHAYzMp@z$#sBU= znGO4Hcg%HBC-EYmvmlcBrn%l$P_w2^JA5FMbv91tB$g?bdj^;L=k*1?C7BbD*H`D% z8bPYOF*v)mB7U-L$6DN%vtUW#Nch$=!z9;PO)140yF9lXC)UnhYa3i2#hl(9UivDf zIL!alJx7%R%{ES}AM3=KEaVGETmJ^Z8OvX#WLo8U8< zYgJZR)aA0MF0Ig51E+Da0aaP&dGWdr30d>r9)qJf)izAiYTLaqRXP*8EbT@@h%jz{ zu_EXXH=Nj0-u^~4STT!YTL13CEHZhcREILYPVkSILDqB^_{zpraV#!(fuGZ5$iktF zNiuPj^95d$3)_cd%zQ_)iNQl2=*ASR`79eY!#QSBb$QvAjmaYNlgJN-(7<@YK$>27$g1FTIyYBD?#AJHJ6p}Xa6 zW;a77t@6%$sJ*_tLH^hYJhM)~jK1=a?qRpptS^CSRbZ6x_v552$yHy0k;c9twe1FK zv`29A=1AB}x4i0#Na|6O=V~$BU=Bkgxxtw?zm;>txjhUUp>oOmR;b5esIf23-jgWK zb&1(ib52NSCOl>rk{tE<;MQ4@dwK)b|Np<1r5se>)Rmvt;Fc!kD-^6!XR~(DwN+QX z!x^`7IS&c|4T{Ina{;UO)FflZlOBdkk)LMB2PY`t$KA-03oo_1x&Lrj z<`A2W*BmeY@q#Z_KZ=Q{3@a^;C{{GUJIp+aD9&hL?nkt3$RnP_oaHbQ@%Pu$VTRF5 z_`XUSEnsVll?-o{Rou!2->*2Pogaey*WX=F=)b$(3t|u0+2yF>*gO^57=3zWRt=ba zI_lHAxViDu)xGka9pOx#E4!SEU`d>_V=*4ogB-&J>q?~q423Es4#g0sGkQDk>{#gR zSne!Pit!|$rw{S#u2SV#6zy1@Wuqk4<96W};PQu#N{Q2@AcyDh9XQ&lnqz$teL7t7 zhUAmMB;oQrYx0`c7^0^gO5yuGua6t=<*GF637 z1Ruk_{)6c29j1af%Hvr_pvRiF1nYhz(TylO`m^!I&rPgZ|k&EOKzk?_4QJy5jI7@Wn;%wd-K<2kZ8Q zel-7mT){rdaX@sNcku_ce}#S&G!Xe7j@Iq|!CeXewXi(DXeBJQF6<=%D0+mU7qgRWkzM_uI?>B0TkEZfW+<{1IN|3&YrI1I~M~eSHW5u_fx^ zD`2|{l3`LEt7|q!T^aEd`UBiF8+dhi7g{}N*-sZB$uGh~*w%JRrPQZ7YEZSFW~oLWqjrNGwayr|lCVB*({$F?jz(1zQ4I zK7*vi{BmEo+CFjRKa<+NB9@gBWWFT)S9Z29*~eK7KE)UoG6|V4V<0DNHrVXJ@DUtF zj(LWtAgjc(QEgjCEcFML|If&A4;jG0)cRdI7Y)4wb+S6u89TG&kS3$OvA)f$*YTmC_4SY|pd@q^kD8FPwGqz)@AqX;6p85qIDuY>G_8-Cup8`vm<+aRYmY1sUt;AF2 z*W+y&We%?v{G9PV6CLauOh~5pnX0O+W8P=5dx+l%KcF+jhm7AiX~ITm%D|{&oyrzx ztAWhGR1J1Wq>-as{IC?Jp17K9%W-k(#yvji^&e==?3x>xGDWd!WQyBiTbMJG>z?8! z@@g2-ex9qHg*Xs~(p!bUYOn7vlf(Q(D{naK7pr$DHY-Omxr^Jiu{`BXlLx9kDcIS& zH7tS8kSn||uZ_*wRC9gT6WC3i*$g|e*Kjt}TwhkI-&|eMb_V(qI0OCZKCB5~eJ~U> zJnol7)_3@LSesm8QVi!CpNX0W-~a1F;e>H$|pL0)Sc zU7yBGywSGMF(#0nzBPJzWpdvKIEQ(&9rJbJgELX*Lf^0j?MR}&&%E3kMVf~zAyWp! z(PZ~JP3sWv`@eq0vCowasL8s*t6ks7J2Sg=R}J`QuFYS^1|aag_p zGsn%FrO%h^YMXI}_|aI572c;>Ym#hHxxJaIG(ABoNTiv3qBP@kzEb*>yPdz#t1$I% zQT-y=$~+M!*k&%S&fCUc;I*ewdAfhwbUkrT0%tYD{_$0}v}Kd(ur+l6n}rhinW>JX zO@ur)n4C~PdvaZCbV08^6ivxpNr_=;pR(KVd6DC~%k3J(Wfs{^i+6ZuQM zG8!3Odl!K8Al+Gw2Dw(PB6e<)lhCR^Z=!SJE1Tr!8m`{=AeJKpk7V&RoShX~@3JQO zvgjpDKxzeJc~-d`7=4)vwDxWA5NewNrKa@?up6F3Q%5nTGJ zGCAWmirnGOm_EEi{${>K!kGYT4>u*|i7@OHFS~=G7;=Vt&ga-Ym!;Ks2SWjXPk(zj zB19UrH42&0i-WMQft3R113FW(>`%>PL4|&%B)BL+-Jc+?OI1Uli?hz87u)qxxbB5^ zR)QAx9Pm;##+St;@sC>9@ITCMjwyl3l0=@}yu6H?#1Hc-Z)9>@+eAy@ghvyIRdLhy zX!i|#hNAVZxuWO1gjdP#zvCmePast4ClIE^g-Lm#@o_7pyl~fl-ph^|Lmb>BMNpCF zn3Qhrm#3oqmhHPMCu=+f4YKkY@2eAArz}s1no|t^Sd~$U3olvxArxge~`7d zIQRa*kz!HQK`h<5>^=lgy0E_Yr1w*JK8Z=`UR(g+{j~4>*-BMeb~0b#r5<@jB(tsA zP>~Jq*c$w=e;|7;%AA%EMrj=?t)p_5Fn<5w&X?M9nPSq0W%-|R*TOZ~RCOi5z%z|}< zWhV7uT4bc?(a2X#X4b!ZZEcc1=dLTza7*i2kPn;A*0pSEl047e&xhc7YYzz*6n52bk-XrCM)fF8jIt z#gdb)dUX!*gqy2QI&11+uXq!z*Vy0F#QfA!bdf7eX-a#}eO{o6X{u{ky9@FwTvOkI z%$TBrw%z$-z97Z0N}cq4>h7@fq%F=nAwfTr*WRZ!;>^REnosT$p(Ju`o%fx%>4L({g1*Nq>plf14r#2cv%C}M zCzuntwa)t~a-c;p5Kd*n?~tMa>#y;D#C;a4x@hcdp>+w(UPu&*VXuYil=Im$u-Umu zF?{L=L1GR+ujYvJn|v!`4)W8zPDoST1{GD<48-iG!OcPbF|WcVX+=zPecQZYIM+sB z9v3|wb}r*Xd637nJXFq(xgcT^sC_09shi(10J_NJg&3fdu24zqbTf&izu>#b{5tPh z5oe|p1O)pZ2mjK$P(qQpb>0QMuV3mX;T|G8>~K4Wqe~}^{&+_M$e8I)UgC+I@};?D zAVQ~1s=H;`BRlPisJOI*Se^D#H<8_%7G-&)s5%_pr`(E25i*6pXY46Ak_L z=3)oJJ;8tIwN@)RTh&q+EE8ooz|)|s$}3hYd=>Kwbt{Zb&mfbm2<-7N?@O0m4!6fc z%N=&Z!uCL$kr1Nzgv7f|Xoc$Qu}Nu_PuUr}V#V#M2ok$YkQ?c%)yi*y&-%0QD22Mr zWMsNFYTIfpm}=KvYr)swQ+*#nzL-}g&#`uuO!T4cqlF{M=#%`XUd#%aNa$FyAv6ba z{m8LoGBR_Q%S0F)2dwMaDvM#iewUkzFPoi#Dl6Y~dWXk`N}l!1VNqQ12o2`}ult6| zob#pHtQx4YNM5OSBr==VSMo48X`9!u5R$;}cHgo|UEz###yt_Y-b{);cg)2ZYQ%(b zcavhjIF9$_4?`ll-784~srb+KL}VtBO>R?9CJV?D0CzPcBZNO|gbIyZK4D7p=OPlj zLU1cmQYn`go=z4FuPg&_Gm?{$sd_1w`=3ruHk{p%mg(6EKGr%65|dkzz7WaVgNUm% z6h714h$LtY=tZm@X7sXSR+`m;bpf2By=M9V>2yq%A(bu7r0d`=?BrJQHEm-b_;4pJ z&f}la)WFBUcss;m5yfP22TU5CCB@D-t;Zy#GAZ^sdtV-u7tzgK^RF=3>ZU#em^?MX z#P0Jb`7O<)+j0^cA}EZ^_l}aU$WIo`ss&6|Tu)9$rY|rX&H^S2UeEZDRq*1tpV_*$^gcTY;iBIAkjg4j8oA z2?9*QOzM=!qRiyYUo~#x#I6#kA{lLiT;-K1XhhHGgv|WL_O^rJTSz{Dx3EF*k8h!B zw@j4s)1yW2k{7csof97xOckk(sJi1F|YF~*F=h%B1<-`FM%g;mzPXF!+#N3!Vg9( z%n_T02LeD-qDkPgt2GBILzo)-D#+n!77hTz-lib;P__G-iz9qI;K}k$o^0KhSH_or zQkSt4mMCZ*7V~6+>PRxBQ7)dEDaiO09!ULlrXWJ_DpIL&F5y+tN0i}N7id5ue_*aW z6MYH}yOaiFUjU5$3O8%sD${(qan8~tGuLu$S|#@^|8ZgozwxPN_eJo}fa~tc>`Z>M zmtrZLCo-o0UpGcQWe8Yy|wEcY9E zRbuMB<;aC#Yr@K~$bh{Ts_Y(7FGfpo6y0kNixHypPCyLZ0QKhdUUNi}!iWexXobqn%|@Ln|>+2C6p^EY1s!5zQ}RjTjn zV7y`Ow7;1ra-xlq{2PFYgr0z-TYP{Mf7L9P^*k%s0-lL~ud~U>B*4V>H0i8tZv{xb$cw%M z)0 z7Z|IzU*+-bst(i1pZAiJr*!jC7PK~RJs}bq%;niiaoN@Zm(YdDu}$~%xC{tRj=gjr z@5_U(Ms_4EJ2a)I-M*c7bc8B1FIyu=20Ej`X%;UBLRy!9UFVTYh z6x6FTv=_h#Qyz&#IH|`K62dK`JGIu7{-|q)g+=Vtm(k#dJ=GxAhS_Z4bWOum%r$vk z-yd0$ckk@;30)XPP4+eZi4i6ILDw|9H`aiFe+Dssx%_ znq+}jE68C(L$UywzQ7FCfE@b1o}rm`O4Qaag-~U*4TkWC%Hz@6-Y#9W`iV*NOL#+P z&@SDiW7}Yg=DZE#b+6l{NfeXh4wy8QCCA=t(qoeHGCB5JtzHImqPn@){VPnix=n2Y zOibIQN^O*U^wyV);6&DBfm|-FiINvJCks~T0F$DYWC1c&RZ(*PW}|j#Svw{W3L;_K z>ew!o$%Sa`*e+ewtUl}wZgK0nBVH{^gv$p&O9fr-Hh>1Kv~7TDyK z?Z@r!ARG2m(qbR=7zlNeSwiktX|dn+#QXAx^Rv3mn3eV)*W1D!P;W2jzUQCnZADPL zd|vmXrGdo!sNjY?ZCbqiMbABgTNclF#JBez0Ww{IDebu@nJ};WENSVI_ImrMz}J4y z>w25K+Ms*mVDQ7hV}Lz6qi3c;1W7NEjIiu zJuU;5q{V*Lm&GOMLRPm^%l{QFE8L{^fQxCptqh5mf6*9MDkA2`1b5{5i{j*@=J?*iWO_vj38!DiQm@=uU%4%P?l( zOYIM1)8~uCQtd-{o}-n#9xt`dpMz%xoR%ST=+Vl35DWH@A`LRTz(RGFQv;c8Fv+at z`!_T(1xv3~n7Jxj>@+b&{H3Cj4fpdjF+bKq3lLnn8lNKmcOs@mCUObISZkMualWFptUB zNdgHQPN2wIEh}EDzVcK@tRqCQ$)AQ>SQ*Bxk0?$P!u~NzaDCCD)cBO}g=h5}YZ;>4 zU_r8d+yFJDDasMQSC+lHY&VcAQEMMo^6~|~n=%DGey_|4K$O8Xr!wxWKpd4n5m5Gq zJYiG&HOjtD}X16Rm3%UaD_ddpJ@gT>_GTuDe8Q zTV0!CI^WlD*)!X5^?duexXewCO6{8i$&T<)A{vBYuXynpRH5y9q3QR(VPA`=0WIGB z!1_0Qf;)_j?8{AZmg!j0c9<;3;LskiCr28b3spTSGU;7%ifdYw>9Xt=V!c3MtZg0~Y?97?=*EF^;d$E&)dV@FVA2K9r&T=6J+3w(D;3B^hX zjQ$EYYl81+vNclwr)G9XTUFcZT29Q16lG2a>>A+aphz`0vTanVT(9?6<2wfMxpk5M z4toEp$=80_mP~;gUl-qt$*PMh5J;j_)0^a>n==I^;Gdvtfgm7?X^EcuO#5&e2oH(J z7*SVWhw2CE4N7kU!xwH(_+6Erq|hXv%B59|DWq7_`L4tG43PK zO}zkJqp{Zq@$yN-Z}TK;TfFPz?h5jU?hy>NdB&UL)5Ib1HqTt@d3Oc#qSCI%%YBD} zdK$oQUuc(hJcw1>CwO+uUBOhhJ;_$DIMChdVn^-@#9&b zlNNy0D#@^e;i_CZP9#2m*^FIA;d(co?PdJErq<`Qa|`q``dP9#-J&?%ru0q+yc(XQ z#m;cofV45}oYR z^sp>mzF-viSG$;$C*`a$IcBi1Jf zC#5C&B3Ms=`plZk;V4?XFMt(Bs$r?cbXaO}0vgJXI-S7~(@C2Byj@CA`e3-*;%d3; zw%L&fw$J9nYA)5vaiRrIH}dE?HSOb9;wGX9jvov|hvgr#I{vXEFm5pC5;TVqmhG?)H4RM#*N{HwrqlTOl_ z-N-)-vyJ|^fxFx><~*kjoKB%Jm(DZh)1t?Y{s!jglX7@Jkv^mJInV@0*yxQy4Mzxh zpZ*R89$?=@XnUb|4taZ0VkXN<1{Q|kkk}c$ud^%#urM+(*v5pRWY*w)UwS`?(l!#) zTh5W{*LeVo5&N$?la-TA%!EwAtYGyf_}WU18Jr^m9)w_pV;^6u_Er_YO*X8+gKCxK zTvjy_Nl$Kk-wd@SGu^U6M7+gjd4R>Dg z3I{U9#i%h_^eWESAB9W{j3491cwzU*q}?B~rRxYqfLY{_<73KyWm&tRz%jRG#B;~+ z1eP@%N*yykYv2&rcFUZYW9s_0Gg&CF+Dc8yZx%w%!B|~{y?Kf2qFI%* zU=oD4*@~g$YgfWF2uMIr@ksjwvPa_T#Dk)z#_~PC_pp%wP{5Pj;V{=Y6E|DHm8j=T z&!02h`WN!)I1*zOA8l1mZe)czgt8N6Kz!jhq?59l&+RI$CYNV>*iHhmK_dpK6Pq9P zP`cYYa?D99KgRJKAz$e0J_u#@J6AGVcQ{{nSm<-at~yGo<5=6Z25Zkyd*6kxAU$M#9V|*d9h;T@Y|6G3H>URAIrP`@ zJVX`79+@4hgMId??qjO})^)IQ%(c_YwJk^r8gsCtJokh@QXIrY+5_BSyDee??kKlC z!H%+l)dNOv34ElmcK}PRC^ZAxeK6z<+|Y1|tDnOstTYY;X~g8)1s>DH^e`>Gz?%~b zOn^g1Z!f;e2Ko)83G>P!Zo@uwHY4WHgTp*=UJEs5jqM+T*LIoqgnMJ-Ys{c_i2*;R z_Z{a-3t^>26bB|nZV1>re&6p4;Vft@01z|D$4u>obk0kqJtLH6RV^8}Lq=;w5MQAm zJR!^kAwo7n{S|J1oWUKU=lI2da5Im;baVuttGkd-;>o11NQq>ES-j?)(Be-EHUfA^ za^9WfkIaV@2%OF?w$4ev4)<%uk$3trRUU0`4b0}b9DSIOE!<&_C6-&bV#VIl`|EO| z*~B2jR*bi~G|c*Kaizq=b`X_raAeFsZ~@W@aC{$VXP{^=007Zm2o&veAq3jz0Y&>_ zYF|R_F4X@3>i<1zf1lbvp!R{({vovwqIT$xu<>J|Vf&pQHK9rulnD?a!%wCH23G`aewVN2uMJ z`nRF}-=+5c)LugEDrz4H^*TNuRO#&V)Khm2b?-y-{}#=^lDcP6_djX+2Wa}X)SXW$ zjH0mdccuP=sQ+)M{{_^(klJrj|F77jMH4{Ig$J8u~EB(Vrz+FvYNV0IOjTbG@<4JvCje^LzCc zS$lFi{NhheCuCcqg)DIlRQ*0M*!W-|V+GS6f4<(goBqAAgBk~#UWpbh{6CiV`fF*g z7>~F7^_pa>bfj|m5#Nv_(vTx-PdX5>{kt0p#75Hi#ar+ zak$5%Oq(4E!QBrCIhIPX#Sm;s5mo_TbSDxI--zlZ#GY08Y(OG@`FDDsvkIQL3zR4e zi7T^`sGjUfExk`d!-$0SCT6d2VY(&{d!~5T|9CwyA2^N-9hGTwb$xJYdg=X5^C!Aj zO;4C4yR#>IHPlv0E1oBrfvKaaB4$Tn5-c~ssl<}0AV;}@a08hJ0|l!$uHPK(?-)`% z-VR|M$Duj@OC)p&cLY%nGxC5VZ0 z$e4Y%ompSE0cT9dP%mOS95TwXZVc;XG=#vc8>mXmss23xblK8C?KKFQ)Ob@mwT(gP z97W3II!GI2$Kxuc}$3hWQQ5Nqe7qX zC3E5f601f)Gf{6KWp1}nGrr~f>o_WSR`z3<>pl*%JudU+BCg^o1qFSNn4J3a-!~V% zgPjQv`1gQZXZN1U$>k9%^VS6myNA@@`vl6#EWtjwd&tH6c+UvIqpJtG6SH#o6dqHj z{QlXoWkKOfl)pg+mwNEbSZ$%1&*!tf;*r@KOzRbuxz%#OI*D~6pJ&P>0#s5@*QC2_s; zj&~g!eedIb-Pmx>ZSGL+=+7Bwn=XTy=U`CcK$oqoTjG+Mb^n*E#6FLkh_54S zyqUxt3D1VeTv@9Go+zD}yf5c&P{p#9yY$an1Q+D#eiRErY98Y{B~56e*th$@D|+ClD5 zS}@VY8;)c*mA=RqjvVFFr`x=7JDfR|j2RS3UiQGh??&fwrTP6wj$-^b9?9PF_(d+< zH-t63J93n55tpm%(=BEEwQE+L#E&3OtTzV$7FZ7=o=D$@Kh~qTAu3WFbVCX=C|T+P zv^#V%LV<_Ipq|7iFgS+{>lL8y0`CPhF$9OmV&2-w)_D7Xg^_WH&DhYvEGq?An2s3< zc#AiHWlaYwX6@SCXJ4_5{on`l1Uv$_Y}Ev$gQ2bb4!kxC)}P++Z>ux0UKD3Tt;TqL z`<+d4fqynzyk-(YguS^WwX!%%qa+N>zdyYyw@)QoYhqkxY%RzL;TDCRfj?`Sm3%WH z-Z9uUCgl#IhrXo=~tOD^~X*-vCd)>E#R_aZhn69!1#p0kAocX85Bs%OQhU7q`dCu(7rp#){G)=~3y} z;{wEb&i-|*;+Z_q0$x9AY*7oa2A?+fz2Z^d{-{}hp2g%n2#)XnAixHxE6@a}=Fuk_ zGZOBmT5N#@eb-Fy4ZZL_{C+1ZlLz39#5gbkaAyUg)ZrD!bt0Q21J~nRzg5AGJv`A- z`(WnSe%d>o7-p&F&X5OZLVUpq(?J8_R}1yEyq-a?`r$eTZ75gDyK`TD%{ob@#V}T4 zj*=_3S~-ll&drAiiy*?r2Qzt!`)5MtbcuBWM9)T45Uz{u3Jk;GCyi}vE#m+=(i!PhH5Bg+BR5Vl-yRUw$+oEv{$JN){hQY!hW)g@C3S$Dlu^4c^ z2{5!7e_61jI8$@ydgYlAKe!+2*$@%zIKp#+EO_U`cRAwvXgkHTuF7Z8`*K2^d<`-& z)ie|F(I+4im5_<%Vt2E?-ImZyuoo^#;3$ul&)y%?AmT@^1_S=efji5;ey*c$DmIhcJZvZ8Q# ziTh}WZr`=Z0_v>xOw8wxs)S73HOPeQ49LPQ?VTxgnIWNYpXTWY*Q1_`&%DmW%dU!- zkcs%X0T7q+K37py5~6Be<@l9u7H?xsNr=)@4c7^j6K{v|@-dV(0^kDw?oek81d7It zRBgSU!;XQyk8X=k9ExWvi?NU?3&8-w#3B^{`qsRlUu(BkiP`k=e+d7N)9o!R0V&6{Xd=LH!+UOBOgLbH|w>5)! zvvs@@Du5eW@QZ4Yn%dS?JDvGc&~}=q+@h*b^>1*m?v!c!emUHzoVL0&xG(LLxn8z9 zl{?OgeeZ@+91;3A;fQV>aKu1h-h|^jv+C4+W_G|)F-9HYt3e!JbeB06TOf{J=7Bjq zvkIcYiH!~}_$D+RkQbd~7i(ZU zU%kOj#yK1Z$Ok*y$sn+&`Bb}Ukc+m)3Hn@S5ja2BrzhMgDml3yH@FY7$y`4xCY9U8 z6>b246TEM2GHpl3q|Po-Rj{)UP%ej2Jl})+H{pqH9q`0JU^?RYsacy`&d#h;FI?UM zPgS5gM9Jb=`Q8!ACO3%{GYXXe<=scKqk1#9D7>_jh8-AE4GF-xU&d#n>y3>;mm?}%u zA(94o0&>e;=D358n5rSm^6Y|L;KW7;m;Vw|F&8maHW1YanWKko;MiZY3$k?L4S=lD zP3HKES#p(!!3cqQgTQ*K9ajQ_8c zZ^HDQryBM2mX4Te)gk$MOd(7DJrUD1e&Em$I0u0aKC8u^FPZ zxKQBj?X5#hy<|H>jWHcC05N3@F%^4f4Zl#p@%3%X3efvK0Mpfz6ckhO6RvW0Rmg(r zGRN>mLh#OH()sTnpdLyPMdj`g>fC2_5HafWcmzYY~`c%?LKJk+|_UsinHts?}mPIdk z@c5ZkA+L;Id=;yo?m>F(FTTGp7;@p?mJguSz1s8>Q^PrNw!!`V5t-}ztWV|I4jhpQ z+ciK<>JB#zKc&uIQ~Fvzxl=r`KmH~>(X9iX7zj*9JYVal-3J=gjY~SL9Yrx64EJxs6x}*tih;nq3DZ&=t$KV;2TbE{R)wfoOdD3o9JNk}siR|H+{B!M zW#Gg{2bX_`X}f;PXY~_I?Yb2ra}09~ZRuPsNaAJElX$ zWss4fZCL@j!U-dwm?~>IYHfr22vMeO(T3C*TX#_=%s~K5=ZG@bpWcwl)wE;kK{0iO zINpRQx^=)51A%!Hrtbu6)!RxsV47A{72?|jPe97$pr867raH*-#hij)z=@3xF8?j2 z`gUm(@sE@_&J+aZ6ac0?e?edw#Hp_QCrnv6Re^ImrYnd~bqHAjtTyA?4Pl_oHBD@JxbnAdA1_JXYOlRNH zs-I~(V5mD5My+K%Z6*Fea~h_k|`Fx%}ai zphmR_HoE^cJ#)Q$b7~APZ93Gai0Lc1nZ7x7ck+`q zITcY%v9J3kOwp|arWgp!n=mci+@k(rVFyf=+0`KuEn?by1nScd5mVQJfn#ki7wiHj zHafWcmzb(qIaO+5n_rouY+ztq|H}ng+{l4Y9m2R3#BU;}DppRPLXz#6diWMVMm*ZG z0yN}9j6jl`jqQEKZqks}=pMQ_)Aqf@RBpHM#hH^}n8P|T)#uXF*E(NJ@x*%hO?aYP z2Rtzlm^b11&Mcj}&;1T~DrVM%m20|Df~Fqs}jfB-`Ft~pc=IGV|a|{ILO_4wz#gFmJ+qx4^sVh}2<=mniQ#4tclXpd-sl0~RI%2Bi;&gpr~#{7#5{jW&aGt6{?y zG!Pi%zB@MDc9%&p!V zZ^>X3`gO7e9A=BzAA3`|s^9gcua5#09x@f*Ho5P1>z9GGEEpKNC0iy1#`Wk#?43E* zU!;8cOB-AK7nc-qy(WRGgR!HA5s^EcyD4GCMEtpspAc*SiVzrxm%dlNq{*H5cP5JT zXB8woF;o8u(bd(AsGIG_d?Se^%Eo0sWeLCk7LtL&#DGs>YOAO4VJ&o2_^^uoWho2W12PuV=coMoWzg8y+qvF$US z($6UUoYD!DPNZ}ar2$Z!*p>;T)D7;@j&b3CGWF+6=@g*oJ`(;&-Qkb^zM$@3QaY8= zuPFVR(rJ|XQ97N{89*_y^8SKF|xli&-{;*cJ_eqF?}P5}!6!i= zLO_&PGxB_Rei6%30t-du{lZC?SVl1fLs^59c5gho&9WW?3&jkcc2sDzYPAr zQeLS;Jx2;lK)^6CVaShL`&}=AuZV#;(!FJP=LO#3yy-G>XvYQK`R-|+7sL8N`GAUf z+x@3Jtsx0`hw zGWC~U$!%v#aYo*Fgj=V5Lbjh%TYO2vhY;91cEhN$ynRKDH5?*z{b4iQKf!zWOeloZ zGe~}qr8`6dGStG=j)91QsW(F5mosE^LW9zCVb!w9Gi0iSUdboR^2#b3YZ@b3WiqgW z=PldK%#}SmIsAUX<+r^=DY+6$QU-kJwY%RMGG<|wGeiT+N4ky0Xc6Qf76U@Q0gC!& zHc))S=TJJA(s`85r*r{OtiMrykp=-0NX78S@C&KGZz)|w{d`_`pW$1fR`Fogf@W>I9$2NSz=!M(PCdF;XX31V-uv zpV~;BV8Ixv6O@S#>IA_xQYVPJkvhSmHBu*tzL7c+vjID(6O<(*b%Nq(q)t#WI;ayA zEhBY;(rKhlP=Jlp3BChH>IB8zNS&ZW8tD!cawFY=^3*|hpnw|b4wStPx&wvNNOzzd zA~bKq-_ZP%?)bvM!(4;=P`Lkz+LH|Uhv5D^wHE-zE+Co~_&Y;oG!*{-H#3&{nE`YO z{2BNsP+nWubR#>g*=sis;9d=Xw%Tpy!u(cv@9^-CHvNH4r4Dd(i=pnA+O@a9kJTM% z=P$(djzHaEyR6E2jK6FGIJHFw(foVeK{~xHHnXxb%e0ZUki`(&Mo7YCSrw;K!ubm@ z{6OM;{AH?PoWE!97;A$jB?gBn)9 zM^yGiEL4w`>B?$Kb?|+_ZtMB|y0YcZ@g6!mQ0U5;WNGI^Ey;W)(ahdT3~XTPja}}7 zL0+mChgagq-o%p)%6Wsl4sZKu@@ZXJLZz)k?Zp2 zgCTG&(r8Lo1I79n6%5kZ@Gc`A2Y(D7L;b~4`aShO9^BC1XVl*s>K;ewT1tPQ^hZj6 zqI4alKU2CMD8~0Wjdud2(9L4`lYnA=HcS2LMoJSX-30W1&%Y5t)F=Q zRQ_ci-nZ+8A3N(l_>Ir}W}+7qe++KZ3zFY58@8ql_8Rc~r@To&l`p^ZcGHeyYrX29 zwdn<{%t3<04?!=W(dhgZb&b3@!HU`1^yuTyzOho?>MfXBcVRxR0V38vd7CTz#yPNa zW_|_PL$etuMzaMd)}dP|-A3tlN)svF0TkMx1XWa@tk_5TI+ zr=ae;DE*Dn-IVU3^mj`4Qo4`Q6rh-oFKN6}DgBDluYqEI_EZ0VQ2HmO2Pi#A>0dzq z2c3X$80iE=qJvJrtQhG8M8QZW-~$`!1bj9loq%u{=>&WtBb|WY80iGW$4Dn&5g6$N zd};UEZQbwaP6IlPs5*jMO(q00I5WwI;a1hBE@ztRazyG~HIkQWeJ zb&nk0m ztotEqhcR!~ewf;SrSWW{bOWW^DTPgA*mwgVo<0!&$6!Y~l+t08+Cx5(Kb6|QqVxvk zZ=>N;=ySkuJe!XrG#|Je4#P)7BMj+6O5-VAPU(J1lPH}_={G>}`ElJIhW`U7+AFC2 z1+_O*dkeM0YB1LSY8uZkG@fLdPgrlny2nuWjnrL1-M3KpSnB>Qr3sX-p!5$)lPR4? z>1;}u()f-79+>}Qlpd!vozfGOo}}~?rKc&)pmaXe=@`!dVtbhl+LGg4p2-dotF0*$REmUCZ%U-e(_rk=C_Da{7{2- z{HB8R0j0%2+tv&ELEP-939g-OnD*6xVr|d2XL9W)n^yyxdZT2jd6xvjDC?EEMCrg~ znGnULE+;H%cNUC|DywrY4U06-?>9PuaK-R#M$!E6T1}IpnPXKH79a@eLLdUKyo#9W zIH9sEEb`WeF!@37wr46oR}d@SQ&!h!vU!a`YBjuT0$1bIu5?jaY)LBM9Vn}t@)A)HsZ-RSojruGD$ttG1oo~?yrLF8LPq$ptyOvN~^{@JREU{U%{* z&*0fwyf@Z1sUWp+8v_KtLu#71&u>)3XySy@@!^r1AhjaFi1DfXB1p~USzVtzZc}?| zVx|e!JX@11L)apd5F$Lo%p#M+BOfOO2)h4X;3A#~dr2OHSetl)n-wulJQZo!8X%ay zw;*oIvpVnT-f-PDH#~ApoH?_Ucdo1A0MX{8@w*I!@hmeqoQKT&Kb(CBR204Uc4n8d z=t{95sOSoI5D^u96?G8{cI==cD6YL=L9j1HL`B60cCmNBuAsPf6bp7N=qh#;Q7qX1 zPwou9E3d!vo%7{zxyds(H#eD^Om-%dF;1>;k^XgO}#!9S{eOE3@Y|3kiQFh6iM+7Q;ZpfRi^yB zV99>|t`EHCtE1y?Et@lDul|}{+kc)0NOW2*TDp4s6bHpWt&qMGh2JNGb ziOSuBzwZ3SjJCID_OC9)MyI$w0Vrq}rnoL$2|KWTT!BUAFBq18N+74TTPl0n$aUp$h+Yr~&1LMDr!vr1ru+3<9FIO@ zH0h-RZ7VEcg;W54&}C3Sr>4aU$bab*HMl7+Kt~0zN`Ds6TvMz7t7V$>78+i_rWr0X zJS?<)t4f%}uc-clx}V1{KU-O5Z>Hn71Nom6Jj?pq?r1Z<-W@^Fa|yeczpQG5X&Ntp zGS&@|Mp##X9k!SkuchiwBTn5eZp74hjaN1q5qX+7lfx2H69~JXA*SR%CJAo*$Ll)P@HOW}*1NLt8mhlCQgxpAO;Ca7AQwYoe$Svho z3hdR1(u?R}>_x!5VhA|Ekovv8g=2<+w*{{^4{br?DfZugeEo}p|LmthoVhC5@!+Y7 znZ|O3Ry!@b^5PSRXN#G%cxD*D<+w+vI40x&5EA4~eIh9qUL8wdlHc9B`H_;^8+>z+ zB`kWdiO>1_evWAeq4Z#;)|-76_x_=xusOlW=G7jFdj#I#je~F#ocqFDG#S5sMM-=fIB%Pw zAkK$Le7M9%fb(z*`MGb51o8aKr2O#`=l#BnJMJ6c7!QK9e~b~6^DHv9C%G1$qNC2a zXe(YiFZthhMR|T1+k8$wht94kF3;TbWmCSNF=m*PzCkW-6Ss$#DX?u_EGLlcC7gR+ zErDH#s?v?5UqhPLh}VW&D*6Z?{CK1D;l(h(?B9Xs;9;uB{_~&vh)V{+T7hZHlw#L9 z`I*FHOAwj1d5`!#?`~>}@+hHYi9Mg_ZxPC*^sZp@4UuVA>hjG=>hLs3pOXbK#y9tu^K8pCYH5rha9U;t7Mg|O=|b7&K-jZDvTW111B$R?iOb`fA6!- z%9M-J1~e>w);l#n2Nc4zzf2YO5q2)D7WD{z4z(X;7sIynh_9b}L-V0&@Cw%0%!Mue z2S!(EvNlEevkE(Lu1EZdcQ-T~RM-y&sIU*$UhENXdnKYsv!zk~%xx2}9<1eu7QwcK zEm_!ut z|9n0CEMY*v;gpM5bQju=rBAUmQq|R~T(M$Ad%xOQdDS9Ajbw+hGj%c3?v@;8+O5A| zly#qYk8?LQvTT@UvrT0p?x!WV;ECcb?o0lOqAwLGV>6DV#PH4CJWspzi5EOutMZ?{ zay@t?MuHekdn&c2JwH=cbui_KqD>#`TX?B<4O6c@ zmJvJbt*h(Z)K2_+11!JBzzxSTT8CmIC47kyCi3z2J_h%k^1TI>8Q=5CD`Q>En1Y%P zXs{)PSJuV+q_~!wWrK&OLH)eWuZv;#t(glg8{#+xmG0^T&4}X%9yMjM2i4f>*M257 zr^cVic%ZrPq2|UWKhD?cGSl^OXBk$h4xS>|RIkt6?xrdid~)WCc+vt&u=b2Ux_$j~ z@Q33qZ3X`5*7n!niD!8nw_{L-egNxlI_}#NE3ERwy&E7fTnv`l8E;(^YbCuiVcO-N zogJQ`-jm$U=$m;PYQ^QfOqjW?r>rgjap)OoU9!&C*w zGK_SYb4+oS!vM_Z5js~Nv)*t0YJ?wV{Cig6d_5qH8UHX<>4IDNg-1hdGvE3RpKX|^*>{7p8Uh_8JwIp(pO z)5gQ4G87QS3UdDRyBfBI(^dKMW69MOzXlsI>~NU$bIH}6JdU3q+>&WRX!Mg$UE8wC z_5pl^r&i<#(Dr-NG77g8UP(aZD}8l#n4Ol9x&E!|$Dd2OrT-dS_I*p+^$FC3Iqs#! ztHz{{enarkyKu)_*CI^TOvDnlzjgiH)U3sHsj2r5Q|V0E{$Xrg8k$;P%9x*4rfxeu zUcmmdvaw&Cb9SU!a%BJU(F1Q?50?Duf(w-TI9fO9t?Q@U)J|Q)HA~|HY&Tc;X?r*~Rml`;IG!gy zoOm~6h3cf7t=Lo9Yyr(45-y|Ja-1+V=-p89xGMg84}GYS1w_vZpGT*}^2KX-=ETRs zRM?~9PONQEs&Dwh>G5;)(c<>@_T<809lklsmHWNL`jv?Pghs&4$T6=|FXCoo=D>#< z9ZKgnBg6BpO{`8IRC$PV*oWwHeBjc9^EvEhxD}s^P6ToO2zW#AU@83==|+g>fG@#H z-CcD$dr}qoc&gKOgMqTRMoA|kc-*N zXy(SV|G)S53Q%I-L)Lp?4mL4V@!O~DK{<6x{IrSHV7o(mnj7=7v{~k?N%{M?p!>2h zhVVW^#H)md84E3)GcFU}!UIHYTE{*MZ{1GdM%2Xc#ralnexL3+8bk&DLgFvMIX)Q2 ztAf9h(wR~^7io^amiQZq=Slpn#PcQoPU7z+UI5PZ2TJ-rNa-t5`lFN{gEW`JM)p+R zCn-OEh*7#w;$I~GRpQ?y{$1ifz`35SXh?4NPbqyz(mz7d{|k629A6IN^4Fx}{?c*2 z={v_gq_iNV@e_&k%A~XjJdc;dcXH?Q0n%|JDcwp+8zarn1K-=0^Kal>9^3m045|q?8^lrIk|pwv;XuWX^wA` z^lSxJAzfM0ua?TIf;7Jm@=z+LB{S}Dpw`t>j<2;S5?W5a*`dhB_1#FQ4$Z4 z_y&pZmUy(p=SY0H#8*gsw8Y0qJXGS7CB9MOng&S!zR{--$3f0S3lan7qt zyaqTw{zN)nQ^IS3^ZYr$Rp7NHxjGWRgnIC6nIqDiJAre%>Pp;M;`Jo%BJuhXcLnG9 z8c6Ae5^p4NH;Fd}=k_*{(*H=jsl=N}++E_$CEh~fEy4M}9whN`5}zvZX%gQe@vRcyBk{cwx0d)d$^JW%o#!N;56=ChJLLFz>wtFP zyra|}oh05FoVRxuaNgcsCEQ!$-6Xublr9f_T&{)FW|4dKlBIZ_zcPZaEZ^7_yUP9l6WhLw~@G;#N8$SkHlMo^Kv$! zAM$eEBh5L#y~{bj`^$MN*u%MiG`GW3O4~~5T*B>917?dxf6C7mW>GbG_w=1rgaQ-wlH7MI>h^}#* zt>pqujm%!sO}H#M1n4H*emnLeI(C9n1J=}@=MsbJ%ASiHl$Sfpl5r+56u|xw%~+6(?n{<-_(N$0#`ARfYBUMp*1f*#z zl-23$$^&kkG~#U_&B*>O+w63A6EKc<>gQ=%CF?Na0VEAwe(B_;X?RW z`6~fGzw|wqwVxd`xty{T)7LF@3oV&8|3UcJ>swu4ZrahQ>GnEH%|D$Bmt#t(^*aIS6tl;(_X3lxFW2^9>oxc4c7q$O zF)xc@g9immD0ks->ouXyz_o{);gs^AqW?JD(1Hb-UpRoB%2&%9T6o(IsOW-2bVooG z(djjzqc7Vi`%OnW6Y+_V84!ifnS>$&!%vhP!k%!$>1=;C&fk^lHmtG@H{BqdDqqOb zVHtuEbE(W~SbYt?ZK7@8dUp1Ks{=!*vp^XM@PDTkW*=DeC3S3dRbelg9s;3Reid6z zLb2bo{8sr_?}Q}Rz_jm5PNDLVNye1JDzheYlJ};%u`c#Bjuv?#4hLxWr@A>Pt^`zI z!r{`|dZ{CGGV< zw?;OYAy_beZm72k_}P&tKe!7`3*QsZfpp5@oO|87JvTnnv=e-zaPNSMX}fNpt(SY? z{P{A$7v8sCgQKW^3QGT205SX~lRK;Z4js>mlT%YxFX`&8@58HifWZ=$^cl9HV zxlNwDq08{K+j^|5`Dz=I8;}7%KPxY0Iuwo2Ke42xHmG{Qo&l@&Soh%Tp5P;u)OgBg zmmhe{Ezc*ZRLff<<&3{B&z}l16ozx?1LNz->E#vwZE`j5OyM{fpbHjQM_F+ff<5Osi`F z>j&CiYv&VHXcf0U{=>*&HGfpN3jtm(2B+lTgVT%h3FnfOVY~k_IPt#KguLi!R~wypQuj_5US+?@mjsW@r>!{cT-y`$VyT4^c*k z$dUPIu2x-1Qob9C2@yWnR5F;o#+mfs!;dn+kp<03FL3mPYJ9;25H#WsAqr)bz5C%} zs@yWxQ7}@gy3lp#$(LnSC(qCf!*z&X3DJ{OB%UMWmtOQ7MWbUDzY?zXx7~ZyFS41c zRv*|D5P7OH`wlrO&*()7+<4zr3abWg3olBfA;PC~M$*L)(SVCb{5`)O`HW{OVbe{t zGf%lbd6=vWYvSZNH1Bri>Tiu2KA%wvHY*3X$hF-4waCP>>gj5tS^Z9MZ3e+6N0-kX znTHp(oje08FJ;<(9$Wb-I2@%>Bn`AJ!Dc@fjCB3Yjzno{J)VsBaQ|%0gzL%5H$&O& zWaXnqPM!|c*c|BM&pL)kKB6Zd@fmqMYWzLXM-=1WFZX#|tAe17x(|HBXE%Sr(7H2DMvx9 z5xZXk%9*}ZA1zz$IB-?6a{htkk9z}BX!RH@P|vmlZSA{ZkxW_iNtE+d$h2*uukqxp-2zxGt34Xg#V7ie~5-;rOpAavxoCXP>AkE85NUXR?Xa zafDwqGJjt*5)yII&~DwM6oTv$5)*dpQHBX*1pbTR?5m%R%AWktzC5$c8p@(aI(a^> zkYRb`tm}tEGfVBx^Y`5O?KUbv7mcq)7Y+7PcDhnr)f?shd(r6BQc|qVM*BX)&CJ8) zIyHpp`l~)s=?&x7v!Kw*YIbc|KGODUO_{RoSTC`Ys^PuNs78g1%o!%`Fk;17euD5o zjQhxN$wyw0kJ#Ki9`*R6=p*TO;4h#4^$~CGBR1Fn?jzpUeWG49SunX93rBNh$7sA7 z2ijh{0v}Pg47BaQeMGx<1o_CY3K_90$pk|m=?)*+=D0rhzdmx}Df+@>pQ!$o|LY?! zn*QMiM1{nbY@ zgMFf2FJ9B8gyI&>s2?SpYWZp6GioNJ$}oalIp=DG=|yVzJw!}6%uj|GY;qKLy)Q=9 z?1)cw!AF+QaPr(zCByR7IoFBv5=zZ?80HCqA|Lr)5 zkKAa^P5OKdBS9#&)3wTN8emJ%>a68LP5PBU+xH*&IC4ACc95ZuI917r z%^(vDePj@PWWVF1Lwo)^j?4(OwSVXn^`!BCeWY;oA3pN)w~xFo!9wk4RQ#Kd@G|D? zvPl}qjNTad$np7_^s!j~CypaJ10VU&`a4bvnxObNl7G)9>h#jaxBD?!NYOZw|9c$K z^Km5LKE$#aZThGnG;*AEX8O1)`3%=25R z-#+rQ$Vb>O*^QQQRqy}BM=lom2=lri`bd7cfIcwY+ut|pNuMGg(Ju=?y2wZLbg>u5 zkz~gV@1vz(IcCIuhl1Ze5+wOZp*SBIni+Mng6Jb&qcfwrSLAWgM}oMIEZ1cI^;)At zsiP*FjP_-+(CTdOGEMX-jjg?(Zxqu`)Yyg_`p75849lNn0{KXxc&!-^A4zwt8nu`E z$jLr9BjUA&`G;9+Y+c*MzxJDY1G|^bx&*k9==^+WW6QV(IA{HGXmb9)jXU(Ky1qU>c1h zVQG9E@w&{%5p7y{Cq#;mBMmCv_5Kq6Wm^f+N1nn*{>iZHf7x~7-u0y}jT+_&fueCl zjmxh11Lc=&uy0(|4}b9yB`=%@?bM7SAL%&`rmN2RMrDmF@{w1|T#){okL+l|edI}# z49jMh4SXb6@)0~}#M%p=tC>;n8;U-nxD9`4^skR((tPB~-+d$&rH(k%wO=p`pHiJw zS*=Mo9cugj6nsQyG1PX4p^xM@$%u6)6AXRi8hj+nas9Rb`iRGVjqQe!zEQ3F{ntmf z?f=6^R6@~w3YMFwApgt-F~Jz@^D0^n_9y%cnt@8uP6k?yS}*W*7(Z#J?dR zMqY*&P9bTZa{gp*8JlK|kDV*njj3@}zpT~NVwKjKTC!=?v!=$akA5z&2z)P6?4-12 zR2X%|wQN%4lq;^)9zp>=!z<(Skxr}@a2zx#;p zt#8z|#rwx86#2`rG%T*_-nE+O{X;RSz6Klp%}~9NDfGK0>$8(*Ve{X=Ys8^WJI`N` z#U@40h40)NRKj224MM+brWto%qe<^F)Ykqc9FEV#(LWK4)Hn?Z8}=zL;WmVW_`4<& z?J54Q$#-NfbGN;4`rGdslyUmkCZ(e~Hp$46g*6d$wdM%kSAC;;PUJuMbosOXVXb(t zX?{oAFfC@{d#(xUh`g5n33Ul0FIcunb=`C&QJFo^-*aQu?aW%A z_?LIMgRn(K4x&2E-i_5L#{9)W97G4fy{LtWO4~)2mi1lQ{9Kh()uoM-*79iP%z{Qe zA5SY~e7wog0DsR~FE3bjOmS_9#edlKVq8FLu}-)Paedi(ev9aLO_aPQm6NxlCaX>P zEh3C;_!C1w@=iz3qy85*RA494O0(T5uB~?_D)#_ny2M1~8@fe=b@jXg(j6B(Q15It zBUqzQ_rRKAQd3kmi>d#5q~giDiqGUKeIHq@Z=a~ax0Y2s8mxI?@~uLJQ)y9Wlas2> z;N3B*UcUGu16L5>&Q{x}L-Pt z5M-&!{`Zzuy*){zIOu2F^h{dRkUdH3eP56C+V5w3Z6yB*j71VLr*%pP#YshyoPO^* zz!LHI?%|T~2>at$i*s8zT(Th|#eeTcCUtH5&i8ut+Dz>dFX%p{W+eZ}a~*R$wbPrg zgUhD1u$=_~R4bzVMP>uflc{(e+bZ>MvNbwC7k;%e2)HB13#afYEwxicGq$asw?)9r z5L<5xKE*f(ZG$iF3<%QdoaL5J{7j4{$6I+|W!>$X8w)?4uQg-3>xN(1nk-~s?5w-H zpv{w68V!VNBIr;0X<4D8M^0)+%z^Z4et^X5zdA%vguAr*n62qQJ;c`cppxxG5i8~lZE;GW+wY*n~w-N92+lX8j`fITtw%n>~y&`{1pdqcd!0)v2 zI`f)2;FEafQy6}^^HBrK67_YNzS8n$Z(UgvQ+-`MA^|AcaMT!Ba5N)%^sx(DfU6PD zbbssWb_L#)g$OY26j*C1Ifa)p-~WL|*Y7`0f%kyaMdO8w_7F>`GbrO|2HQ55@dBZm z{^Ota(e7^PZC;ON>!$FCH!VJFB5@oR`<3#_zbH? zdqp0a9RFxE%BMqG`p^G)o|zo~dydxYxjJM;Y;|uWxdyyL zW3FsZ*)Za)C~$7zRn>u)gR2Riq+)ey6J*ljM*V~bd_8NFxH`2ckBVvU7C2w`3YT?K zCdyMGnkdIJJDqb@YNraNOe@$h?aT)n{kjm_FVFq9{F?6C;l#R_?)fzxu5(lVEgOws zgO#Ls?4n&v#;DM|2aWLr;1|}_vghoevCR)Z`l_(uW0(97AuFuko?m2+-QupYE+HA^21w0-Gb==#At4G(&DS5s)u=*orV01emq@;XvCHGe(uvo3)N(PyU%^ zJK5YnYRjqk;n4ZMnbXGa<{4gt&H4gdb_)Fq(-g@z1q-;F6O1r##f;oIzpP?Z%U{}y_M#7p=~DK<8A$)Zkajyp=QKQ z^Xv&swwPZ~&gSSRf$@MdqMU@Y;B`Vw<7L%pZM2K4zfN`XKI#;D)Je9ax-OvpoF&!0 zwsw-!E*wmH2Ew8u138g-CNA3(nUFECOGG2b!G_=K+hz zi@xE^MY)(@@X8HWBV)f8AoAR^y0*cK+^A?ih!;l_V#JB#G1VV|evL{v7Rqs@P(i>Zf)Apr z{cephRxN+drGk9z6+zZkvej*(Sy>}@m&p%Irn80SQ$ zk?zw5$0dBp4wk9i+3bVq#@ZofpPu>+)wT&g=w*ou-L`sfo4(ITy{wvNY=LScOp6b( z`|{N9-1@rXg#_R5Nt18e4qC6pdl(q-_hzJ;yUcKi=!XOXZ>Ct^2f-ua0{k8X_eaLV zZP<#ZezV6;zTFK7KHS&uL2#6BtpF?DJ!C)LC(8N9+!sUrBdCw{ZRI!l_PAm5`m^Pcx(aB@q z=~{CJ#{S9r1_%z<~Hu-3>J> zr7Tt@^Je+F*_Upc$sU%%KB>jNf3^q`0r;|LbdO zU?#8QT5#@b>%jRKs26>$ds+C`8PV5fl*4$)<6?lX<(F^Y6=UG{Hcuwv1Dx4^@ikOO z^tFVcX1XpI1FvHY3=Ubd_{^!AL*C`j@pYdzB`)Er=xe4Y(~b2*%|ag-_?p&5mQ^76 z+7+Bs_}aJ!7ywLtlFeU&9D>J}*&z zHZ`}<>76)2-Odi~IfX{3?tFwQY?F@)6=H;1o0qt;w+s*Z&8>dk@-s2F(yAV(WaJ;p zbIqBow&Ew32Yi*$#`blrp!LOM9swQsunjvH*)h*q9*1fB(>zy?tkMCN$&rK1FzL5x z>m3|oYtxp6@623*VtkN#oTVi|;)%LtQ z`hrnlN3BO@=^fSCJ@X)&fgjy8K{kTo^@A%x3>_e4YJU$(i*E zkFkib0VS%{(fx9HiOr*(>XRl6rZV?ZOOa+KR^xHu6J)SwAV6M360@ zG?KE>sm~Eq5fEOKKt@}|`CbI^{Xx_ORfsKJk03ih>jBAF#bNW33916GG53oGhRVCDS7eNkyJjt%At6Nqhh`&a%{Y&sfN{2Qe7C}Ohz<( z@fIsUVFZ4UvK7$Ruuxb^ay1|)LsmIR#@wnssY-Ay!1n;%2f1x)8bFz`eunWWtBf^v z>5dh!&{rSOFBsEUt&b$Y1pt5fL|{#fhI$g@3TQml;h)e9oKjd+2kI@M$%?c!bx|E5 z$p(<*D}b9Of0ABc&Ahj+qO6SoX`pQgX>`x3bc-aheF__j90F^;+HDCz zZjj7CW*KYo;fxhQjREl`$Srn_Ks_Pe1OR_WKwus|QyviX51<-km#5<1F@l-`;%|0% zD(*HXpc#Orl&!T>4ZQOJP40kB6Vz5acZFywYIzdSDT2MS-lvmfb4ZpWsC~k9Ka%_h zlFd+YcaXq31bE>+3FvGANh_*U$Drou!ics6gl+^W?@A>$5u^sh-?I={cbkW6WSCEx zRGAM&3qkz-Qod)>Vi4c+Xeo&A4aDD{hzIfa5BR$We4RL7^Sv5`J>H%8`&{_F-~rW> zpgIH;3YrX>0)n^VzB;B8pc$ZqtqeA<+9~(um2jE74+z9q(Z)0pk0R2`oBOxI&pV$ef9iuTtrAr)_;llKmmskf4~d7esx2fW{Iu zKd71500RK|Qv)ne^!q^HG z;w_*qfC2&4MPb@DUpQhO0w@U35rTHO zH-!;^#sQi~sZc%*bnI})CL}ivas#1DV8>5;ey4WFntS#Z zGFTLYQgxMNVvn2-$$Uua6598stTO-{2Owi7f`*PEXeJ{IR*B2I{FiB3w?_KIYXa}tfMo#IbAWZ8O+XxgLjdF~??uIT1T6=o z!r97G9~3*!3ILy=HZOU&c(GdvfWLc*8>`hC!z10+qs6(sp_^-4>UTm_wrP>76ux@af*+-gAZ1NN!Y)9ch0YXHQc-1(pd zRDNN=>u!{NEe>@ijbAU8-AK?nK-MJnWB<$)f)W6!a28;Z-5B&K@C|_CVG=uLi3SI- z5kMcvuIdo%!t)X6G!>%Jc~QG0Sm6L(4P<)23=; z+zka?0a<^n>qbB#fXgsNU^eqLm_I;E5}=+a1bqXr?K@QvN$vq$5m~Xuyw`QHhwTN_ z136@@$`>EZnNh$#K+w#pSb1C`ZO34UBMNY$LL7XX{UEvhkef)h)i7qK2r30A0V-TOfX0EwgZP`C0&BXAA4WmPaJV`_%?37|Ku{W>wt!?zeL#Z? z0*bf{E3*MT0I5B)3rVvMavfk&M^GnFXONt=YJX7dh$nH_9(h|;zxIXno&wMv3R*R) z5kSCc09^nG%=1fFNh;_%3aXDxt{@p}>stoh09KxX24X%%o7PZQP+)My?`pCjS z;UIx|9qT7{jYuk! zb#hQ0zE#smD#F+7H4K48*C06n`us^}-vg22h2%QmjU?I6BLJE(@ZSKWg;W?QoTUBg z8;j%oO&qF1tv6uwPgk!^7qt_Xr(Kqd#!Jjxd8%Wld5nN;Af_J;OaEe-`wAdo-; z+WCo>DbG_tXk4Z(x2Guq&j2i@8ixlfM6Y@ds2W)qaqMOeNxcA6l{7`Z>Hm$|r37xC zc0p-fL6MjI`%({i3AswJ(hgJ^RD~>_b^cHRsd3nPy-m#5G1gLozFEO$+wWy zk>p|zBk@X-4+w4wsU^apFv`sL+hN=?vTnKNkm&I5AQ?>1%2^xYNZ)%vPszGf+xv<7 z3IKHhw5nST%tBGA4*>Xw2?e&Uc_mz;U{MtmP#sVWg4YY(zLVrfNVcE?ww*7fpbk+8 zC<0QEpjjlnJ1h)7kG}E+hfpip5W5joAo-YuXx3L8ssu%t`Jb5JO}dQ$MWR}J-rbQA z@D0EOXq2&iy_TgA^c@g7GTV3lE3Qy5{Re=9RO;kIt-XWMjTz1*dP1mFq6tNPXp^pdnOz+M1Pt1jzusA*mC4W?+H`4UJ&Y9awXhEIN5) z6)FlTIj9YwlOKnPr^X0?H?nr4?5A#a5;YnF{z!$K5j;*)Rue$o2|9b`yf~Jc0;)h6 z&+qm@CqPmG3L@yj(Mx_Y2eLjp1X%!TfJ`^) zHpHn%^R$LdFCp`aY`V87L+lA&fQLbDI7r5_JNJG;+4&>tM}V@&%^XDlzm+$Svg*HF zK!-rGGzjmw!0jKG%N8#pWdPv^12pBldkAB373JSx?2U|lKt3Q}P)_acgGog>9NYjv zV9y`f!?R&$Zx~b;kTbzAhA(PHlGc#K`~#A&{Q~zAR315Z}o9 zGYCuPS>AyuVqyJpFcg5m@-MX)r-Zgp5lmX&wONxyS}OpGBdNk(u>}NG1oWKD`FiPt zI6_te!~n_Ix9LBuNy-jTA5`Gmk(y>yli?`uCuDw6)}PaViQ^sL-dRIs{u=GLk+N0+ zw4WehjC=|~DnJ1+L&oG=v||V|MK7F%V&xTrY7$TtGR9)QlA^=R#qm0GYa|9HJn&4y0pRS;XA?XB4 zAgQvC$KNEVE+CvaNR?mUw1*&PKz#dryh~|)^F2ZJ01beY?bnyE4+$4g6lJSWd9HYB z>H{iE$}8>N=|xhmfL0S!Wp4fU1T_GJ>krDaw_ZDo>Kcs(D2?*UfbciX|13( z1Q-+jIyc1{cpzy@QqAn`#hIojpr?T3%suU?*biF+>Hs6%Tcn8>p|${ap)~iE>8Lgm z{OPJSB=BUTubT+91B7W7D$;g*et9}M322<=aPbzPwu9D*S2!=oJ%Su2>UBD_CT;Bj z^(Ux281?CSdIMJocj z08o&gZi~w=Ca5c*9Rzi+G4>-t-he^~>TzKfW|2sC2aP7Em%ZGbpdNtGJz#n7F+ap< zZBIZyNXqBayFila1?UDz`Nplo&H{bk z`ec}_`y>$L1E?7?4ya%%o_b#Zd=wFwzwD-XtDrBEUXYQoL3^9UP&U45X#k)>12#3G z?%y9kW2kNd`iD#o9C9U}Wc_fc7uh!WLXOxX{6o)U2pal+Av!CP{L|7YlyTUIEp`M2 z0D`N-lo5T~SrIf4&`HWTMph6^)jx*nKLPZV;IVy=tt81okaQ$yT!*}`1O);hQf3`8n?TBxBquzx)sf_2NRFVAgGW@GM3Sc@)@jX;?If8IfYuQd zcG*hotRn%PCgtII8FNT#6rdw8LC$7(xg)mRXh6QG>Fmb~#4|qz04`>1w%cCun#Moc zag9{ZZJ|6wdV+W+g640jU`o(9Kz9jRV0}QG8H@+?o+`Ysi~Ji&@mpcA4wf%!^(~yB ziGXI3)Z&xV#byZxbb+8Hm!;dAA%LC{6h9jPkI*; zG!0NA$OvrBh|VPmnhwZ@oF(C>KgLT$A3@t*NbMuZ4bB&vljICY`rxpfZCV>F&Z?e4 zayz7UfHn=;^PS{oLT(KQ5>G56KnnoBO;PIhI$KazB*Q?rsrtJw91<_-5rFC;+wQw{ z#B7lOc2lSB zwtR;I-h&E2A3z7^eiWT+Hq^wE=EG?-yOWL4fCf^_9NnkB~6j^E08K+rruc7TqTp7Vu(7yuJs`0)pw#F1e>fHX2ecW}-Q ztm9xN#)D9PAZRezadJR4W6HY#qF1QWrxsX>Q-+0rzEbYfbz1kN+$I|28Uh+hxzC*3 zgewNbVnN9;MaIrruUSgaB0yuI@a%;FP6R9lu!q!Tv{-P9pe2BCIlyVmJXszyJ0zEa z4nvc`u6J<7FoonY&{)cNWAVm51jPYL1|(xQTTTB-=i)i;EH6REr6Ar#mx13L6DjuD zcmM}ckep?g7(azt*&OnVAhQ^h-NIhH1TBYLZw{=DkyAk{09+>vAG+Sdc#Y&r&?`VP zrhi{WyxQQqDvb9?eTk!%B(n;M?_~0$@Ur5ybTyzOr0KDJBhjigfEJ=O%=s5osYh1v zFV6o0#5+ySGb?M-wia@A01E77hrs$IR}OOCkm&}(C*dA@iiRXW5+2K5U3h~b3W@cg zF=R;Y+415OYy+UF1ifzh)0?C=0?Hxi&0UL=1o8RFDuVJ$s|Hb-vW(*-y-lcRp zM%S;+kZcIaMj$uJQE;$aDk<55L+@aYoP8YBvM)hf0riH_AJ=ZIOMo4;ngRT{WvmGS z+mLXj_WhLhOiR!XKo0?ZGRYN(nC$?*QCVN+))CuxC!p1o?VI^DT(wX}6{rq`v4cV1 z<|@Q9x(jj#D64VqC0wN;R~>S@A(KcIQ~1ZBcu4IAJ%*&5m26yY96^bI`XWckoD&$_ zkw^mBBU{Oc+%*Iw13dQmM2BeI5Voq{e5 z8$kyE;dG*0>nd%#5OfI8azNIr#-JDA?#W>Q_fhd|&;x2J+mYABPJ9H1){;g$|D3Os zJq1v6va)i`YG(fAN+#$lz zgY+B+fKvpSY84-eL%0r*E3#E<;1)tMCjd+$Bdho5;YrX*K%2!C@;oO2$cjgUMC!sx}E{rN{ZkVpra zkZQM)>$ehg9*`Ru@Q;JOGC>yrZ9q1xY1-LzGeH@EZW7cy#QP(){6#=bp{p6loos8l zQ6>(ImvHDHbhf-+u%Bcv1HkG@)*93XB(T;U&%yNoUjbD`Jp|TnVWV{N5Ug^=k~-Xi zA=t}w9njRWBp`R8-uv@r{6l3|*^qlFpiy#oLfBDCb7<2_4}Nuzm7qJkAbxFep_ z3uhBr#sDq_ZVnQd=DNpQQg9avW|M*;xohFeNZtcIA!yXt9SaD$4+v8oWE|aY|3!kb z0d*if%2y(iV|GLfK1fD)lg&O#olrV#WPP&zV(EL5V? zKxqzuk;pa*6!LkkI9+;%8t_T7oP}0ABznyZK>t9#DJV3l_9@c#1TxJ~K*J0y%aY_< zNNyy_NXI~Ya0e@Vt8RnHcF+#cPS7sUZcrj936u=l1KJCc{kfJNos!L(def0~zk}`| z00Nu+@U++s3jh_MI2oIBs3uws8lqvC9NY*r=lZn4l=UOzR+3qByKWmv&?i7s2#Sd~ zol99`kaZv$Vh~8i=JyyDOOl@-?2IK*11zOVh;bbcLCk_Mx z7z`5F(u{KA`1%WQO&Be(6*CjW(Hx%00?-5kTYc_|IL-)w7Le4MoqEwejBacTL2FOh ziC!-U6i-mXl5XhxP;CV0E=rWKP4TIx2{HzB22z`T^%I>4mt&@ajQr2fHSwPlo6p(7 zv0;k>GD9IV47B;%q-_LZTw&<|&VyuZTgNc*x`w$KOGN?Osyux`a%*vNCIJWm$=Hr7 z5g2Bmyd>m~0^0HLs~Z7I05a$jFons|6NGV!%>fB4F{CE?6|$KlnM+bhS6seQ0h>^O z1+26L;bF*i?Gl2w0RDmkzJm5_yuXsNTOfN~09XpO@g_P1G+F}k283rMQ*~nNS^+u> zXy3Xhail8^Ku)FZj~Hi9>hUWC(>Tlp2u`_vSe)XPf#eF1z*2|C9;5=$!Ps1aPK^z@ zLQpv*ThU2AKlL423}zrZ-m~FmT)r*C_yGvs$=3$3%N7eoGc0iXwJF}+_bF&C=K%yRGp2mmc zv_PU7fU^K(?D>@iy9ufes2>{Rd1K!UYL#>pQUWbf5+tw}pM^anR|9ez2zuSoRQ!p~ z+qV`$A0FDZBB|Pd<`eYsl%v><%yA}oAp-j;A2^t#>LA$PYIA0dSAJFr_9|`jypqEW z#X~m<8!U1Dd#5Pyk(~!V*zizQ;$lji;T6R>?^x{k2q}$AE3N3{GTDgdgLpsZw@CQ( zm4^x7{PqVA{H`t!$0W}0ndgA`y+a=OREh^a#PFb&IFI*1oZs-|Aq<@VzUP78x8)%X z{3_^)l;#*8(s*zH=j+M&Y>x-N-rX>yN$F?BaC811y%by#Z)1?=un*EBi(wp}Az>T9 z&lWp=r&#(m(!W3sC14|nhXLThpcSBF5|%0P9Eo$ePl%iG*Lo0C5*Jf=bcu9ZkZ&=( z=y;HXM}QywA2Qb^{2BNcDQ=00Iu8yKcLQ$^3YOCR1@xkjkGLr|aIFC1p+0zPDIO&8 z2#NFKaR%}2Qv5BrjJ9&+61YW?YUlm`;TeGy392Jw2JRubk19t4U2?UXPscm?st2I-=* zIR9dR+m-qENE<2cBk^el$GFtOV(EW#im_zr_zm#qpsyfj@pXFU0p3%J50yC2HBX9f zFu)EVo^FsXD(9huy$3fgSA>eZwv<*E!wsc+{N>mf18ffBtEIFK{E5M_&jxX>vxGIq zV9+Gc98ghMjrcy$JqgPL7s?kM#rThSO)1^N0PiNngAK492JwG2h_P$Zv6luirSRS( z4=V5mQd~qZ6-RnXF>Jn+PLOyecup~yqWqkHl8%|-t;WuRSB`nbfefq#wxdVFoxqz7*-55|##j74$+% zf0KA={sOiXsw3XSAkE>9NRI`DgO(LL#*c3^z_JbE`H0I^_%Q(Dp|%RQ&p=&4hG7uW z!JsuD9+FkK%>~K@6@{Ntyj)cgsU`8EJ3-y`d)j5<%Kg z!g_#5OYsEoeW0_T2cUPL;-Q>FaRifa1FRY1T|fg3u>a=3&vohe1@LT;Pz_@Ys3z!d zp)2qqpt+zmpkz={IEDCKDg9C6it4yU3@Qo(rT9bxtmxR^_-X^WeFpKfh<}sP4mJMG z*$(jmpkN7$245w`xzss>I8Wb2`b{y6)x=LEkQZnah=-Zri>0`TU>+=`&lkgsju-Ja zhR17(Xc>vukhq7$i}G+j+5poc9&eB~l>1veQIfqT@t5F@Yr`i%#lv`DTMY0Eh(D6j zh2SOY6we{1D+8|&YAqe_^FQQ90G|#zC>?(bu5rX&L{L$fC&hIVzYYEhWbY(Ow3WCo zc$gGl3cgc{bE)fyKLeGhi>ITY&Y!K0Ig8r7B+gT# z5T6NJEMeQhuY#U{6!k>;;{U4vcl{s7ie%gTkK;an!ADBi!eYnLrSv`U_aI}JBJCJ^ z5O*|4w~*r93@|PoB&9clUn+J?Uo8Evb}?3f<0kcsqyJ6YN-_@C&W%cicPl?H?s3llD>mO+@8D% zk@$&iB;HNrh9W3H#uO9de3~G+4WaF&WBeQI0peB_T7hZZmF%A<-Aor+$yvCz(&QU^ z#<>Jbl60#v99PYvbP<=nu`WZJ?;@34(D42lfgjYiw9qxM+2?&CfTx%aB;R(#xv|H< z=PCF1563NS>l(~N&g;Zb6&vkRowl=FeUfM9ZND2;;awt8;z{5QkWQBP9`Hs;?*(6i z@p&-fJP7~p#l=OrSh1JgxMqAJ^zp*(V!OcrUWoAT4qaTQz*?ROY)2CJAi<0O-LAZS zc`$5O4-sPC;PmZ!e)ESZv}o7m@{6}Z>{hqI*I#8^w2jQwt~SpS1TFt1kD$an(9Y#hWR=TJ8&V|#K>B@e_1+=R$ z^!uW-wyB%PwPk+x6U`bZTF2Yq>)l$u)(inAKB@A5l)Vc)RNEIgzGp_mWQv-a%)OpH zaJ$qnJ&?zshi;OJLe!8~Z;~kFc&k*?O9~-<%dKvyR4Ua_;v!UvThgE#NlYaq>A&_F zW#s;UzyE)KIA_m!th3hIYp=ET-fQp8y%DY6_2zC#SWj+1nmOgoXaTJ9CW48iAOn!# z$q!1pZUtk$cI3~o2AR*{$Nb|5L!;~s9EFFcnxsH=7Vt*{S{<1<&en)V!;Pv>%`D<$*eSetVE^84&f+II0K$Mnk3%QHg2=K?$H_n8s@clzb-;Q$HH7t_Ur! znU==O+9T$r@v`At51JBIel)gj3oRGVph~90x8O<`pjQ{a0RYx1@EbzQn~l1=6MPm5th+h}iqr%XfKQc|pN{rkWq zUQDuo>c~kAbc~I2JIo0_((G0c#NhEg4ha`~%w_yCY3-rx#SL>As*@&yCMEUHOQ`Tz z--zLSa3uJ=Bsg402Mto<$E1t@!D71jSuCkgo5`At^+4qUd*u`G3FS7%N_N zBAoGUQr{77l;&(uUcbt0zAmz*BL!CW!ZQiM2Pa#%pDbZ&*~W7X3IOn=KWuRMn!>*v z^exepmXYNH>l3z&c1wOg8%!{)Pq=K1Tk_aB*c?ll)4@clI+AZ+Ij9H}5-uW5d*ayd;qumDsIUJa|hw3GS8LO$3gc; z{fwJ%MYqqRO0z(Dg+G#r<=sBwv3;B)F%bCa%I-TlTDy5nABPV@CmJTor^uy8GcLu1 zYlHobGGI{!mn9Xjkqq@{O!(Z5^=TX}3T7O}jXoH+l3(4DIrF5rb*j20o8depEL50p z`VuzaHc#A1RZHW!PAI;E!pGZy<_O$ntAPU#L zAPx8?k@8K%Bl$+aeJo_bo-R4!IRveZXdfO(WY)6SoxBQ#=-0hWrC&Mt=4xm9`>KPZ>vDu zylcVx!$YA89zPrx4x0tyZGK6h@`QG<8)FqK?sS=Js(+62fEIjlegTgm8Kc<4YXyjjoA`DSq9E!gse)YfRhOE#;fU zLn?3M8q@Lt%mCjQgK>LiQ;tAkM_ z;5H3#+Y^4@72_7LCtN#*@c}SY2HgB8e(8u}<8HMIa7*v63+qVS_->79mH-BDi&Env zsq*|TOk=fOXY_H>_Jq?nHKs9^B_SGrJjq)oiND?Vy1ad{Tk>HCDgLjQxFui5`2qZ= z&2u#a{2vU#ztZ}%kEefm7u038cC$qvr)OXIefqzE|F4I_V`CUM_JwOBZ;GGaUOsY4 z62Q~rQzl5uU8#gD_bv8)9J51%%6-IO+*%ynk}o<+aa*?BE%^z~58!4xkG~jjs~CbC zvGlXgJ(COD{7@uYyK-qCrvp%$gK=XY4nGycxO@n3gF;US++32B;py>NQryrUDQ*IX zK9130j2pLxLPNKtebk_>`4z~|J<{Rdw2O|PeX1P$j*4SI&BYq~qVywRcOZdjh86O; zw#}Q5@>*SAGZ!2&o^X$=br&=$&lWpzG9KY;rF8emtA(isoBVw`R@5F%k0pV5$^vVn z*KjS*ynaw~W*e__ZC!%jUAd7gY_~-yeVjb`NnnbEi#8{rZ8_1N>iSxj=Pl5!bT42M z?ju!DM+5nc2yh=x7mZ|{iceIYa$?fGy}pcLrncA|xyusB%}34dk@T=s1M5{jwhya0 z`Effnw9EKt_4owRb__Vaq8^HeZTz|mypCsYnGZTmCL|bG-jC)ec-bZy7+|&q{4jFC zv&0Du?zhMD%D;7Fe6k3mPSX~lpS<2YHQ{}^FOe;cchY;hxmo5Bzp%jT1=}V=rhw_R zni}_V%#y~LF`<16Ga~owoS|Kt6ug?cm%)Q#08J`G@81-E+pIOoR-w;MDc4;6ZFaGN zL6MvqE6_H{(!J=O8Y|fLl|e=k`28bg9AeEWG{HW`mqmf}VUDSb7dZOR&9!@yB&!RU z(H7eLqbjenWm^-X)hOC9BXdW2_Md6I8!b%BpL!^I`{xN))#3e9;m(ILjA zrhxlxpHnQu&3&SmYTF;>(zFgU9JR3o36A}cp!M?S3@PVB-WI>DGts?y%}!JTeBGc@ z?9P>>tGOISE=RG;78zl&Rb_gny1!)2vy;eSsZ60Tabh>`UdG;wDe1&M1iw$})`9XI+B=L?_7hTA3k@ptndBJjF#qtV%||P}z$+UKUYQ>fB!Z2F1huo5-fCzWccUcf#CgNbf1YLL zm(HHbx^3HQ=uWrX3%=eAS$Fsb6ZvWLU6*q>)sFNRfrmK-N0og%QlQng$2#dg{mNtjIg~~DWLw;F-tg6pvk7?6`d`4We>6iW z?fC-;PzT?+Z>Cb(H=KtAB8DuO$Z6h^8A=-H=@5IX8S*mF+hR+Ig0k8eoDI1SJLhk#6%DvEH?9(AzG&F7F!Fm`;7?-orHRNt?Kk|N9ea=D zAvu$UNx!97c@ICWoL2Cg910zNT4=|b3_qc_OwCYMgWA)!9^)=Iijj=9)4CY5)JDAK z#A&i0$QM=amUa@rF@xScEu-3R_{AA1R(c~(S4tksIkDUq5)^KYJB?VWN@4(tLSZ`p z9Ak09(s*{`m?fn~G4U6*i;wB9D>z4j^cxH^Wx7^@|L})?DOQ?lr|l!2&URs~U3hMK z{!{2<8iM7sW0l{GVw~*lv}PSzYU8)A;jjO~QZ(K2?B?M|&jRhgpRQD{j&@}Q{1=wQ zdB*$1rSZ4_9kV3RI41svcI&a+b<_+0h2^X15s3lA-~0<8O-|cqRNq_43SHPSy}tUt zu0!x{`gWGv|)S>3DR>g;qf!Hz6A{5ubFDK(dM*}`%G>POWHdppe?m%`kzc-L_-9_KmG8pSLgLx%wIrlUS&zqRg#8Aq&NpMm zhnvI{XWM1C!>Ur+F3E@{$OiR(3)f;&y(_OJ*0BUDP77m8IAa7~0cKeu14`#*C>$JBgOEwfRBVU4NGe~gs z<%yZ@Jwe0k`+$G(r!u+eE6J-j@b z8-;F>eyEHo+C%4WXT6$V$_#sC7oDVM!S>_d* z4F=@a&Mu%m7z_xobD(=j2)(E;<<2*nWVYp&cUzq2S%oDPb%u-ZHJN&9s(e zk+Z8$6}y`AyfAQX_NIp0{emOYD0oE|&y0AUTb?!ZJa6J&SS0>s^bWFYM6%tw!6R!n zMV5DU7<@7d+Y+`YjkrVlwVtvLjK?qN>%t_x3x-CeXPM7GOlEaswDyrkd;l#XmDZOm za$o6Fl~m1{^%{m={riphfCo=}rfAuvPrtz1{@^Wh!$%WVyb)=Kz(N{)FI>??n&2K| z>%WhSR(wQrD9ZGSVNB&4V2!*TP7o&8M|nI7xeBaHkb z?SQl=Kw99UG*n2ECiu+`{bo0S6D+Mk>|$-q?PKbmx3J#*wnFZAyQF-sJX6L;C+ZMe z$M@!K&d2kc=H7Xm%y3EJg5zi{TY`Q^DB_0bvZphxuYP(U-Vnyi-_7z?78z+lCj+*H zqaconresHs>45EXIqa1h=H*P)R~`xj~Wzj|Dx{<(wUP4a;z%Li^Oh2JP=Qe>W4aj_zIODoTE4_P+Fvc~JFAzGgz zs;KdCnAXYB*b}Cm3&KKG)rmD0$hJiTRFJV<(zOI$w|*mYcc~Gp8RUhyNA>~#3jD<5 zdaC_r9D{aHiPTM)CIqv3WY-YJj}P;%N+iRY^}%rC_wYNIKe!!)IWf>DjC~MdG0k)N zeNN~+JT|0~=zss3R|?5Zcv2JopvxDJ4Gl`tu^|!|p$RRZ5zE8fNH+j^Dn{e(TA3Q! zqJqrr#Ao*MTFx{wAG8=v=ry9eCR;7jWSni(Nh?SZZ(AHzyV619<+vyFlmk47#uTA(#z0Si8U2tkrKzPN{zeb)>iIrf0l*_&+JS)_2OcUC6W?R5#LX?6+#D>gQepfP9~>?xzr zJ>m5~5=PjJP$@^Dq0`Jn+dM1&kx=;R(7ea#2fvwq?zDh{O- z<<^wkfXJ_bRqo+xft7wxsrh%Idcj55K&0w@h*}_(&_VKT6gg2jgZ*l;PGkrYi6R(C z^GIm;ywvy`a_E{nd$p-`uZ%OA?j46Bk{D}Y<&1e_*3TpJ{<8(it7YGLWp~XhwP%BrSKD*FQq?yO z@M=HJUj02DvpzKMXI_aWf#@ts30p`}=}D0UG*mE>^2c{8_~%V343KvY$B7P* zcRu#dyBFMBlJqH;fV>nL@|4%ll#*AxHpwLKS4^HDiK>cxRbY=jNm2aedS27|Zp;XT zyBLx@5MdU%ds{ma?1LeO9|ly9UHXIR_a8kp;j7}1io%N5SrWt)Jb zcNQGIM}tP8U!&zZp3iS{K3v^Izw<7cu`-n#rSNp8la6Og~i6cJU_fY)Dvi!iW_=%blK|OL~?A&JlV} zD^BHBkMWUAFXSXH^w-u60(%z#_HK|xuuwrwcJUj-c{$HtGJ85_veE&VKv)~7|Bs!#s(gs_xRPg4Z|FLEou8`Lp8lY`pqvUlv`-G14apxR?JA#WC?9o*FS zcI2?`fKm7`LKs9nzPxkPo5NvSwtJ-s>VU^R2P6v`rvAiZB9GExC+XeC+xV?9fe~pu zp=y>p2H6E52SpzQ8zM<6|G9=wM`sadT%Z5k;vlP+U}rj0RbC5ayELUOV&QBE=Qudy6c1+}oOkx0 zcflFo-wo&Ka8Bs|y$8+*;X*WA!-+Z&+k#)kuL+y)9VdfSsGwl+cPMC@*X06f+zOaC z3<8#iovyD%u1TqcKLPu&$Sx&-v6KmZ!5^of3d@c^NFaEUKE@lXE>i1|m<$~B2D0R~ z3o<{+EfDZ;kN%6ebrm(PoYD>brICciholP`0k7AA3j?GH;NBD(A-{qX8FEjB&=eFc zi@le3SPL#g(nM5Edu*P;;nBnw`j5~#a%Krl>ewTD*vKwYY#aWekbFY0h;lLt4;Kv7 zUSbEGC}s7$c*)$|HIw%G>jSx|i(t55z&&VGe=adDm2nSxM~FgRv7bvQlA-RwfhQsI z743&AXqv>f$VH#(>X+UMvRMY&NYnXNkl?s@(JgQlRD#iPyeOfvT<`m+4c&PjznYWS z;cnY@dBXHS4=6*;eFTNPDm_9rR;lGyX5V#%-4x|}rV)MH+S9}9W|?Po!PZ{sb+Zf> z3B&4Uf&ScDj6~DG(}V=&)T<=i7HQ#F?Z5a*V3|W;s^B$)tKfTF<+VLs)+wB!f~GIZ zHag2QFK=PiTsE0dW9t7gn!`0(^vX2j7owP`j7W2Sb{~-W?G&1YCt=b$m%xn zTpH2JxV$5feqmMW!;i~-qA%%`9p}V6BS@h1D}O2qL1o z$d2oQX1;g~P29%#WVayx&g0Q1x^klB@^n5NhmPy^pL8&+5+|x-d3FzT~jK2GMQ5r84?}D-idfj%32M&Vk7@w`|fWPwLspI}zSc zrrZh(sFvTm^P^6gfFC~oE8~;SL@>8fo%I$9i3j=C{_{IHW1Z9n=Yy(J9}Pb%6K97X z#g9=3?~sEb{n+#pzfLw;aOsjQLJUME{VJ0mXd{tvGqY&Ln=3fVWE<&DZNUBTuK$-d z(htua^~cZQ50UY6MqjpsNgES&2IvY_3f+q22LYYm_-{I1(^0?#kKfA#I5QIfP`02bLZG1eH?G?eKDN}=>DN}rKpcw@wA zX4c)`CbU}Q19B7J&d=6)csx2}bo+df&ZxBL(9s{~{~YuL5j}l6#n0_HU#>2Veev!P zr#G!ToGPcts5|>!udKU@P6XrRL&pS-24Xk0{H#GvijzV3et6|IrAs4d2LI= z#$*%glY)%M!r^Q^r=XSbmuD+0n~M=*X$3 zE2`?1Y5GDhnYC;K4kc5BQNw<{|9fNH`x4RWJj2M5>{(7jLY$m>L%g2f#Co9mZjMIVHLK#}502 zy~Ziaovg6~!}3nk1tS!%jNKNyY0mNetM>cQXXri4_PYyXwlnp_*($F^vJOtKhH~7n zn{lR%?OGMxJBoQxs_X!#N_Tgl+`IT}hq+9H4o1MA*D zqVu^>H_|A=xR^C9=cAHuylwuo%_LHt9paQ^c{!7!!47lkc7Goivybln3*q5^S*~LA zlm*cqTDxLqlYWmi#1^ndfD-So(-bslnI(K1^oR8Sd!LB3evtM33KK03ccypXIAs2d zRf+ChN4)wWVbuZQu>Emz#P_Q(-7?C8bR*yj?lh?^JW~BcYD}+Fjtq9EQ7h%7Q@74} z-jrQ$nQ09s6ApQ}?;0ZB$bm^L)vI|{!MW2JaR1)d6psBxn?kFxq<9bVfGz0fJR)wl zS2VYO;hpO3OAzgv^E-%Ou7^QzK2sVMN8qTqq(USN>hQAHFhH6Eh(qqD>UWcaE;wbI zd^WsocRQi<;M55sk5Rk(@srUapJ|>Kg`Xr|#b%+LD@v=plL{l*yIu6kkkj_xj0D@c zds~>T6HX9c6o}VZ5PErrmwl{-sYjTc;aNdc<37{?58Tc)xqIf%av};cG&u^cG1F%0}Z1znxfEL}Sz1KcZ&0_;%t!5ziTaoA~!}lQnpLP%9f_-QUoRLWanf&)G_MNc=fbZNnW_o7e92_J8 zI0*pvD#SH|*ag;Vs2i?}jz)Z53e_1W0%A+~xGF%kks3(p5hfc%nb=2@&%m1fk(z#9 zYPSF4pOuAF-vyLt8Uw$D%fJ)p!e!tEXBPB-e)sudnL=6q;M;?CFv0I(82E$V>$$YS zO4jpBG(l(ur)naf8QtMVBcT`B-ps-_8i<2vHGG zig>Nu0RFJsh&Ib-4zBjj_z32-@t&R?aSO#w`OEPQqLMUACOli9yMJOWkW0WHgb_&ZDPt0dqz_Yg zCn$*7X@k`X%3fUOMObPufE9o&7lKY*4+e2y!}0#0Q{0!j9^@I12O$XbhVh^VznqL! zsvDra4STR}&dE54^N>KWh#fQm_jBOGSfpYr`d;nuJ&ek`H5_V1&hft~3N;tSYg}T3 zk0ol|IR(pf_CjW>Ue(dW4A`7RRKE>T1Vz;HHJn|+&}FJ}ODp0p5(3$4SYxDbeSwo} ztZ%*DuCx+L6;|7VBzPbY&ZAu=sX(ln;WO+?g~^W%Pd4Q+3$w=}&4khO3zorifam}~ zOZ+AVn9YHZuKp4pd)iAurDMM)zK7%>u9}~-hGP}t5<3v*x?wOs`T}z@uBu7-u{J0t z;~CCF!W9jI*;Q)HD zAo;_e3K-GDq;&!1!EB{2i`j-O5TH*Xxw50{XfjIZiae%ueu$uQ6$`9bRH zP|T0cp#S6t|Gi7Bc-G+%MTOdn;+HP5-PaPeG|q#3gytq{1?f3l1Njh2<-@OtdTQMd z`N)uxDV2`^ee0W?+%5XnCT^sB1d{S0!txP?S5AV&Y8l??S}I&nZFutW6=q?TR6dq0 zhg(wl=m#j34*-}aBOif)(O~&VSjVvf)Cc5a(_ntwUy+lcGET~m53V^GrZ^7?%SRCA zhlkUD@&mcM#5N=+EOkMVL3*tR6Scma^ir4yl?bW+&#PHY@$tz4`KY_dcOH-rKNJ^|Y0SUyD3iY1b}M$LO<=y@rJ`L`a($404q3%F0uS18Ts%V%#W?YoD7GFQhqe-&&deJc_}}L8qgo}KmE7< zn6iPhw&F%rJ4Hc!QS*ySZ1L?xt;ZKYK5XwKY6a`Px-}plL=jbK!w>n$mywU|bbaf3 zPECfs^$A~6KDLtbAtCk0&3^f49d7PhDpY%BIC0liW?_v~K0F5GqaPqC9~fYRjC^o% zewL3<>o}1MR>;VQ|6qQ!9m~o1pe^NxOG-`#TW5eD5T>SLTXN(-ap8;Oj3Y#z*yM~8DVk|#;|(U+K$aR=uiVf&H-@^O9sqyMrmMB)Zc!9$I$ODPJk zF4{Y;h;?`ZX5|XVM-61Q>20YRkPl%|WYB!Duh)_C5k$&|W(C$C z-{qri_{nvp!nS9Ip0`0hYNhhAc|bn;0h0280XECXM;>4_NPnP}8#pJtNco^C@kt{K zj``;0IT>TvQo^x+L`;P!h=cpbZcrfd<-nzYL^1_uxLfuoX3W%nd1NdhP*+@h(#vMd z8qT9RF0qI|ZVl&HQNb{*H2CAOE#ESj*MDT^WEks7dA;>wPKF!KL&Cag8SwgOz<=@@ zZQ8`SvFg~uhe)CMBDZu!Y}toIt*SiWwf)CLt?hcX?}67&QeB;1M0MCSP#2{lMe1te zjlT6qPB$FSY$tiWgXA@Vc}=_1Ul)6a3$~XE)9MUQp1H;>?3VJnVSv~9Qh+3{F~ANP zUjK6ICtefNH*pG{lf1sGYJ?=?Fs+CVQ~Q;&im2xwUmNwVV}oQ?SaQDl?hrl6MJ_F( zJ?8efpFC`L`m5EHivN|wZ~4=3hT9q2^nF7-Y=TScyeRy##LMQ61LyrzM{P0ou-!+h zp>6^BO%WV7(fJnayltg>L+UO~IB~62t`9m!E=I{IjW)CC)*KZZ9W8A)g+rO)b`t^T z|3fgg8YfNogE#(f?I!V) z`Ipt8)eEVE5gKcp2Mh20kNhbD_vAW7%em(EabEL`DWvOv_QovqbPfDY0Z}+x! zP0!@*cp$Ap0#I>JVP49{E(rE#f}e(yCV7N|h`-RuTfD^6eYisCrSt_(-p!*EIaSeK zbY#y;9DHH3ff0k$OIKvYNAOrjqyHm3_ zp5Zklw=i2yo4`b0$Y{zTU2UXz+GN80Kg)&iupb{Xuu@;T2Q_{38Q$%b7G^U%EH8!( zl#8A=G5@s5-N%2HOTwVnL<|{JfW#iutYG-i@s@;|(2+{6sU_ZDA%E`uQ-;!-F=gJSzZ?thpm7 zFUqkwzHHnFEi>KX024jbt98}avR}SHq4mk=(Q_|rK7g+DM?iyM%Y3wDe$r~pJlq&Y zw<)Kbo851jpL4pPWc>6kE5+NL-Z=8qQG6e(YOxLt$;D}+Vd4xL+G3VDlIz#NCwmv- zgApH3obt|y%qO45h4B#0b~%!q?zhHmql*zlaw)P<6kLWss97f{5|&D~A4+h}5=i9| zJ|Gy2{A&Nz)~)eBlB_Zk391U@L~xl;q9>Y+zRJ<3sQ$Dt!ZM0PhZ|gvRIYF-TCxx-(G8g27CL28GmqtlHHf-fn zqs(K|%e%ez@bcHPrE{-jBEK8B$mw!r(XT#EAMSIq^Zd1afve=)D;YhJMmg_Htlr1_ zP}7(&ztf172mJgAA#oF`(OaKPt2Tf zrul)~WoH7yxIwN4CR_QL5i=A!dmk5BeCwb*wg`)SrYC}-RX=GXUar@_?E>dT?>gLY zhXnl3P(k9PlpeTZq%9yX^2s9{i2A45WfGm;k|kaoQ~j=CBius7 zio1rZlM6SnbDdv#XWY*&i#O1Nu0>`5A69oIr*o4o4U36h=)L+}!8y1=VbKhhEiXrwVcs`vCoZ$rRD?nB*2? z+L`U;m1mCgEJJXC;Gx}tN%4=A{3@sw6-kz#c;1q)37mQ}#cs@kR*0u_20I7|oQsnh z%4spSCk!Se`j(~Z{KAV0Wq)+8^r6s2f8BnhX|-O?t)N=$ z?j=FO$bu}$^t6~SnFfvDe9J_uf8iDGVD~zA_|&HrhC`PUj4beT5I;wzi;6XZP}c7? zTFG(RyF50f@i1d{4mZkuxF0!Zz*3~K=KLA^^JgdHCNL?=!gYKT?c1DV%EG1&V+w<|jKQ~Y)g%9 zG}LFwvMRaung6lYsdz<*ir~bv=&4B0@ zk=Ni=353Tf{1e00ew>{7Jg=m3<^@B`on#Gz0>!(;L4pEn9m#zdxvc0PgKGb+>$j$; z)z4NOqYw5_cEuFYKGgPC=|cPFYg1-=t0GZW41>srFTx+V)Ebl}!CMjWO_@kSB`ies5Sgr-bRTzb7$F2tN^nU+Dj-Y1E<9+#ApR%P+(Q$TSq;P54HA$LMrjVfOSwF{UYiX;9fOy0>7n}m z#&v2OObYQA%1s4Qgh5kgZv2@Pw1VO~ocYWMMncjlD7umSj0m)15}m(`-TUo>P_e*t zVk}o_*kqR^O3sO4yV?3KxxVjD3`<}exD@*uWDeWIp6*iP>z_GnFWcCq+4o|BzkvVb zUTB+^W<-&k@Znjg83q4_aD=`-YgExME^6JKks zQ8v7erqQmS4pFe-8&YPcwP{sDzW0rK!8g?TMx9EG-Aki+osJ4rqA>o@CVqKp<{1~L zl;QEhT31)>{=yns*%TV#r%F-+Y}749H4mvTx2Z4Lc04ZhcvA*}r^I9TRC%vdB;e@9 zL1sW!g|*<>N9EK`(=pw?6sWlnU@$OflCDP+&r|GP?lo6#`O%B{j^0$RK2`$+g>N*H z{2COU!~;dIi8yAV^yYPib=&8U_L`^q9bK6vA67C61AV7&Oh zZwWtqlvp^FNq6WuYuxM1ljto7%bpei20%V}NSkMG^ios8}*_;eizqBSbj%qTL*Bw5n zYE49^iPD=}<<{pfe6$yw9@?nrV-mCUtLzVR%pJVwY{#Pv$#-7Y8kphx;m%mIG4X4MFiA9$ zCU8)EJTgS#+Ff;z_Ut(7lA%nhaYu*Nx<`2^Wn|P?hw66P3(gD`$V!^s6~g&q+`VP3 zS~tgr=<=To6{BX#pDyXQYpicf?G%35Z8j!rC_<=%aMZ62YSmI!4~dU0QXlSg1xe+4 zfY)d{|15j6MW^zceP+>LRx1rVKa@j$#$rdsrxqc_T@~sFzFm%^;t1QHDq60p^4Vc; zPMCS#^i}$E>ND$zb3=>FhKszfaKm%rBpUCu*tQ|M>Hk3&gUlJa) zl{nYU@3bzuhUkj_1EC#s{sp$*txlou1vAg*>y(Dw9*R(UKI(pAwft{&kL8!*_=zAx zu0v&LnhL6SDK`1X`juU$^6i5lL+ggf5J9I2Toq0ALu?#N)jvGB6i3}Wl(b3#IVQoV>Bs3GdDfW4W z6wmobee}|+an#_UbQP;BUl#ozA^#Tpd|jt=v9)&as`c* zjuBzY0AoZ}j_k~!!-eD+(Z*%$%w(L01P%xK#zfh+u1nis63>t^5n{#lxDQTEAu~~A zh<>+2o0j?E5QUZhs<*6gPFS*>omq9buz97T%Ha@Qw3VXrZhyKLI9d?4;Zk|7)_UX= zmV)ROd)n_^_R*zsM81(C9Z{<%qHb84eq!jdwhX?{zv{o_WoY78l(YV-wHCo}2H*L5 zoEUDB!x`jw#%Rt9vXd!Z>v`DRpu=r|&!seBbX z^CQknX(CK$_B?mM9aRk(!{fjESN+E7QU7D{YpNqxDYB1*#25anK0fGroQoejQ#GYf zSKi0q8NOAWh{>Y*Wgq3E?kkdQ*W<>o*M4+hh5_gE^N|EL z0GVH$S8E+nT52{e*xC{!qp2BkJ&ssB+FI1US?SMPwbm0RA{;ST#-~$M>eTP-n|~z>fe@Ol3J+i z;A1fSiE{$JW!3ku`fwr}sjk;nM&bJ6%|J*p1JUGC_E{*3E5Ncc!by7UzL!&hAv?1= zK}t^>kDd7i=OJO)8#4k)Y+rFf_DqM!p5$?EoP_(=CSw#Cu3u}|rgbeL#KyEyz2%`( z!lP;I%xQZHn^!4rPxz@GX|AaB?XO37*wcQItw&GEdh~Q+=rpKD^BQqI;$uvd#cM$J zV4e^6VQw7E+lkn5-|W?Cf2BP_G!g11E~|*aG%cA4bnKDRw8MyVXdb~p+0|Rn^xtX5S!3O^~wJ_C3qOKGoAJp>Ut_3+ygZ2kf~4OS5*4- z*Qa9kG*#L9MAAe6O-4XdoGeZL{WR4}Y3c)-ilj8jNok7em%r%2^4Bm6=-DTw&CZOS zxfJIiL3t5sBT%=kjWN(>K7=;G=iE5^Z+0OoQS^R&o2$ZixpAJe+O($c3(0!1+MuM% zDd7V^!?(C^a^t9Cn1+?ikRv=5h5JHu3qasR`Ce3t%0H3Sjq1Dnj>53HPd?&{j>$oz zS9C1;dJ!1RkXq}gnbK*L)Pws%6!0|4^XgrdpaYdZ<;FRg%j%7oe)?hu)3@0kXgVaN zuWm8uc$^=guh-Vo9O$zcLLYx2)FvZGFB24fK;QN%vc4WCvTxH0I24kl?PV~0fpbE^ z5_TrOmHrjz<4fric`DvM)K6c8H8m8^t2`F%RAM%!`=ktg4-ZM{ zoBSI|pJd+kIQylTKC&G&;F}9fX<|>s<$2o_R5z)gC`yi_9vW&|6MWFg^;(x_D(!#w zz&beOqkZ}%a2bAAm8W|e2$tW7Bj~eP#Hu&yR?au#1c_~0TkIi&TT!@u$akU}1$QY6 z(|xJw^)IZq1a}F4t22v^qN&%J$&oW?1WjH~(Bro~kag(GsR zH{ueJlUj(6&t z-EYQ;HfOK8DQ)EvdyZat0j=EA3_|0^gS&x&q^{7COLRSm#3i>r=Dn-BE2%`*9E$2;TrR<(9Gd z=iaJsetRR%;bxnbpQ`vqKNXTV%8hE^L+&xuy|PRBZ^(B-Yq?SI0ou=)4-{o))n#a_ zQ>x`ED{jQu<^UW23Q=IokAWjvW;BvnIwiQfO>5fi5SxAN>XC0O_q0QEeQ;}(zkx0)VV_+0QTXne>B-wOl!oc8 zkhVr;T1Z(i<@6t`dmGeG_$S9z*1paVdG&j@GF{_WIB4pM%JGwVuj5M+%ug7yMC&PZ zlA`U*n&dXE^!#c$@unMb_9<;z>d=Fr;Q$%j*8Qm=QK_zcImYd^Y4kB;rT5;@_A6r# zX=nQ?CH-TyH9&p*%al0DOz1-J9*R$neARl&*{rho-zW1rca_)*E)VsQdubc5`n^wy z6PY$?nN)1k75y{BM@D@V;}wcka9A(YGLLkp4moe+fw z?dlC5Z^qgC*~5{neS{*t0lH%-)gP?rg!R1o z2$a2WeGnAT`XPGI@7?vdwb$-gFGG>X_3gJoU()dqo75)t$)BAQJa(`%lhO*ad=yoW zgAH3rA)Tk~SC!!%(s>$hf`tA8*fCP)2t06N168ykDJBwsmQOqjP@>>qrIStSo8fr~ zM#1{YgIoC)D~63M{*`w1OYd&R6@P&$rQ`?4pJk^*ReU*S+e_2vmot?vc0aJruNW#j z+ef131#FX`KlZPIcp z+*a)7uRgp47dr0GA81?)V=02G!*(>9o@_8u`fOBgo&QfiLbCnYTvQ1r(ZSo#ik0(lTochVsLCNVv?l&_pxxAAoO|y-@Uh*c0D_yJ%~Z z`V#BS;V+Rw)m8f^*W(-l+qAZ(hGZS_G5Dj&IpNVZ_Jk|?Teg5pUJOfMf|;^^9=WAS zeOES^srY8ZzYjB{#VLZVZ5i=b8RQIUkSg$sTFTAj@Zy*UQbQEr8^35#ur#8XORzLb zW>9?hLs6X!iPr#Wr1_r=Ap`cX5^Fu$0x~=;JsI6t&?Wo~`GPG<`IMeVW?L{pxZsOz z)o{J2T8P5(py}DJUhwzLIEf!0j?!MsU^*8}iBPnWO1ybty?%Qa46&QZ?TSkNZk6l| zv!7$p31W%1w5uO@0ix3d;;QNkN7AP715RxM2*f68&FvS~4V$`zz0b|$;%J}YNa9e- zT!}40$3i3oo8t9O-D(Bku-VV~yG012?^us<*hI~}^uqea`YxdvynBo`^*e-OLxDfW zA)G}N!RrAx<7{5EX;rCK)%N3{8Aovj6E;yZ1#MZ=rR@96>}2v*rTl+2k8SO@jMcnG zY*S)bqP=g`NB?^xPISFZD^%46jwBW7>w4WV4t~_^U@!zLyM(D=Rt`k%g(FGDy+xgG zfeKYS^!`Ff@z=NN9+seCHWS}&^mFo8`Xv|42Y+h(x);`ME?vSBuxR^edEf2YTDx{! z7Srs|lRF{Bo$cyNzJYDsF8cbN4Ue&E z*v;6-5>>xZUlIgv#_={SdjVvSyVT7DBCjgI=~TJUMPNowWteVbE6tmXs674*HtN=WM92&@L6_{B7vD z;gYTRDmevV&>C%Sw7RSIo0f-lKX=s72zsJJ03_1X4h*`Aey8(m*{vhb?z?lhh1Qwf zBexlw+E}36^sLLmlU;Z9TkLUKk8@fE??|f%=cr6*%KTmaA}{4(H2o#kQmjevS-6MOPrSsB|KKHth2Nu~52ZVONp|T1kMJjD*o(g;I|UhkVJJVp^AO+r zJ{Q6c@|d5n2n+Djrh*l?xdQ^taUy`9(?+0!e^t{{FhBXxZ?ELHZ{I-P1l|Atm7mmX z9k-X`2*EAjC%UC?V~mQ(WvcUj^ver2@|)R)VFgOgX_CwaonD0#D-t%k)2VOR|675l zxDx{_mX>po?KR2bF+0R#VlW`71Voy}Hu|83|mpH|+@LpT6PjIvF9ot(|ym9|cG6E#{$LI$C0eYd|dox-? zWoms<9YEcBO^l(|>4ySTku1~>FVwry{h4;J_$tG~d{aRMx;>|x-2muvZx8$YGr9+9 zCD%0PjM=e%RE);$+4b|dFB?LE364UN_cI@|S0lnN&Js)Qg+C7s`to-sGWhOEbUh##c?;vFDc!;+#2;!?~8)IYpx%K zF7>$$NWuhA^X?PlrgZpwYb2)pBd_Pv$q?issrw}hiO(F@W^!4nxV+W+GVhC=p{rEk z0uZtB{^urP#aHb#uK)E|UWoMz))6dN+hg$9`kgx4Sh7Cv0riJ(Lk*Vx<9BeK#7lL; z*!t6Ljv1F$4vej*PonYd-ga0v!PvT{_=QPW=rue12{K{#N%Q|cw!VFH*y^o_x)neE zhrBCZa6)F~zu!1$nyYZ5v(?oVi9*hiNzpa0D!(n>3Ciq+4Cu`_HG!J1*OHWYjoxW*q%!6ciuaDkz-jwoOej~&;O`AfWHE7Q6 zHu)@nO00jG$X%6pL!~Go`~I+B$4Q%zGRx#GnTDR_3SZudw&|X#rP{YZ*RQd^?I*Lu z@GiRO*KwhJM}%j;O`6yi&KTy01!!=bS5^^DNNeZTX_i|rT6Aix2y)BpposAN=Wa)(fY}%ql|ag!`~r=mfY-*%e`BB4|5#DA@*1p&QykzYjAhRf$WB{6 zBVXg6amKh@vUV>|a;(wTuL#;hKlxJEXp&sN=gD6DE^p4WTh7|WP&icXr2A^NuSh#Z zfq~u1U}7s{&``KM!ZgJ6lIA5W6O8*$Pn^YO9>N=g7>zC&oF7Oc#K zpBB~c%j%Y+>5SZhe-Y3nmK(J*4+GM~!|=^q#5aMJNEOsgkU06LC&{M!4>iJniOi;y zX*g)~%0HPWZ~ckUiPgxU2#@~_le~clkBBojYiqXt9O3bYBJn#n>D|vY#D(t~LD?Yx zQ<%yl>Z{?*wX+6?si2X>`PUGp^7>fm2-tadaF`0r8{V!J^?W3_k{sFD@Wqr+*XG|< zd6N~3m@f(pCUp4MON&HyS~?m%g0Pq(`kcqvX1N(Z7$o;40cYs|!%fOgAa)k_$gKJivsbcJK&&&Rj8R#c}vBQ7^F;?8LaZ6Y@nO-UvyC-k`oYx;Zji0OU>=%r3Qe7 zQTWmJfb5U<$9Fm{@kK}u@IRPlVlfkKH!qYwP13CVc4?@SvXo}rXxwZt@(YT8iS(jy z-{^oaiOlGP-nhJ9+Y-LS&YDnAUoLlfz<&^#Xg!1_v@hFfjF$Bu9ESK0-HyVKBn`g; z4fr34IB1r$i{;^3|P0s&s|3PrL_sMiw|G^W9c1vXj zj$b(FifeJ}a0}0y1^Zr}m#}J}s^sgB8{`UTjui!ASK!l=f9FEeU~up)f3j#pgynW= z@U6_MqH}2Ih~l$^Cq<^KKUqF>3X61|0s(!4_rYp)N6nif&R_0netXW`bQY}dQVLdO z_c(d_Y;N}au{#L4zgQwY$8O5Pu{#`=#%MSwLk1SZi0X`zlSDp0hk>c^hNu zBv-5KCz)}GlKRRH#)BB zRNc#FkH-wLJ*?No7p^(zD`~>ydCG5Muj<0Ln4)JgC%6BZN+z*ni}{3( zaBRMs{-AjUNmF*+tN9~<8Ey(|j3UL#R4zU&Z_0||BRdXRy~W|sncfkIsMXtd11Ehy zg*8g5Q}m6?w&EiR8#_DS!7lT|tu`-4$kt4fa2E*^&6biaFZS% zO^xtA80#w=AMwYqL=A777Rc_ROk4Xz2Q>(kxy09MZvkCI#7GVK*?1XjlLzy#a+f%EmDOCZjRL z6iP#Q#px|uskQUSsuzl)AVXw&OLSd9ln^#00Z|U-JH0*9OO)p-o75}?3ZkGTj3pf) zO6dm=`yYCV@{sv5p6jI`in%>i(FvkNw(pp}Sy2>WICYWF8lWJGSQ%{tQ8qYs9{JQu z6p>8DBt@TdzIrt$K;FlkqT~yGTJ4 zPi<->7A3QF$Mh|VqNJNp=lCprO@&^oU?fL0LD%N;bMBtgwlyc}id0&CUao>(tD|na zk7U)ok{c--?%)Ch7ZjjMmC(;=;qlC}*!y`OVDI}FcM6wQP(LWGS$&0r7lqa^V1v#_ zC_r#Q0isqj-8+WwPp3Ylg@-%P8+63Dw8DERt?$`8Rd_EW(dY#O^)`*aH>FzHHFP{< zk+(h+~$;z`X|;( z=*5k=xIek>HXDri&W-HMC;eky!hO!PYGs{TxKZ5nmTn*}QEELfZb)uWaf&3>D$fb4 z>?)D`(UiqjNN|~YJ0R%#Y=T|#XIb*P|#4Ogzw6H2k?~|=|QaIQt z-E@cfa#!7w_pDUY{B3^Fs{L^lK0%STWxVPmYCCaPrRSlU*#YQCxbdMS#ibd0tYS{Q zPD;OjV`}f1JyjRJWg1P{H{*8Sps1DCQ`3*qM!zG>bT?H*=yHAf+_A` zYM}O;dd{rp?eD*?V9bpJs*#t?6}ME0cQ8sHC{-m+sJXnbWK&4FRh$PMryhruUbjFo z5GTK&&?jZQ)y)wms1B^HnWon-E9`;X=Z}&ioa@4iQ^xPNYMcJXUGSJpy~u4o(p9I< znl4&%gZI%lj1xO&pK4+6Xl1Su&C?CfsY?2*(e`j%dl5U>7oTGW9W~i0V|urdYaR2# zw0(U;w1es^uBQtA?ww96d1$Gx==5f*7j-X^zFxM|&Wz}lPQps+f@$UKTwdv;ki^xW z_o`O*ju7>$XufV{aa&T>IYp|-`*v&)dJODHuuvBlFYfm8!$V}Bnwg;bVh!-BUl3c zO5M)=FStp^?Iyh*S* zQOh`Jv2Nh$7Vd$%2}9!7m2i*xrmPNox`C&a;d^BD!KXKtfW;Z6(Ytq~As;S!Z0efR z#M^5Y?ehMoG}WK4^eU^NE2*WrBRX1=G`c3#6vURW&-9iT2EP~7nw!@ZL%I`vKdS#B11d`^od zZ?K|vvkI?hdG`wn{_{F7c37B;T_f`<6#4sC6zb#JUr@%Hg=fu*#r2!5mbJfd&jiod z^-#I@Y$-H?8}lDW?{i*b6x90cW~vB0Q|x3P(L;^CqL@0X7gcRZUoSdpi`Mi~==9H2 ztLZK6W?uXHXqO)srm4Q9QygY3WLp>cOGQz-_4Un3PFE%ze!QYYrOEf9)F(~3Pg@AS zqIT1cC-uA(n{_T_MF)5dS4542bJeW)O;^er<8wE6Dkj?zf346$bUNxYdEp=UO zfZw`;n`H<7`1Eg3d_S{Z+tQN;312A17Eh=-w5nv&+e)jv-+I?JcesKN`LAjYFxs<% zY8@L=`8Rr}dm|?!^5DhgC7CNKti%<~?wK!o%e8=u2AFwyUgr(!AI8!6ai8kX*}asQ z+QAUNP&yGm?(j)ran=th@F9@i5h~E2KIGqcyO*)5EwFZ9PAb2Ej!=*0bUEi%q;vC! zqVnh{s}n|5?&dX6q^uXeH$@NnEnJQ!=;k1p)X*K|5A@xPCai*UoDKfxrc?I>GTRJN$>Q;=74 z2d{ZTtV`<$W+9kU6UT+i$L)$9TDX96NOLqVIlj%I`R%MtYb{69`_Ian9-}YT`eS+ft@X<=idV1^E^_;U3Z$$H-!T#{;5xWgmYAWsz*JPM* zI5mTM&RJy{BfnK(sM=ois-RNQP!&3fx|-~KNouH)?fs{oAse&FPevR6Z1a=K{-S<; zp5hYL!~CDY6u$=Zzw?1Bl}FYon*TkO>@3U$Ejw( zTQ=xOVg^r0H)Nr1g~r(IFBb&GXSlrd|yrows>%8Wzp)qUA$`2vypV7RBm(Q8qq%8+NA~D&OH{_@&gOm z;op3M876$eNLM^Qy;!Zq#=ju9D8+e|RUmu3Sp)4;g8Z4WqBZD%?xM&7uHgZTN!x-7 zxoa2HuKni?y?jpo(~BsF)ta6B#47N5a}uv(f`4M|r~H!5PG*9u5V@Ya^aX1K8M^OU z-*KIC>{&a`6tfTYuDLcj2_LF8?~EvL3fTY0jCn!KnYiYX-#|=xFxpN+rle$o1x7Jb zP#SYCms>vp4fw4OSJLO|@BS>lx%1f<<#rSpzfv~z;lMBnEuTNbLn0S zJ@`U+|FCrM^-`ns7h!UvLg|l2^=qN@YrXYd(b}u@x1mBky?TYxpFRzZe-5R8^4i@7 zv5KW%uoqc#IA3w;KOy@pj7XiD;P*_mPe)Y5l$X-d{~k;QS}<7w!!rYFOI%(qJs%Ye zGXWqKHY-%36=>hWm#{`_q$e%vs~=NULxu z{+tQ;0!j0U^-@nSDGICbQ$ISTgkXiRg+pE=hL4#0{E^`fsSxLL!E6C33V$n*J%=;Q zsHYGax~Se4gt)LKLiv@V5T0geTU_34Wmr?3$JlwzchyFrm4(2;*>BZG^kwWC6*P39 zbgp76nDLw-7BKv#X%eB^2n7oR%})lZZ4C$KfLnYq(2K!irMCM0ke}E&6NRUS-lEN0 zH6SNOHdPr;q!}Y&K#qf8pnW$>zS1lPuyE)Mv^;s=Vw&X&FdP8}@_61TrdiX#a~wA0 z4K7jL7oHEm7oN}fuM5jIlQ;+fIs!HzzbY-OG(PXn{bgQxrLmRm8WoBau7|9z=X^r3 zMpT%2gK*{-48b!%)CX3nC4*_shZ)yVMwpA|W~n9UXA=S9WN{umr!?7@;&-|2Y=RPr~UKQL34GOoYD6#vw3%;W{ZG65dR?9S&8L)OI6-g`r8GF` zq^{-La~kv7P9^MitYiO;YehV0T-9AG>fJ-3pY!YQe$H!O87<89NfSSUuEnlfcEZ@e zF^4sNAFiG>{1Ds(-_1B&VfjvSA;~^_%;Bveci~vk9JuktH}uJ-H|cO8dl2j=n`wBn14yMbW?XkHVSM!n1M6lx~=U%O-=5bR`&S?DS4iC8~)b4NcYBCZz4^Y73yd1fxNt`HxBe} z4V$79*KGAwb7+Jn71Sw->Nbp%swm`mvQcTBQs?h=hx1>wZ91Ff z7=K1L7or9xF2)0Hr9GIq;y$q@b^T**jo)C@G964@g>Zwq*A@wTG<4^9?iJ< zIzg7MO~*~HewW3yo3VxL7YkD2geR~64WA)A8)im@naSqV1lBC7Qtbg}zVgMq$9=;x zBi64pE4(T_=mcvMl-MsS8$Eu`uck{Zu0JwY3o?eAcAV4DdZ$=o&ALtvfu%CI%m(#J zul*;*^Xc?rLVDrXz0(U$h=R3PE44Jz=B<~0-cS;H$he4%8{O0T%I z^E&T?+J3TmAh8CEih^}=IB)o+Z|$Qa;k(oTr!UAG#Q)#tfhtSA?!rFNHQ2eQbe){s zr~k}(==}nTLyFZ3&DTk_3FEZ0Abaw!=t>q~Yp~o_j3#sR;;Jw#IUs7_B3`KSJeTB_ zU!FsK-eX;gmLsKs*QErWx?5DK*jMLAQQj=pC23z>ZY5a~qiF$k)o5}aou8;kG@&^j~MPiDpy9Y48F=<3&}LE0BiY*eBef0Qk3Js*f(t~ zz7s{N;0O(9esphud$zkB}J^R^(DXM&EB}KFM+PfIjO>z^Z+_o-oOJhZ$tfBTT-md z9ba=(w~f=@8MTlTe_MArcqW#&xqDe7&m7Mp!=T7jH+ijb8`6*xEfGPQ9hspk^NcUKukKEJo4hd)YCG4?&DU5}mZWQU-`Mr#?kO=xWFF?%; zB)bQ2Va?_?zYA_}jxN8C3q3ss(z=GI&)1LKzQ_ojz>rQ5;u1$++%A(UleG5-5?TDx zFB7wGU+f$5ae2qyC|HdPH{m&%OF!aSVY~(+mj*yRnC>qs)^#Y(*|PUs$dGsS6>JAT z=waZMQqqpM5NfWQ)B&@(7o!cTmRGsNR9sYz%0Y_5H?6G<$)^oYdq%T%nA}Z1dfSpw zj@K%HF-&fzv(^&j=ZGH7h<+I1W%P&Pqv2ZZU?mDup0yVD)abdRQ~pRC-VX^Sc+uT8 zSg%>y-ak#aX+u1{s5&&IWu#-C=r4dQSlkA+@34`{*tZuyKaSOmk3;ZoVFypIuc63d_cX)MTR()HM3Tv5Sw1n3x`N6GUspm>i!EL3KghC!Qz z=_;UjufTD5KNe^Rd4`cok8dilk>sEAuju+v54^y^^w@}j-AgwQa1jd!f&;*w_xOq# zj*a|&0UWB_b^;tYTw3stJ1O7B516NTeH$+*@_&(I;I+(=#&~~0*3F#6;> zKzoLs|5@(FSf3E5oKBAG&+fQw9~&z>u3wPCL0Q8aV}R2Di(K%9#iTD`Vdri8Ci{~a zPRRMGZj|X^jkLQNljX$){0dkIl_+1-9|(%s+@DDSDR z*dRx}H8I3Lzq;ZS@GqL~DE|BIk#o%(N)kgr2>QFgxY$7{g4jJm7t929(LBBBeu+sB zcB?+kF~^;PN3!pWUSLsIPL6lZYdGDI9fLasqb{1Ei)MIm&X@YJ8Xe%X%J8JR-1%oa zS?I#$O14tPyOrAQ((Z@s{Ie0tqDm2bA6JN%>&t9Mp+TYw-SEx=?q9hUH4Pz!DxrSY zqZu5qnw)?^F}|Q|Hud4>%~=!A1_?5Pr$Qc}Jbx?@VyuGKv0i`hJHi5xGbZ^d@ zP$xx$gE{NEf!@Oyd_o(AZ6HwGppZ~J!E=!aVhE>6%1jNY5PjlsE-IQDv_%84y<{!e zOImuF8iu2*an23OJ%xZ4_AUq!Z|e7~x|a~?49^f@rlJsKXmS+@5gI*bO;j%-PBY34 z^qN2jd8-N9ifp1`Tr6pNWGGP_7o&lU77i!Zh+ZWpG!MPmA6Cg#X^V_zwN~HmA5&-v ztK=kbgM=Smhy;e5U+(5>QsRWlvtTlY&Np6Lw<2ld92h($dmx(y)f>0YX?1?36BC+} zS%cTs^(aHptW8Z&hN|zMY1kP{cP!I!hC+h}8QR9VWoypwLSU)3OW($*Jts-Hn7`qp zDrz6yk?y4C6jcr*t_-*_PeaWm`I>4MB>o9wz$|3MIlqn{QXF{Mi}`oh_$FwVJCAtwe1R$xSK zbi~bGh)iUm%xO2m=Pb&V#sPxYBC1O_dQEf&2&MJA5UPkojc|5b{6iF6}as(r>XS>e|cTdGBl2C?tpx(~(o>L@((I|!%#c{Vme??KK zxoDg+XZQ#OQB)BdujL)^@RbWJyzaS{SE5Z7$2s@GqR831C-xCc!S?P!5tkN9MUk_2 zukSBfCCpS5Wes!gED%LB&3A=QFHsuUO`sOEC^AzqbqYO-0<~E7>5-wHR1~@Tdmh6{ znPWCW(HQuJ`7+1+$4^0__d0m1tz%76+G%4T@0l)orYk!H+T2g@On20?b6cmkobrD< zp-yGBUnR6p^wx&%|;vKY3Mbd8j=zd)&}z}J<9N{Vbpt^@!4gsT$B|vKKUo=Nu0ArAG!6g4G|{$&+V7> zmBg=6mPdX#^pzTV^_9viQp1;39F0{*QL~~9s`^)P9By1(3(V%#Ci}1Mcbj5;<01nI zziehL)vt|gwTVo#Ha}3lw$&zlP|lXq8$+(uRaZ!UZMDf6lmn*=!OaqUL$A|>?h0Jc zvWJ!+!Pj`5vWp*Xd|v)CEP5~hGo-|>1${Kc!NPa-MHGKK6~pYf`j<_0$O%}_u!OZG z_b-@lDjpJtec+eJ&RWiyE8W;}9^QNgS1{_piHLU(nQzoYQQdV!dNX=t=9Rn4@cEel zWu@g$`p(W3e$D4{2M%4CTZ+KFCHsRvA`pkyW z4L7uus!Qut7%D>75dP+) zMa~?5TJ!NbRk$Dlg_?*RdtbGWPKVn~uCxH)m84qq^pI$fU|zB_4{N^MGQ(S{TGwEi zVZ3_medkGZB__AbFj-qTU{PoyuEb=^4AE-T@f?;J3Zm1(A4)Y}Zkb^{N>bt-IoMMa zGz=wof+${X!wqc|ML|s0fSkqA}q?d zF1MSSilQJJ6r1d9)CUGKwn%Pvy4+UStoG2ucS_5wvM}dI5$vaCOLENt#)=4WP+xwT*OTQ*mjiE>rCCU$K8V0J5aL|1;t=1*p&xvpIkzi!4~eUpyBIvU*V z%^YMSFp9@Pg9gWr-=RTmQ~@=B3yQq-5+;3cw-4N+k3=V4RAioLwK+X1r%1izh*g2r zTl~s#6jVd-!G&c^_{N4xpH911so@Q4p$bIQ?Ao`f;jh=>`*3?teW`zZ;J1EC4gWa? z^IuF?m9i=L;G%Iy(EZ;g?FolZb-fkH@fQwVeE-rk%oo2ElHohJhYKo}P7Tr5mq|hQ z8KF*K5W<(V&WD?%&qv%gdd$noRz{u+KP>l}8)YzHK-Fv8#rNlV>Obey7limlX5RR4LR3P!j^y;&Rhb^wqqIC?ly3r+i)F_oc0v5EyV&&-h2=5 z&$tIiwL@z{^1pkZ)q=yxo0Y=B8kY z@-+12He?E(F`E1&hw3aFYA+{6UN*IQ7`w3R#@F6`gGF3X*TmU=yN%1r0!o`Bc*b37 zU+KO-E`A>%RugxLQ&U`UAmpvIN0-BzO56)U1}F!&Etfx-IcfS zKmc3IdSWRo(s8H1*)6j_i%u~H2TLvmPdsh9CpmYs$WIiUJmCKIM=Y%70lo1gQ@9_*!+Fu3GZHk zW7X{dx0$JMta^qq>Jp&=O0ep~<`~=j*m}7x5-+opHS&(dq|GY}(+>}{V)W4u#N$Lk zLvScwP~OGnU(<={fcrT<)ylepFfvZ`+!MF&G>j7^Y3R`9e9bebCD%^>&>@b88x}nX zp6xLRH^m(u=ntRjo5Sa{hTVmxm@yid^bBGUuUv?m;`lzo#E~81g?*edQt~xTYvD#Z zP*rB}X2XgwPfy16xf_g}W>??*)4MfK$rG5cWKDzH>MuMwsspKVM^Tqx^UT>%9imfx zoU-_EgXlH!tGUbOg9v%fO6DOtF>`%37!8^OBKW`!J=7KNid%+75N4nkm-4s8o|e=c z0uh*-zKL+hI(S#*#oy4=U9`E>ra z+b1OnYOTPeSNhvcX!8OQB%TacuMI{P-qlm4V-YO9i3lk?`!f)M^bFLRov-P7Ml$IE zM8Mqm{tr?S7=8&i2Ex`lSG2z&m5N_yR58A|OItB5h4l|R__i_5=@BD2(IG&6CCh-*97QDyPz2RQy z>YVDEEim01i!-YOPxs=vf7#As7siov=bFFUQr4byjCp>-BR!s@$5A*p;xL+Bif*on ze)+-I=+CIK;X-E?7u(YdcC$sh*LP3$3i}Jx^xLw|YW{S(e$uWV+S#VT)Ixe~Rrlnv z$ehx(4n6N}GI*?kJf5lFj_S9|wtjO}R3@?d|J3})jqTB%XBQbcbGKN4e|q(q za@CelfOz`vIxli_yT%M@kG-oE5S(%_ERmz%9l!2sm8;@9>6-GC-Er6M1%!u%^PJVU zjO~tJ_jh3Rv_y%Vwymaza}VE5{!nW<(LjF%iJ#mk$(%1%SJ(6Q=eR#gnc+P)kZouE zq7+?I7;gy$)Ij})@`5C%3l>9mEH7lQlKLb+-ZJM?8tOUA{SzZ9QW#Y>f${d;aq1p# z>Gc(EOzbNAo0YJ-uJ+(F`+P(F$nH3GFYGiQ%-2+(;|t|t&gXxgct^7*ST{@K1lvqy zg$%wCuAg0WdfU2lb(3D#x2Z%2w;p69;x&BNeqxG#k}VW9A1u~XcN+UddG@qsi+MYu z*`C%D@1bk-adWbw)|YW8IMeu!W6Y+rnx=>9wUZ9fo-LI7`nzZonrU6h3+E+sd3%#&-}-l{_0-clFCxQZ}RVnmD@}wwH>~j)m3X5KT7{(x1^(`Jrejv-e5{cy=kbg zi<8@K<5~9u*3Y)~ftW$+%WtR^P8R*3zv4_mQq@U|gw7>}Dw)C8rICZK%{gh4u7@CU z^Q^tHx9|)@{0oXIQd9$_K2h?8Y%&_7zp}Ozj3}mu&0OnL54}_VS z?!jm2ymNR9?C7Nf@acvDMe)muep%1v8#{ofKG3_t)E6jA6TWbSXCC1*!xrb=h7Z6q zkMNn{D7ZJGXCYN^5AYgGGUG$bhvg{B>w0XI!3U!%&QQdM7vJKKRO+`!?e&cEchp32 zx?2`l7lN}-MpcPAw=aHi+Z+D)K5TY9@3s-Y@{Enzi-fA84XY8O_D9y}+ZTC3dC(n= zk4r9gMp;5?*UJhN=$12W@*C(&s=Y@{(Poa@_7JP$cm@(Fv5fa8pwK*O7)*(JL7(*+)*h zxHa;@-$ObMF}6ypNLaOH0g}<9-fOJs@`dWzB=c>Y3DWveet9fcGh+&CK-aFmH**6d zAK`<4gSM=*mfXA59l!4R7f8Ie;H)*Zmi$4NllE*h9a4WdZ(DcbbPX}L6X+?L|19#;IKPc<*ljbcCD!_ z<)5!(10Tk2Nu`ELeS)S~PRyN0s`oA{%o=WBHTX_}yKp;>lPJL(iDO;!kP5pq#Z6ar znl4?yo5KHS3I~m$FLOsUNGEHo8vNSXsKH+{qTmIeeu-}+LFdqXtNJ>I*7W-Vw}h=l z@mq`XcNZ~H)RWPeb1kuGFcg@5Q<(JlfnO465jYXudNLZH>}|JqgVWv{a8~(5sowoY z^zU~C{qz3UZMYxNzf8Da_H7jaLN%a&#?xRjKgz3gXOw~Uu-^JtxI1cZ=I)5+hRArB z`k&V2;LK)Nl}q65i{pIvh6k3J?0*7&;#WR9LI297`seAEu;%u~u!DvIH1mF_@5kkd z(*>;=ATrh_hGbj(d(bD;cc=~;;BPyS)^>KquqqP?DjQan2vDBz4*@uZZ=Jua*kty_ zX3}WsQQ7?-K^$=v6!lY15#EJA|KoBTMZ60iR#C{7a@DYA-%r1JIl}$y3d5{Z^QQ>i z4iD=tCH~lJBtob_IqOJX=TYh&YajL+0JqAF2dc*7?U(NxlKxn_(#J8Wwx1X#X{J?NnEM9lpag^U#&D!1dLz<3MWB+=t#!Av`b(?g= zqxs<59nqC-i_*~OZb`dKae?ysqj6XGcQedxSz2??Ch>O_%e`i8 zl^fvmC4_fqwE8*g;`@T1zDX)m)(?!ui#MIDwQL%7IjQ7#(;*p0|Jl_oX}7Z0u*&bF z<@W*>%@5~w4)Ape{^{D7??o>AXm#`A!q#YgtJ<`JB(&Sbr?;{uX(s=4E#^sz#X_6F z@RTj7LQ|^8K=B^bo)xsTsmgtVq5JfG2Qv36&) zXiz|!&{`@cG!5Ok$t`&M_Ic%d5F+F{?b=4S z-Esc+1Hx0GgF1H0qwjQ)gedb^Ufq$qS>xYY+Id_~D&3Q~RGJ5t@)f2zTJXU9-q^rp z;ahl~zWy%Mv>`UVvjO6Fc5&?q1FLuM3cxaApkpyBvR(61LPf zF#c(Gv}AqMg{b`4!85DtGEY6TU%m9=*3iA272VO2X{b3``9S=^JGwH;+i0cVqba4+ z{B66-S+}~o=%MVzt&6TWhCVsHZS94+Ax+1s_eu-MXfsv5{0K&cCAL-nYV%~{jcLt& zBcPiqvCei%dfxx4;QuXBse$}_1cbPkXm#P2Wqjy!_Ek1SpTbYw}E>&361og@>zAn)}?LJry zJ=JFGN{F0dPjx**av*Ws84LfCrG?aIeJf^^{s(FNdJGlvQL@LR#%C!rqHP1Csz9$C zduJ%5T+`x=HwIR1UkZ{o=U8Yzq@!iRNdB#_#yWKCo3%}=)eMCirXNbOM?T7}X0>o5 zgsN7H?smcrnDHzshS#N>_50Wlu~+d>{fNUF z@=;{A$75sv1xg7l_G%t=EXh876rxx5Vy$brbj1B?GHKBDw?y@>lZMmM|=v)vlrB$^d6_}bD26A2xV`>1fE z!+1GP_c1wA>#wjhI>|oT@6fOIC@&hDZxi}asmYlzA%YXiA7)K3jU@C7NBXQxXoQmV z*@Msm;2VSck#P74#vKJdezt^|;OD30{X}@rgJ)fMHUf%QQ{eXlKr%a^t?)1m=pbm? zF?~V88wT&Of7^-wbIEgm62C0+97mq7lII=d`4T+ia4ti5e4sHTUULXPh48fqe>Xg1 z_pmgbcJB#%jGIB|OhRW7>P4tGp|c5{L+D&W=Mnldq4Np#A=H=91%&z$Dg=t-V?pA3 zhQw z-<$A<5ITjte+%zn<^b)4e;n^j65ccto*8j}n}mCoy!R*Xt;zdygda%wHiSQx&@qG> z5o%7TD^Na!TTkNYO!z~A;&OL@gu9zfC@3@?P8v`gpYh}wHa^n+{SN-&{Mk%s5}{j2I2I(F91@NW z@%IAZhmrL9mpm^g&v-f;%Xf+J*Aaded0s=FXA^gsBt9V|{7@2pHH3%bHyzR!Qx8Ht z37tXG{W8HP68uJjzexDegdaor(?~qD`$^+@hsZUE#OE};$MGLbo`(}Un$XFFwi28H zp`C!k>3o;qZOHRmLf-)$2JdZwV*h^zisf>Hcwjn}#AhDiPbSaRGL&M`#^T9PeU?4BHJgy`E) zLWdD*LiDeaxEo8JE6B4Mac52_tP7#jeK?^b2pvi2C_;CU`gAv;DTJm1#qIH*@Q>qf zLgG1!(2<1N5jqVh&gV8#e%lG{AoMFx><{jdV(LMt7oqNiPA7C0p)(1!2a5f_Mf|%> z=p91u68|R<_YQ;#2pvc8dBlA_q1Om*JaOkl=oLs;98X7rdq~_(B=0Q=ol2-Dp+6D2 zkK~IU$>+VqzoFz=6)4t|zR+*Q^gN_DroMp3>Anm8arg%bZWp1G!9C``ApTE>e8j_z zN$`y6WI}%=)P>L~gt`L7;kc3Ksf7MS`0hZ53>ZCD9gS7LPLH)H*!-Nyia#*?(XoO@ z|BkFv>)xCB1tQXOf9&9fsZI3$jnUu@evKI9A6woMbYmFlc*MlVy_#}sH22(f-aaob z7~$JShZQ*fv=6(+7a#t>Zcm%;<(6S+A@B<|FxaJMPmh}s&{TI$2b5fUn zRa*eL0~gG(oL`Juk5^w9R!pt<&FcL87w(cYFgakW7%d6C=%msb2_8zS`UMHIuJbHS z;c&GXEa?{OQt4z86=u%0jcKW`HH9KwH8vBz9?xjK}z9E`it)F|Tv60XUTeHn3w5_#;yBe`om znNS#8ohm1M<*o6EEqL}IjWJZZM@X%gOv6VGwxeajU0(dUhfFNP17XVm%oq=T# z!BkFERDtUzw%mV$8vHWb*FK^UTOT1 z*$0*=L!raN6a4x=()hVG^7{EJ?;)MW+H+z#H^65s!~b6zQ$5p|vQ{ehLi-@X|2|4{ z4*47uI%~%A&q1PD2jLfa&yIEZ^HExLz~>-$hy%lAi{4mI5U^=Bq;cr1ylFoIN>wzA z;j!VuBgHgsz3}}st^%+ujRh|>aXq>l{&70!K|WxL^8?deP|srBI|kGa=uuK{9|4Nr zQ^egiLW2oiNoWS4`w7(sit9TzlwMbANco?w%8OyGcKL zAE8?bb%uCj+(e)_eN4eUZdbwyE)3d1K0M^mWX4BGj4CNre7L=oCWT z2>ppre9i~Pdl0&ugtvmw5JE!?L>3Y25yJO1t(u-f$_yv4yEYhU;F>n{ssRW7Wuq*piCB zz%w0tgVR~El~H<_b0A^V;dkkGHaTWkCT!DpT0;G`ki%HorytlSah?o;yc`B}C{S%p zghpd9Tuk)yAC&>L{^Ma6e!bD=>?fKLg3|>UIKtS>3B?Do41JiQ?mG9m1@f`<;x*Cr z!E>&6!H<*vq{Wlg2XgH(K*^=h9!u+7`rYhVddz(e%uI((h`|@A%$`MgD2Z=-21p=? zO0GA@N#`p3PS&{(zo9og1AHvJc%fWxmtm9s?3@2kYZl9F(w})no&kx-NvFfB$>LsHAVspOn=+cFP__^Y1)cSu=0z-9C9Ea8K4pW0OG(~9y*VRr998$EyG1%eH z*x|p};WF&-DR!8J9Y$h@NEiEPiXHl3hnKL!aP06Mc36%bir~QXn2ZF^oQ}ex1xgoS_tFAlFqzJzQ@G+LYK=9gS1>^qLXmFmZ-b^@GSok0bkM zSPfGD13}AzzwWWrf%zMJy}YkFWv4F5`}>26QU4WNra&>8G!!q;r`F#S-CHPJkHocn zeO5nL))WZqSe!De-*lGCpA1#iq*1JXo-9Mo&?6jsuB#^mo1Cd1Y0f`5Rt$nH6@eh- z0>J#s0L(I0f6h=bj$f&|H8?bAHRs3Kf*=z^KoE8nc9_dh9x_q{?JYy!Ee_6S=o4UW z!qD56rv@L_f%;Ecn#`3p8IOo-6yl7LyHY-&j0b3nP9%HSK=08VDpT83rkblxwWR-q zs#BrLPWL*-afrXKr3(2hEMN(zv%)oew0D+{DH5(dd7?-H+0Ki63;^~8Aw2fF33i$eWuoq$Cab}mFR#PtSRNIO2Z;O zYsZXWP>4$>Jn-wS1+zA+c2=FHv%WokyGFuH!4=}YLpTx!PEpl_4D#KyM4#?WO-e_m3m$OJX;>*GjO3j+GfC^Uclwc(`VF>6_lipow z1~W5%8F5e|{3Z*bdQB+n0U8u)xl`;Mx8ooiG0o|G27cxPlAP5VEw6a zK8ez@10T|%&KnL}L0taYZhm3*Q3rqyx(64ycVutr$_=Dbrqc8G0LK5@i_n`E%QR~2|LI=eX9yoz6;SV&Rgr}^Qm2lug3HMgY zo}}unvp#0y_I(>?qUQ&t3gi%u_#snN;iILXO67Dw_1yt2LFt302KNdmQ5sN`CIlp2 zCkqJp642BiUrz!}WjAizUbwLzY9;~cHDh^a>-6nEY_7MK!-%OdBc{fw{4SF>*Kk;? z6DS%~#;oX#aeWaS0c~#1MB+7w<3jHQ5J4kX&Ct_hpb-v;1>DT2CaBwxA5B)FD ze7KsdkysRU4^i;p3qNZ+Hj1o80@V{cEJ9ykV+M5Nj2YaSx4QkO9MqAW&>v7Rrq)x} zVBqr{lH=c<=kBwEFGj%yiImX)tPZ}%O~25Cg*57UfI?`UOTr{X!I=`->Gosf&wps$ zV22Wo#yvxM`&L@+>o zu#YCKE}uKMJM%m3KDS952ZeIx6us;^7x$p#tvl^I<(6RClc#?CB(+1;$Abu8;)8JON3N z;IMVpTn5u>EQR>@$H7k2ek`eM@X;f^YQD1Qciafz3}Cb|Q5jAING&-20NP5#cE)Lk zD2Ptz^OFWn^b^-r*tb*{7vx&CA1qDaqrkY}o$oGq>zElreQ~ppb}aiz8NjH0fHWlL z>S96M#>Js3NLn8PzZLkUmYBb*2Ve3487{I`FLgFPyf_rpLfTIHrLfX}gaRB7ehWqK z8B`roegOC1W|N@+;7cURv-X^n9n}c&hezSg>qrdo66!;jtHA6QqjWH7lg!18g62^TGR@QLDY&_0*dps__ zulOR%L9^0HUE-jnGBktJmd5Gh0*f5-CxkkWRcWELYSZ;c=rKg&1?wgbe1zVsCJ47J z;cs06zNs|wH9Tjkzd$oekLVACJsEGLIfsL0KGgL}LT!5KIf4^Qs5YiR=slM2JytJS zFeDVZhEpU$LHySAYZQA>obqqb0~ijNzd)Tw0X+c}KaYU^IetD3V?o@%j|Bd=u}r?S zvnw6TOfY%$`kC9ms=7i?roaTct?VMG0NK=QRw~!kTpRjvp(dfwh`R2;h2{u!@ug|_ zn$Z#3VVmiw*b;&FtL!jK8SX2d4OS?e; znF)|68q(SmBF2#UG~_~0$j<<&q#;>9^#}zHfU*-Tq#^k|A)WwnFu@UvbngK{IFuk7 zQrr{b1(1C-#BN#-hzKC&%Q0l()1HvY0O_P59X%mJfCyJ%NZ#w75LbZs4#yF@JiSLK z={RC*>4<&o3Go5Q6&kYIqX$F?;`3uM#JN)r;@=OAr6S)Z@;A6k z%?6OnDUXnVHtVcL{T1?#Ea9Gz|WG>%-fc}q<5oMtY9|vAw&Y~bdx~qchSmFycxy~(l zq$qtOdPkD~ky;9Xlc|q_#ZQB)P%zY0TbkARY!M6+TnE12D->Ukqfhd|?Vdd3pYK8{ z{|oZ(cOgE8{}IaB??S}?1v&p+$f8025z2+{LTdjDlKWlAGNb3`A?Nfuyz{3=o{@CxoZa0zTQgs->#*fJDYnk9 zr=ja(VLbN!QI4~>(!#bSRhcCw+=4qmYWmVE{1DGwulP-h^7Sbt@ zOsBxD?i4ty^f0}{)~;6yxJ*ZP#)@X$NP3c!H%sZ@on=*7mKC;fymPV?p#FT4<4mUj zH4dkMNR|THq95+WvYLCPz-u=0W9{>PnDyRZpEv(}WwW~J#c1t}unN3(qC0DsU3zZ- zu@$~%Q;S%kM!(GLGzc}~T8!*cm+bgRqzaslrrJ;~)z+_a<681U_k65E|Bmb`k{VZD zvqgTa@`0XL-y4(M zplKlcLaofbU=g?veL%aU`KC@nq zkNtUBLGwSpm+{jVfIsffXn&41$oL5JUp|-m-zejYeOQ^^&9gcUGQGL&kbudD%afmTA&@&f+Lq^L1afropX<*RkE_KhFa=4RkoBlN4%mc& zH>JQD04_F_0mXEPzBKTpDFEx_fb|$yB?UGDaHN?GnC^>1TtEYtngOsy4%m!=EmB}R z0N=_1g^O5O-jj7346?knUaPfi>BxtQ!?aRX9ah4-TIhDv!b_{tiFhp~)JNsO#g^OG zZ2lrvxM*QkNU3w&wa}`8Fyy06t57G~)3q1O=}YTmfu^WWaV&hiw7YwQeS&djtyFhi z2R2~cU7^vkW#6@E?PR;k9=a=r*I0LJrMf#ajMm-1?7GxLH-93!n@Dum=nd9g$+k~b zXw0~8iBv1q-RtHJSa*NXYazM|9%9`USkinxPsZnCT?w{oz`A>0j*qbJime;4?uP2i z+|#=I(uQ`w(m=)+V}B%eG(U2nj8E(CTzlG|(S|ZUt-B8$X!lD7$?>s2bDe1ZDI*y_ z9qXvbllDhALdHj!KX<0o|B*62t-G&R(h9L^9B9%Wxdfzj*WnG;UC#rMfS=?NP>3~Y zMK}$#wFgZ)CI_T-*P8|=p8()Rds)iUy4xH<1KR+W(ISb70~>&D9g>Dpoq z4a^-6wMC8`kk;Kq8mM&*fKCoFARlXz%UW6?4m*I1cjbVz?jCr9b=SNEfW{N#fLM16 zex-r_698By2c&iPf)rQ*z-l?5m<}+WkQ@Dl(RI>~^v?neGf>u&ml7WJhi(b|$GIoQ+^iw^iCQQcGk_wBYfZ9L5Hiu!6OhJJd^O z^S*uwDV=SR)Y)Mxs4t0?c4qYK8FQbY<$r!j>*6fexzDy>>Da3=;%YNLV1 zUu^{g@5_Kf44ij_29CZDz#%dqMFZWWz@Y$imjl{i;3X;02LnxHK(rf&=ph9T2Vj&O zFc<@QN9hogFmNOR!lX?4bUZ2J35Ffobc6QwH$Tx-CHg9)YcSbQiakSAhJti-j<<7y zbX4{~h)#GDUd0|Yy`_jj%rG!vfyN(icY(ebxaL1Wl^b_Jpq0wkZbP6CM}Ld$U)t1m zb#Zj<{I(Erw0YB*uePFh-(m|uNg1+Hwm#L)u~BB|KPDLid?DuVp!soba(ve^WUKrP z__oS%E9CfsGBiPX{NL@I3CeN%<@j1pzA=&Ilf&PTJ~ovB;Ycg zNga@Y9cFR~7@;nj>y5kbkczy<69DPWLLDH!vd@24+iv3jny!Mh>_Zfb&9V;3-=G#>fHFF>ugvI>c=NJT*=Rq+$TLHi8Cb+XL{7 z9B@+^l+0uRF4viK3xL@Ua==(9(!Z^vi}dvgP)MrefVVJEA_cZ$ppy)UqA@T}3KRlR z^RX;(vM|u|6dmG-#{m3A4!8~jZ%Tpw0CbWA24i5R6gU?H17tvo4zWlI3g86J#i9 zZ!ie=6t_I_Oo6^i}&TUGpyjRF9e|1S-!#=z5Zz_}P0 zCvHqv-v})O;89;0P#gfjr&nm;djMuu z$pM!DFrbhIn!g5M*a8_)ghO0;l?Gl~03EglIba|T@f8h}d<5VGKN(Prfm3s7;8DLW zb@O&PU=$9qiw0(P0dQon3`hmCO1)o{b{dp=bHjo`#*NLgd@D(AwHu zg&O66=|KSes5w3Y(*0PxIWS%^XmeDQz=e!##qIp9hRbe95;0Wf5V z3`o%-KB9sDECJw2IiL^&7fFF<0cf_A0AWHP^Z&5+9Z*puQM)w(Wq@;;sRA6%43j&WZ|(g3<&P6%}*FQ4H+5Dr-a~G>VD|SY?$pz$hq)2%`d`gn75B zYi1h#|98$i=k+;or@pSQ!mX;?Rky3V$$~q_u;A_?%|27>68OV{`}Qbwqc``^!+T^( z>O&9Z>626wfOCMSP9?bJoB&_jo5>7aI5Nc}(}TGzz|#Qt2q3unnjVME5q-%j-7wQf z=A8U_h~(Q3GyPI2vq<9V_3$w`$B!O3WxNCNb`-kZo0WWXuLT!;`KoWmn---~cA>;o z`wynPimgw{0?OEam=d?T9z_YcL_ft8$8+^589<346!)Nd6b^E6eu*j5uGOd914QK$C5EAshJ+?D{-^|0RIHID45_VS%8-U zo*F@L)eQk&0C?yYf^)Y8csWjg55eJKePjA1IQ=68XEO!37N>uT;F`w*JO`(Lk>JcT z0bYsIPa?QFSAajm>D=Pec`d+;aQqB{D+>kq3&2HB3C_M3;KewdJU*Q=0sb2B&=P_( zl>%IY)2|@7`kMf+!s*u$9O(r36P&*3?^yq;@IQ?Dd5hDxCOEf2fDi2j={OLa-73I+ z0S|4<$KN5qy>a}m1V?-II1CJTJTRCT{Sr8O5Hk`6M)eN^~R)v z7J;eD)0=^Iqmd_0{=_(3eD=|wwD^Gkg7LEiM^6R#Sd3rc<3AVRHCR1qeEipX99HW6 za4}g!G5s2F2cL(8|5(g&ex*KsRRvzDS0;Yj(*NAr#_^wu4cA+I^FRxy@k+g%U#Y)+ zNmlBg7sJZtlfF_zq43~kbNuiDuhgR}!M3ejqBn}={7OB0O$A=57bkzCD|JW^uhhLl z2p*SW#Fcnu92i}JSL*KRMjYXlIsr-2}fTz{yH| z=01|n&kv08$x1zNKZ&0x#Bn+~2ME6Kp)tN1ugIB0Bpqdj5l0x$IZW^p0ZvxxtMkb6 zH)#o6a_a;N#4GhTCS`b~t_}MFSI$7A0#$h3Jn$nS9u0)6%BC;0+kocrN_|#KLUi5+ zM8{P|B3Y^5`$UMdRzW}9DGRfM=G7>IWSM7&Zzv6m;_2jY7HQH@vX6TcDSPiuhqSU|)p^%LiK z;!_}=USrHr<&W!F&DRkV^900!E(T`>lgyWF9PBSoZ}asSdHr_ATlIJg$_GCe~JWRc$Kl|cw(aUN75V{s-TXM z#vH*Lkuz@QM;M#q6qQxqEIpIgHco&2-snlJf^*oDSXK3HOLv1Ou^dqBjVLGH25LqSf>)9vf3vZt) zdHeLNk)Yr9=w@(G%h#gv1s~^XZAhu7c z8iG658F3}H2kEuM9ux?0gzb};q7vJu4)SVh=PISdKFw@ciS5~W0j|O6q%|V=bTeao zVxRnNNIKWdjX1GS=}k%enGFOuPN%3D!OI1>8rvbS<|Lgs3uAnQ@uC(4_qR0S#6B%< zqQiFqTsC2cpg@7xKD8b95!%YQ z#vF-#%ILw@5fhIHh}b^88Ojr5fjH}ckx1;*s9t;>4*>DBfQaqWn<+f;91zD^3+&TiK(T$QB=*TK54{t*xyOz{ZZz&M5)3eVjp6CZe%R(cOcuV_c5TZjN5SJN=#9P{@kS8t& zVm|?qcuNoR#F3a7U?dW6X`c@~aRm?;35dj7TFn#JU}B(=$Y$fBe&&g*fOuFyWL|=Y zXi_FA>KRN75)hwY;#Zy+48(^5q8BD!=ZP;dajk&(7!!3oF$9RU0-_2N?XpRZmc>9k zY9ykkm^h@CG{-R@{#0z#>Uc~H;)(q*@i--dN0=RrJ;I#9Bb+Vq+w(0?t^3|1Y}=pr z2rEw2f=4*=z~i;~Z!hLam7}Wbd4zkPs>L2*h)q1gm5}KR*`OfEwB(e&w6A!Nu+Ib*$ zdrvzUG>sY)xAR0#Af{b35{XCnj|GI7eF=zj1;j|~X8jCAxUI4Zh}l;JMC=j1x|DS3 z7YWcw_6vyVnE3lsLi__0uNjHNBYbrwPrMGqy8-}c^7jpH#Sq<0XMExbTiuZbtTE$Cou;&ULr5fF*jdsHwXwoe9PzJQ3m-fuE^ zVj&PuBnxs3z_YkDd>t{dOhEL)(}uS^@iVStijk?>y_*m(+=IFCSpgAy_S?=P#OU)t zbh&RN63>3!9zqPc53})W0wVV8pIA$XUMWCq^T0?Xp8Y5L2ywv!on`bL0TFxl+a4lB zMFtSd1VrN5UwlA^J^L;Xp^i@kMC{prbMY(o?E5_f;-!bi9EoSY^dKRA!Nk`BBKGXR zdB79j0x=-NNF<*9#fJ&;N(K;11w`!Ge^bB{KLN2|4B6L$!RGcmCX zPuv5o_Gw1y`C9~YD_G>$k*{15dRbq=VGESPdp36 z3IUN@A$c)w@nxOe3uwpZK)fspNv5)AT?S2!v)!#zGbw7BCYVcjC8hfp-)~?20TBWO_ZkHOV zY9ZjkiaLz$_^GnCd} zrX%$a*X5x(Rr>q~QD0L4EZynSzmRQw)ka~!h>yY z!~SNe8voxz-4fOK?j>(^F3jpW{i1b@$m?Geu)9aC&NRU0=KeZ7iPcdbLUSABW9c`3 z-c#KYzwzBKzSp^M$$BDe3-_Fbw}l@!Yzv<%T3W5MZ1F?>j(q+b^GN<_Wsr0p=3Cw=~oH2-&e{^dX%rK1Ih{C^?&pU~&eeL#QL>MZSl$iE|> z|EiB9|HLY&|2BOx`$+x)yC>^N{m(-F$E)@Ecf|Q;jW?^-Ey)_+J)#!!f37D&{v$~K zC-wQGU(qX_&a&kX`FH2@A3jLo5BfjuD0kx=!qjxf+wXk+S4%x)Q2%~mYDtun+>LBN zXS?(HcO0qkhx~W71L8tG5%M2J@;_zBe+g=99%j|yhy45S`A--}^8c%o+>JS_Pi7y< zKVbJk6Au}*|3k=s*H8NV`{4XF@FYgNZf725oe|Vn4*G1`26?JA^AV(0r`7|>+3(3uYZauuK&%c;cCgn-unDK`21HbCHW`10&$z3XwjOR zF^dWNQ(Xq;ZTxQXV79sbQODkr2UTWnnjg&D>~Sc|g(*b6M`w8yvgkOQH`8~d&lo%OpJqu`xwA9FdUY4ZA2+&5knnFkLPkI9AgW%{v1 z4x^}EQvp#=;Av3`^(c%Z&d2S z$X4z7V(QT3QM@%)-M7>txuU-zxdw3Ln$~9~&2TF+xGwW9EnkouIIJd`b4cI1m`woG(2lNJY(;$V$w z_8;JF%|c5AxCXMQipE)J9g~dhwBH6Ptg`x`UsvOH;@T#;sD|t7J==r}k&N~B+m&lK z*4x7MmoiJ{WO**Xdw;e!`sBjOqECD=ZP`TmYni3t^&+!Plo1j?@2b7Ic7EQ<*(1uf zw0IoUSlcbhg{AL0!CL^b_T?VL4@N0Ny}2Fur46d#5AMM>TGH{n3>|Nmxn@&MuBPn| z9dDw@_7&=FwzlAlX>YU5zkUk3xuYgm-8RK#{@t=I6F&vD*;|u~Sl>@Uu_sLjeA26D zqDb)y9kxjV)?pjV1#tF2O>SKK6qk~_WtKsof@Yk;tizvzE}S$y*kaNAB1n*bHV9t3 zLW-s`6fHu6uGHkR?WWZq63BLvsDn+QcktdkyFhP?f{=#wcFn47gui1kUd|M zQs>+nlu?r#*(1fJ@SVRAgfI80!uC6J-^!Z6eVMC|kwm$)B>+FK}^NsLWE z$rsZYn{ccdGJn3 z)@o*pPnK@T{AbIrZ{azP5#s31;msbPba;P+n5eDD#QFE_OZ;{^f2YI|XOY?u9gO&M zQ?TS<#5$iL$^VSozNBDWf!%7Guj{7_Nq*(CeFhK#|h9via_Yx4wZ6|c?XZ%Tk$s(jAh2WZ^ zZw_Bg-OVKR%fuC#qi?2h-L%?tm$+_A1Og?c3#P1{P>;f`gI6CtCb^ufPf-CS;U`S-n^cd&KrZMFrikvSnQ<^$!QZkTdxYCVbya^Z&bfLua1&op`mJ4KjyBGE)tsN$VC%Z@qlLp%R}s8RurWTu@qND%{Hz{_(IDT8XND0C z^fSXGNmhAtw+_F2KeK4(i_%=#dABZRW`)i(nU*`JDE>=xx6pYA)PHI^qG!BLC=e}?f9 zJbqGu=iu~x2+o}r;EymqhsQ4n@NB?6f(fon7T{SJ-$HQpZ2|rSK7ib7T|bjdzk)<<154G8{^}l9cn{xZj%7VLtE6A;Oq_oj)!(=SAsKp z1vnnssqO?<#Rzabv{Q!>ToWt6@z56e@adlx;CN_z%pth?f&j-u+hZkGUMH>VN=$jnf&zr*lkz zYXKK|6C9lu;KexpLV`1w1-J&|A$&S10{kuDsoMyyxueIy#4RIN|Ev0|zp@$o%ekYH zlRucabl${OttKWeF=_qQz;j0%YbyjME;xucap}B?%Z4DBxZ))J5KHGxoPRLE-I9$s zF>$_Y2!2+8tB7e@OYjaU#`qk@Jwph7T!0f3r{Qs}09WGpY0)J9^mJo7EXMt}6a1P0 zCnj$04ubc*YmAR@{DnISep!I4vFTX2i{QQQ8RN4UpShdh=LNWu;Cl%E^L=A{2IGEv z37#Op5yrWF1Xn#U##fQ}`}z0+oFnlM@bMoS<7+S;e30PD0-V_jc-kR?PtOp<$9UFZ zf)@#J7ULx`1YeP9jL%_wa6G|V=NNG%#=ZU~c$@%7+W;Sbp5R^nGsair_}m48YXmsL zxb`B!1D_e=t1w=EiQwOaI8L9rLU8qSV|=s=$LH~H0-VM1eXo-EXI~iOYcTG4jo?l% zjW~nx7d*aLfU7b7;5v!_R)8xpo|Z`P>AA*qxNVX{-VahN9S(UbIu)(o+ThyJ#`{9- zjI)RFS(b-kuOEK%B)1E};_)q6JTBKS9yRXBZ|fl0s2>)O`x-DEWZL18{`PL#;qt+5 zR@7;?uK|nkqLl1M9xP|S_VL&5`hKbW;3|q*hBis6GLK3& zg`=9nEPgQzc=R%~USj^}sAPROGI>Yw+n+VC7N>_o^VZqR!-DmPTR3vD3Lz#@0-L^? z)eVtx;A}G-zE#Z*e{?T`WivgbMSU#BDkRKg2#4W!jVsC!15f&d{3FT&&z9k6rW-Ox zA+l(ize;O_<=W-8aY|Ek9imA^P$6Zmh&>`%5Ed)Z6dI@q{bjZ_Ln*fJ0(vebdWP>7 zD9L%v9F&w%VLI7tkRUqzqS@i;Q@d6n;G~UTJ&JwE>99IxP`<@MYZpenMwu{|sqXXjF}-#yX9&OML3x18A7^gw2Xsrsw$ z65jQk-xZy-=PtEAdp(!CG+ps@@)ET4Wd-lvfEQFh*bLu@8Ecgl+Uy&K%WTHXA3^uI8Fp+Q1{#zfUNuB*ZQKS)}g_kqzkb?Kwn<7&cacRK|-Ci1+>JNKVrMVB4u7alW1ua|fZ;W)l;bFxF z;X#QDBVK5R&PsaXM3DZ?p``pUE*Z$8*m>JrZrSN|)6q>yqkUKaSso-9U-?U#D^eGz`>h=V%KiNsBU=aMrQ4qu(nI=P~ZJeN- z0i>KB3dkLoGyeN>N=3L}q@3YLmh~-^C<^`%Nm;LD$oZG)C@Ueu4wnTxxx=u*;cAoc)CPXhUj{~-)`^h^*Q(nuJ2Q?vI!@||O(HiNwb;Bw@+`DF7!<+bT%e3k zRcS;Wijow^LsJl=(B8TF==kyrJ>TJ24E~Hw&Mc%3^!pQ#4lP-pZAjzxvq#6npC6q+ z6sexSex7r=s&~Rq$qzFh9lvn7=exgt8tLZxQ!S`ug&(S_>s7tKF8tEd9)-rVc-=L5OTy+Q z`DL%4BQ|C8lGs!04@2D$8v#+lVRC2#ha_*B-?8G9+^gNVk!xlWgGN!tGkryOh?w!+rja`*@3H;|W z9$)$UGvNK!*sU6!H#Fz>@X?l+M(3GUJigLgT<)DUX&SJ^Ro--*tyi*V7&5{oi!Q zOsiO=CA#A#tg-9s`~OFGQeJmyHr)Duue_R3u_zD{Z{kxkevO^2j~Dz#0smg{m|U^Q z-)D_oBk#PSRliHdTK4zOTfg^T&|MQBFW-;A65INyd_87WVBP&<)Ezqi*Z-tD#OwjG zKzC~BJFqbyNx`^x0%-yghwGq!;IIxP4kLPAM9+(9SVF@cq5t6coj|q+*@lLlXt*s6 zx1-_qG~9uPo6z)ZXnIyOY)!)o8g59#jcB+r4fmnxxzY4`&~Q&0?nT4BY1oB^U1`{Y zre{ghGo@h}4a;fRjE2o=xB(4!r|JDn)9XybU1<0x8tzKN-DudEhMUv$TF~_R(ewT3 z`DXOIEj{0to_7bSe^)a8b|;J!{$0t5?Z%v{9iH7WUla{d;3@>)(t-2(xC6=fr*Q-O zjhRz7I=iDx<=zl~aE?FZqPhm6mKI~>64gv%RETAB*PkZRv{QtLf$#2s6#{DuJEZEJ z&0j^vF~-8s;qXxNX=oQjgRzEGeXXVHPq?MB2}9q24h+cGa(6voV)xo@b0{mC&K zHq6T&(@_#1z-ENbeH<5_A!581wFnq|aOmNW4Aw6>LZM0rI{z{YU4|RU>VOsjPzQP9 zs938rkKHC4Swhb28Oj*%Ufu$uL~i}xMf;&yKq ze1_MiKY$NyL<6_>E=C^8pX27nZteUmuFdA&#Zkis7V2w^9J!@K&~lRun~I;gRWjAt zqAOe6RA-TuQa*TS%A#!1Qo8`p7egH?ppO)8+V(t7Qn*QjK(E07{(J?pSd`s-bcC@d zq@uUxhdR$a+hLz5qc2)MM7ktfwA{oG7ol}vtd)6g+|4kTVmOOjeI96sI=K2sv8raQ zcPWm4wZ+XZFm@~K%wd)fu~`DjSjVR46JUHhCMC{-}0djjg!UCKY$l^wKSE2|=+|Ww~*&GjX5zJI@aK zgrl;5FzFL*Za^`#Tim(?$8J5qw|Y^-VTL}j&9%6w%~rR%NPHHt%T3xZ%?@2YglNch zW9-(^ujAV6aV_p}fauR;=2C-hCYxd!C#H{iQb@rq|z~%dW+7KW%ke3~`Q; z&J?he=#T5Rm2{>LK)mi+T-9}}+n=*Z|7Padlm6|zCD!Vf{J7Zprby%a5kQS^Lwo3d zQKR$Y20d{tR`=TKc8{kh0(i=wTVuDz0c9bkqyk7O7H9M0^544_NA@KY=!I+V;9e*m zSm{c7VTWz8Tkq$`wfXE?93?aMLY9Fpcvuq9113l2mW6SWx8|gi&2=5-;E*xq&W7dL z&EuR+xrfkZWR=Z55y3#VgP3?z6FIw*naJXNoxAS0C*IIA0O2ip93VxHfP5 z6z^NL)lFh^8*wmUV3i0=XpS4$srb+K0SIqt!Uqd~T;}rZzX7~0G4>L%o2H}~T^u)KryB*+2`Cj$Dvlep z$E_IlLBN6S`+l(RSjK_G^P$c({3n&CK|;yVagh4!zzX4YVC~cir(7mKS!&0G;o7u^ zzYMq>;OlxONE}{A!|Q2y0}V&g@JkxbrQtFf*3$4}8qTKS_cUBW!{Ia>LBs#i@G~0z zK*Oap{G5hg(6BWaV_aSZ$o3#Z=y{gPP%6Vfwukfo((n^1pHi6vvOS#7qhSpVf2840 zRDPzioSv_s;YupMP+3LKf2HAXG+a%?HB{D8Sx3*qI+oN&O6#+op5H;w7trt<8h%H^ z#US-0@h|0xOE}_y7Brd-#5gljIT$3ZF&QF)lk z7?ApLcTYI()?CSKzk61B!vzxCXl-v-`0yNSXFJZ+Dcur(j;_eG6}WZ-dcgiG_L_){ zEKou-)bhhu*|r~C=-HNRCz*Cc)x69B+7ZtFmkL`A`0#a@0`dMT=Kx9kJ&{}dg3JL$ zYSq)25U}OMvk6u~sK*KU=$X7*Sn#M8Dlk6+Li;3(y&y zM)oqKmTc42NMO;at;)oooF0VVB+p*8W4*1o&|FAeW|9OEkcfW1=eme}gY2_)g{}O& z;&hno$RE?IqptJVsYp-vrbn0t2HswIH-oQdx z@S}%m^|0NkbxUW(hxj%xX%&R=68I6{>&6qsq?;R3>-vBZC7bd0;U)9MXpQ|pc{hz|+016;ExKIHZj<)qk!mLaCqblcoYiR!-S zZ07>YO6#+o|ME;ut=ql?6v8E?)=h&SGwn-SwUAYBxD7Q5037|BTGxG2{zA)(z0&PU z3{Az1ZMQY|fvWzgP- zZGkg$piipr)>l-rz506V3)6J!>*Cbs@gY^cOO7zJZyI}7OE;vxGEHXz+r>ex7woy~ z$8Jp1ao5G6`SBq|t`K`&{n*Mo({xfk_H}#B)nl)x=`>fTdwqlw*;^Y+4cEP)OFV3ec5AeB^>s!llw$4q|h9(bV8kogCRu@G5oig`BesB^TF)BRHfLr zooPchm6c|t!gnT5gu@3ZN61=&sW?SU#bdpx;9S^mU39XOKbVR`R;Yoj$}N8S*8x>- z^6`Jy9O1Wt0`4l)YPP-6ap5;w-Pehb$gmAG4yTQ>^=T{nqyGYGWv6~fTWy8<$cnh+ zvpRKn*qX^YL$9?cMv==|tBWPyz#Po|ufo`e)K;9UtcZPzDdKbWDTjdKT8b%tFX~Yk z$OV-VN^X71aiGMPVTvlRJ_T}7ho6I72Fj+^E7)H^`Ba4|1t05C5KPdSgP0Q5yFO*# za%AoQ?VGiGhobTdumW@^t=fuplf`w@l)N7RyI|8QD_R{|Q_BxI+k5aSEad40-vfpg z?GMe0r5lxfsdT53q0)oOepC(s*|;AW|xf(=(5D}PS07Piw*_2BJ`U@aj5D}_wJ>VpPln}&ui_oE{m>C3G z0QuqKi_qey?v?~v0YO}1-q%fREe;3{J*K}`*Oi|84dg8N3#8%ARK{9mp}BYx3U?9U zkGV2Om%8SLG7PRhL6xnJoT(k=+eHLmL4axL1t& znyx@OeYk%`te=#9~JPqmOe6)?ZH!N30zQT-buGY?y#%++D~Rj!*2vk zY6Kr<T{Lh7jOmLr=E|5D zNwm+*>unvQeH6tncPN6dI5kOM@$0}r`cJOpz_~dQQq^3UG6uhBDzU92yb#MjcSjc4 zzYHI9T#Y)LYbP~YrrQ%C&RH^iF1ZlmFDq5U zIoLH0Q8mli^X46|IYpc|53`@#=(k~eBgDV?8>6y)t~p8Jh7g+37bzXoiD7%YnjK9% z_Rq+@5q^)`I#&4)_v}Bp(T>r3BgX&R))A@3?TvW!#B0)wMV5*BRGcqM)S03Ooi7&e zP(0}D+g)i3!b=@G z3_lnV4c`YVj~zKMm1$r?I-W)jC@X4e1`UW)dFHfhM{lz&L^b8h+0UE$U3ZH3Y(DVJ z)j9%Ik0{eBg?y^%^A`EbH3Z9SXM&HQ(Aosi~O+ zNlPTISoa1gyluooJEpqmPYtTzDPGmC% zN|GQ4=0z(_33%kHJ-~j)t1g zMq1!93ha=6=KvPzj!rJp+a=tQ{A#u-lyXifc5ZLlP+jP}L);Ip{w4~zJm;qcDs6dl zg%g$9I%rkuFk4(yq>yp|t(KuEtJU%y3KVPbM8k(I9X$t1Y#yK@;IhPv^r$b~`FHSW zB-Y}D;J}tMtD%!4qhMjL34!oG1qW(@Jt}$i>y~3VynfwOE>1_MnJ+*!hPo9yAV21Y zqnXIhkQo2NY=e_Od@K_yTPsY}!S8pc`pR}0LRuRpJ4_XDjgy_8one$2TL3W^TAM-D zEXF!Z7`TU7PC&#B%2w2CP-f?M z4cc?KzClqnWMpj6l3(gKD0kLL-=OL>5R=SaNrTq4t*=ha)E%Tj8>;(ukC6>EG&PHc zZov9TsHYF*6Q}z6m_E{=59~iQ>O&Kh;0a)YC^h-}?Gc-Ds=VhiYv-eI$0RuMh4$uMgB#T8R~G4B_3VPWS9fgls`V9Afekuiwlhg5V-}Dp8srVfh|0Pnq2|-k3qv!! zcR+JTa-V7kpo!qvGaUE7=t7l?0_=|ouv46zVulA@dAt}u2#IV47k z!q(I;N><8uMPYP&Q3?!2DFG8TQd0*-@ufv!ASbq(FA7t?C^x!%{H`b$(sXmM^{v)- z2M(<7#KxLUI&1a`w&e6+JJ$`6*rXwiLCa6Tj2z&m)r6pn?ewugZuqEc4qNjW9sDL^ zBOX?EPoxX;brQAlvy<>u$St}|#-uyK9$eC6*$OL2$*ZNV6|{jdL1tA=h-s%tk#+!J zq$B(Vmadm*(^nm|fiWKH@K)CYx26JGj$His)~tE(oeH%*bfh&S6nY~=S~Go7UH#Tn zUiqqnPxcx+f|6M<9jmG}sD)gpcvXEm^qs2Gm-DK!b<|s2qAJzr?^MM;{H)s^FCq6F z>_H2*P?SR9>a>0+pAkyhi02 zD$h}Qk;=1FwgA5(&c_#ITab28UM#)gl8fal8lFI943!R47Eo7Q8|&yu^@51ifBIhG~X%oyd#yZseBFR zar^`t|1FI_m8LTiq~4E-(}o_v?f&qOa+O{<3r2ayAfX=7b;z;>_ep+NF3iA;yZ&}0kS#Bl~e{& zxr)lwRKgma#0#c!4V7!D455;xGL*_ND#NLa0EzQo2NLV;2`$fh8h%E@8)!I>h9hbC z4GnLEuoC!1G<+G_71!e;m6xbYhjzmFU65c^QEQN{ARR&Ca!i4Aurz@%E>9fQ=LkU` z!{g7;$DAks-l1ZgO{W=R+rL$R%tLYWvIgSQczPJ&peXsX)1Yo=?kSL`l;oEL>FfI{ z9xsM;J{2q|I`y^1c@yRsz6#>D_yTdU{7j{m%8yijqOzRIN-8U;tOBXe3y)PpUOr70 zb#VICZen{T46h0B-zLycTaX*6o>U;Q9{NEVSPxow-2@JIqk3rpwh-$v7{XYtp>hG0 zaJ!t~QB-cBavPP=RI*ftQW;KV1eFYx9#jsZaxj%{RQ9E^CzZXZ>_=sPDqW~_rE(~h z!>IJ6ayXU0Q28sBBd8onr8kv6RF0=|0+kb~oJ6HBm6NF)MdfHJy{H^Rt zPS=^r?o>unxs%F`RGy%65tX~BTuxsu8l zDg&uJLS+Dzhp1de<$fxcQ+a?&e<}}Bxs=L%R4%4+HA z%llX{^Q}e9)^Jx-k#k0v2wc-9%Cj4k?C4Z`32PrNe=0%YkydCXIK>p0>8iCwk}i!% zfw}I^cU2D}Q2KP(CN3Y*oxKZB6=i|ihq|#rCha8&J`Bt}PR~pu8jU{NRYvm&Ru*5!v6)okD39 z3aPeZ(Hx|iqjazO$>Fw_E*&+YQF+~wir6xB6P9o{1)IN zZP8qWewF#1OP`0nn9H4!D%mnSv$*X)h&^L^xdjW3@`4uZe5j@-Yc))R8|IicbU^7* z6`tBDB+)&VVN09Bb*#V@{n1Z~`dD?blXCbu2~^dDO=uYgy4z<7uM=|6__x=8%;NCwjm6x#)D9aR*{AH1@P>_;Hf@mWJ5*}($Wk*!Br-({ zABXmMJkqKKV)D=$$yZCnt(E*|3DvZpXpPvO%LJxJ@Z_A=$A z4M=&%V{bUJos$Zuj))ac2PwEyn)@Q|zDLA+5lgy)NQ}v$)pu3zZ~uMOyIUb=s~@W#ztm85%`0wqcxY2|lG&~t3 z&6Twwwjdtcf@7_CTd>b&9lCS6ZBL}C3;in7!ey^k7T-#53j(AY2G+9$tZZFzKw)!!3eMg>zbPIw%}%5e1X~g zb*89fO#CpBlL=A|_po0FHN&<*y|w7~`nG^Q^_?w1qaDAq1<|Kaw~dRxFQ zF>lw2n8C%;1K(Bsr|+vi>4&O!HQ|2xvFbfncQjNz`#1H-Y3g;v@Nf|a#m=(_qQKv5 z+jf^acjV&WDTleRv#PZNmlPH&e$iRUA@*NyxntHZL!ru@*gw^Oic!L!s*?lZ>M-cN z2q}kk>P$MolQyY%S%FZ=I5{zZ(fR0jr2@=P&S?cAy-D*sdc9gMu4+;~4r#|l`t?K3 zM1!<6?4a{vXRbBrN9+`nc$?cJ@)VHORLMT3TC;aMbXQsC|0O3d^N9FI)L^AC%}$E)t#09&A)It^?= z`Z;v(20Zcg;ATU4fos+NBVU_qev4sI+L>2#>JOnB3+;t}?0%aMekkyUATSH;k$+FY z1c86%DH`VJ9{8eV(P1=FpR0n)unOEkaP>n{4@^Pqt2wt`Qss<+Tg}F_6MLY$ zp;OJ)wyoNYBBJe8`?F>ZJiJlmr)kNcf+x(>)?qp&UmvVKB`1bb34uTAHh zi(&^if?YUdS~R_@Orf|vp(j!#;I*3uR+cE-rAZ=qW8mm80f|ZnAHd^ON(<&zxR3 zw7YF0{BH=4@;1HMr3ono7}g1p&6w6^U12?j6YRcMBA4fPX@TTZ#H=+61g9OFYG+=` z7a;Mkg+rONH6nCZy-kXjk8t2kOM}V0>^z;9b!bCQz`RTqgS@7`@)0wze3y_(nV6nJ z7K!cVd(HOgfy7sPp?z&tdsLIfX#C#jNfJ35R%0>&!I)5uCb360<|hTw_EK$2F>;c{ zw-d*-TR*;oAAjEQu~ef8Vo_q`fW{3gZAkUVB~g5(9Se3{nJJyp7*yvd3vF&WH79(v zeOPxx8PP;HPeE@8__-! zE;I;<)RP9~Zj_gbP&iCEs>qZ>Svr_ZIW(v^gXXht~30YTQhH7oH z+7CYRL({l*x%aWjEf*996?oL%^9Z*_jQozoO_IFb2zRcy&{s$lH|eIuX8C%U%t8fn zz-a}xAbg0v0wPj@RMXAhS77dVeFeM(bNq$zxB^3$c!FJlgYUzYqj%*q;pz= z<^mu4ykg=*!b}_V>N5RaW26|m(WxUQKwINQLky0>Dsl6b9AWQ>km(x!JOFs=THYR} zuA;KW{^Mcl>I5AT>*g}we#(=QDxdPd*$~oxe>8O~dF>M@zTOM%?=tgz)_pOmIUhf1 zP^-K~HcabQ5(oOfx^{2O`6Hv*7`qQWA zOfj3;`p4;0NK?b~=~I{Bi?;Lm35)Wi$)Tn&Vc~jjhK{X1uJso%_ND0m#AxQ_gh@BYZAS3M54b(}Z4w&PzAM~m1EZvb ze~K{Y;zj>O-JaAt7M2y2dmqM~oz-Jgs`4EC*Epbf+u27o%OD=K)8hNHrBRKB`}KhU zs6FzkJ;T_}`3D-XF$zX#1i%)#UYe;mGE!cd)kEC6rUCM_zt>p7Uhg&jO8vPdbKOLF z{T8|UeQmiqM!!>c} z1Z5mVP@vb7EdKWL;&Z*Rq=EAFDuhyxUKEMAJ_$dymUksaS&I`x5?xb9dK1<>V9)Sl zZ*Z`%mQY^41#5};|87KVrVCHpR}y&rawjECe0>v`RNPmb7c|=)-#8^uoCssR>x+c= zH)6E#DmUroy3I%-!}?WE{z1QPH~))z=126~_wd6a9oDZ(I_G=+a<&=&5BgPE%n|4p zCH9(mt-gNMk4@Oe_4ONk4Fz7Suit(C-|5%+-S_&PJK3n;u;Wy}p_fD=O`p|WTU+q@ z4J678pWBR)-s1J!#He3Y2G(!Zo3Kkl{a&T|Jt498oqL@l`i;NdtgPz{Q#K6rTidn# zy5h4Kc7CN#8kE#P+f~fiqYa;=Qsoj$pKjmH=vIreR(Hn>a0V9OR$=geayR7Lt+hSa z)A!rie%LsoV^jD=#K2_=uc>l2+J117oQ?b@M&V{p%u(N=Hw zkyLn-KY8B>154Qx5+su~?1}8{5hL9~ww9=(!^UAx3WG=01AnCM=dr_-h5oNO?y=)G zzqiTrXeWG`RYDPw$_;Tr(Z5PinFtj;;x}8Fb{szo4;U#6>5P)0;szRU9(RM4d<)Gy zz8Ghsl#X$zRtz-S9~LP zZu1Mh3{wpDZVNK)W<%_y7u$>B61=mQSb40U2o|-=5u+*^EX5CuGFaKjBlO(uMITQ$ zO!X6~x<44`fzwl}CrDs{Vo@|-8{hp&8&MFnJVFcq<<}WC`AT)ahDhg{^JhcU@PipL z{odkkdiq~fX#lYZ(J>D@j00Pcs>c7nv$)s)H;VwX$6&<%3Ymh%)lR{=gXO^%0o3cM zcQ(1l&qv|?d1n(+#SMl*z@EAdLs9j6c+?hfn{;l|fP04yNnCn!eUM0sqCVZ8;3>8M zx5+HYZp#V1;hAYmm)=l0(+SS}2uJg+lNWQ>L}j-P`d0?<`p<%9+b{@~=QG8ie|LLW zhr5$?c&Y>!PvQF#*~c_hpr#j=w>kDo%uV07E{uQrQTk~y3jfI-nhYQEtQdCr%{!JY zT?$?p$8Lwk{MfBqs>q6wL(6%+kh9=^c!nnpt3v6OwdIR?!4_YBVtC_h78i}Y9 zk?w}mut;_pm^XO&&(K**Ew8#%<-)5uTp%U_@9gi`reK?~NsYL`jaGbky8qThCh)qMIVyqZ_7ihJ9Apx8E30`o|EFzmM*%)0LA z0jVnsb*;2Q+0Dk5!$LwI2V{$WW6Nz%`kAuef#i22XkhhIDoSdJph$v)L0Ru#c}-=} zp#tvmu)%AiCD9wf6!oeU(%i&tj1w5FiWiQi<~0S+l{bmsvo?uxNMq2 zwAT7&lMLkA1|pC>YPo$8vou;KLAM}x;~__12f+S(HcYPYSPC5-s&!Ca0e|B0q)n zQ^!bmG3(yw6|D9QOA8GRfiX7wA>g6vooTy zij5x!7ug#!vnaAxOA=(^awgbz7t&}zskb(MbobOpU|6e7yWr-aYDcD>KWgH9w-CR_ zJ+LM2mHZ)B`Fov^B4@YgGXn-XyCL!UieaAn8zHVpeWOmET7=|db6PnD{DNRhp?h^3 zX{2J@vD? z+lvPs2HRyg`YW3pvn+(AKRd83;y$yNUfJLH%qb&X4h>2GJkXwuS{9epHWQwL=L-$j z2X@ouiER;sZ|OsQT=lq8u3`R$(nCbp$*9)Du&*&}KG+F}jq;az=|?h)Y`00UOMo0w zF3^6TJ^=3f&xU7pVZ)|+xq7-8|Be9X7#TJ>RI_*Ws8o02-2IonRFl3$W zDk3jKfarQuAuUqhgEC`XxV48xC7j6LnAJyr9@%RDW@LWWrk$ch>?lCVCZWUtq?r+V z{i9Sf!=P}o5NWK|K80bp)%gPIc-C5)nV{Skv`%bH$6m|5`SBGc$zWrweawCp{RLsWB9L+ z1#`MreN$icwS+B~%EN$?U1QOB)93HO?e&{>SvbKp$$JNuSt0tRX@01{zA3cs+-H>< z++4-bXbLF@QG;OTP4;ShcdW7ceh`@`&6j;3=|I+Xol=EE{9#l zEvrtui%5^d8G{np2lsZ~yZ1Oyna~9zi`4~6g!x~>+j)7N=O=T3-{g~2kP9t?M1 z+-);1Y=WV%pP{f5s^SI=fPD4wptPszYU2JF0NdzpBR_)*ia-VDnQ1&SLp=){}ltX_N z!Ac9R``iO}gFt(C;Rt|NzQUWnwB{#NK$`6XCa;{+_4tE`SNh!-NtYk;7;nuWgw@#m1En{ zh?QOZwoTDeZa%Sgm|P)M)!Rg`84F#J>F`{AFSw* znY*=W>6kCD(i)Ldd~bke1d{qq{(8sTrw)T)E8pK65ZF>KT|4>fuqiwkpAcDcZ@}CU z3h{OT;R~AT@RGAN;a2Rx6+ZakMXxHHnzj_DCYOGm{B^@hAb!QywVb)0+!cyl%W`WHX)zgeNc_zBsI4bL9oR1OaLV2Y$*lD5Lj z88rr*rersKbg$Bvhf!!qT6My-f|+@cRPDy)$RdoH=vOnHj56R-q7s%XNoTT8#C8c9Q}GVS1pisL>IuWfr?~ae zd%d1~3H9C@!21#^R!?*DMwj`n^;S%DdncRRSzboE36$Nd^}7kAs+-3Z=;&Y!Z#l&B z+v5*(BdT{{mlCw9cU*C)yQfFW@rqZO& zfC)Xdw0Y-;10k*fMWToq1l^H)jwZY~RBHeEKuBFc(b2DBq?v-_GddIb>ebIjd&^gI z9HY_{{skA-W0#Xug?~6Ml0F@Au-{N@^g!VscbVeZNN|2VEpU5tAy(!m@v0q>^CJVo zcNnPrr_Rf>d}3CuPkzEhu37b+YvWVWe|Pit!Pjz%|BZ{AX4Oj^O`x>39DG0P_`O_o zKXoE)JM;qwsxOjSDS{tWi=3a8+=G5$TGew*kE99H zC$J#rB?Wt%uCyG}+F5`;cOzB*7+9#NJ!Aoz*-S48WO+e zjaAhiSJ)ij)?vC9qZyyVsg;{Xr_pW!r~OU zZ{r=-jVRr2g|9n+lhHc@o+NHk_Ut=CCk(8w^lz;u!u53>sz*ws`^%bSJee%3HW;Pp zHVr~la3w0%aFl?g*FM^PEU0QR1(O7Y0Fwk^jONkq9wr@@X=0!|CJD}-B3fhlnCOf^ zUsM%;O-$5|v)`-Ico1uYMG$NJ(1As9;JS8olHpXN73Vs?=tg9z*@(CsCuF+c?rO) z06){rGOuW6iN)Ow5GQzkA~HK#k039#@eV3Gp?;%v^`=ySWf0z7VR~<+3nn1P3dGlK zVyRs93Cy#^7&a^hSuTiEP!P2M(9wh+b~GwrT(J&}cAprOXBq7--1HxSrQjxp#IuQ2 zz^S0R7Zs3E7N_`Hg`jmRU*PJb2V<+ODIS{w5&m^iwf<-13!tC13LsS>o{OqCRp~&L zU2ZcifvLV)RDGw`CFNL?n|B^uVxJ(P3GBnR9w)UDe)Q z{aHe6@Y9{nq?}-ZZ2YvtKq`HHRU3bi`;(*eo?h|_t@FL{QpWGIL^Z$BM5VZji5TfQ z?Y$>cFm`8m@{ZHXylO$CNiTDTXjJ6Z{lBozRfP5K0A9A9ICs$u?>$)TGoWYu)Ka5>o?&F~q!hPRdfWWaqHK2ufF{nS zOJ{id9LTeL|1Wv0eu*mk1eVx7<^zy+4ZLG*$``{t=1=ZgihP~y=k z$R&IFt9sOk_Vnj-95b4+RN;blot9&j>zv*lD)r=d{#2#zSDs8&YRs-Ek?!`xt7NiC zj=EQ+!_=WWq+&VGkxqCNp9jE>zT?X} zTRFve;eIDw?&v2o=hQkL;jvRquY<4HsZGq^m^L(V=v7NLu$rc#|HEe9 zn(yQtxIgER+`B%Rvysrb_+=R4z*(O+ADwbc|5!S*nc6i6BO4NdJF_<~+pOVb^QE4j zqeFfgT`1c7Z^C?|$tpIQOgcBeue<~2-+M3*&!7^_6BZUx&oU3Dn$&I2w?FDox82lG zR8)CqQwLl%nBo?Ou0@slQ7n!M&u*`9#@Nr=1`&w9o|E>3EmiUCGzhC;0&;Yy6*Pgc-{DGE|FC z)4ZS}k z*BiwQJ@&H!QC;$RR2!_iM1)Qaim1rc+BksN&`;Tj=5p+GSrct8PpAcAVs#2E5W=wk zq}Gl*Th?TgM?oKR)+`ZLcU%*G(?%Q5f+bgVVA?g!xC?`{Hc!EKV(03`;Jav9z!31= z@~c>9cGiqBJ^V&6SmELJX2&@KofL-Nzx49g zV~tj)EDc@3)%3RmA?i6rqNj7^A#})a^?^iXE#zL^SMPGw%=H~7RuDg^(j->EPfzq} zKKA|D@`@xwD5BQa{_NTt8+4AIOf6jjfa{s{|y$<@28*(KksKJyA{xm6pbRm~mI z6-_dq5>f6`NNqb|J$Gn$oBC)e=x8!^b)g8V9oKG$rcY!aZ9JQDYBU%cRv^R2nnhv5 zv^I!}@g)y;(iY7W-DO+!HQG*|_M+`HRC)+E0xt-q7Hi!hl~*Fc@OgAp8n{E3>qp4- zAB7@-B%6N#xyarq^?9;0K9o zE+NXs9#Q;Ot2VM6nvGG4${O6d(qKe6mbyJ?RnIPUd%2G`_Y=g;HHHpg?BDDRk&iLu zpBh~eb!iZ}4Q9E!9%MBUa_V2Ln-<6CS z!-9|v$u3Y{!^8=-cO~xt-lwg5>@x~-#p;H;l1ol3h^kTQZcozOmGqTB&HZXl0462$i;B~qK&(S>yVCiuBp z3qtIfp`khaQSooMGaMmlwl84wl3$)BS*fXrdO1jXn-|#Mz5cx@us=Wahcr#xI)mBe z#OgH=IGDa@D$q&GzZx1rXg(ZYPQ`EU&3#$%TNhm@8riqrg@Q%jZUtEMt*PJ6Leanb zLj0OIwq=G7E2o0CggX34Tf(GWnvAHvRMTGCroM_nvU;=VcbpMjmo-(GjOa?7&o5|p z{ji6#!9>-==DgCVZ-yUgA>@`+|q_Ao7BMm#|a8KzYY zeJE)_N~b59KF=sV`-!G9QNN_;u@$Nz4{2i@kW9$)?oUtE3!Zlm>;Cq~hmxdel_n$? z7ni10Mg=_4WGIGd6C55&JbwnxjC?3LzGB;X=Np@rKhaRl85!`L@4WV4i0Ayl6T4hM z`j2=KIggy+B5CwPi5fR1KhcC&Qat;KX6B7eA9|i%Ash8jLf@X(J@<6IAg?>W`*o*> zlJnE?mUvvm#3%VQmNJMh^4h@N(|D?6g=%JM5WNIq#4Q2^yxV^1j?)3e5kld3mJ zoSM+T^@SO=^$@n$jt+Mk?;-yawxfi8_axMI^r&yWz;05rTcMtYT0R4IX{hDXb^5N5 zZvGr>5wU?e4o-u8%XLqoXuOAXs{q{f{XH}n3;w8n^)AzJ?|a&Yl4_~gA$(16S!N1k z5kPnY>ZpJc@<)V}2_8TeP46&9ku%?vFb!ct?4V-qgQ5i$b4n$vVm?5h8G4#kG1H&0 zDx*y$9kf3;pGyQ@_0&F^cz)`Kug;cN^_ltQ_5#SCxx!91!c z0w=p7=V3szD^e~8{`z1Z_KP7Az_T~LK%t>PGV^wYJlF>Xl7f8WL>4qH*calH^d6Se z`0K62B(PT6)UXzVo;B!JNZ5jm=5fyxwA);`m2C}zf#t>4oa!=H&E@Ynbp|COosqVA zQS(l1Oh~Q-9j%8nQs8r)Irf0nE*$pM3kS8!R4a+SzAMeKFidSIybR z`tA3X;2HhUeqPO8CZPkagnra|PzM3FPEk90{^H1*Ip1w9Hah>#KMv79xtt>(v1`3F zG)k)BVCI77RUX*-Bx*Qfvh)sj(px|x1uDBOXQ2t$5&eJf zt>63$-u%mfkZysTLDus3$1ebM*ps%#r z`JOp-u{=A*x>!C^pRp@uD#tsiS6PjUcM@_He~nw}Xv})Ob%pv`yykKo&BrgmF4UzS zn~kvx_1X*LD3KqTqaz<%wzh;R{#NXnYHSs7VVuCUew6Q51z?OzuE%4r?aOFEK#r?C zgeBlv)WjI`CfqT`oU<@|T}cUW()s1FxKEIL3lbLW3W4Q8D4tpo)wGLhz3oNPSDUN; z;Dk88!TZyQGLW@!)g8*QY(m3GtxtACn7#V?mJvrC)Ypaj*2R^ZZr3MwS?%PVhZaz0 z@N0H4wfdw#tWRF}hm-f;hjT0=5Ga$)&(SfledE3mzts1ly%gM-oK{QOT~%8fT-cOy zw0uMdm4v`L@<$sB3w_qOHB#F}yo1hm@y+I@%+!U{OmWbll~)*Mx50ATt!Y>u+I%-` z8{e5Tq~@abZr~>g1&5ob0vvA6;WS>VvGiG?t zc4no8fk_u<&y<5G)Bx{HK%lYgPkmm7wGPDInOfC-SFw6*prHwrDtGOzy*T~ zo4KXix9$swJC3i*fs?Z*73a>U-_T#RkG1_su_%?J>un6>;Qmv^#BLjO>bp3Ax#_*0 z?8Xpd;f@dY(7IuaY?q9l3@^`IKE|~-jP}x+K!uzm6K`t~X9r5zP z2nTR9S!|Un;Y@wJd!j}-X&FpQ8U*O580t^qM)P6>~B)(*eY!Ht=jP2I?%^N1CaW$7Tl_h z^Drc?zUkBIf?a(F3qN&Inyk82J2Y0%F8;U{^Sf>1kZrcVc2=5fvn9^6-ZrkDiM$N$ zkQZ0vCC-43USuW5e?^U7l4dlrV{Jb_rAbdkZ5%)!-($BMgMECv7=H3oMvYP+o3%~x z7MLDw;#$Gxh%;H264E8BF&IM~zK_2$YU^MKf4yO4jn0qsdgm4eNo4-Ye`rui1ATls zl(_vC5sdh6f&}~Zq^f_{1?P896#-=846;FjxJXZCUS05OvsBTgh%%RZ7TCf~enZ_v zm8jX~x|GKw>yh$!q;u|qy5I-qsYfv`vTh|hG4z?k^1#8tgvsK50bgfv#f(#|gHKfP zc7QPD)q+DYF3Od}I+W@_)VqEqxPmd2ds41wAESEWAvutz-L`XxyIDX?v5~tOaqeE3 z{3yfGn}V@|B7pEEgo-MYcV_CqB*BOSIvMa?WpaL)Btxm}cUa-|_6rmTKSNralRB>({?#KuzB0-kL! zfQL}}F=cqHP}JTRaYP1~>C8q=Iq0`WO(9Ci$;{q*IzHQIOr%BSe;1SwqszisLPKPY zuTq4|SQR?P!VI80=x}Ld)M@A>>?&avP!ZUeB{nW4I>3?BR%|L!iIg12g8;hIM6RQk-BWx zl+0UJGH-GwTaBjUm0WP%mgC;rJMM+Upgv#Y7W6)&_5b#ROMLPUb5uh5cbSp>GpBsE z5EnqWtQzS-txSo%?5-}7Z^QfV7Wuth*SP2$Bt_U42}t-WN`9xtp@*^o=@p zz$XG)5f|_!v|_OIJXpUjm}UJ_5|2QM$NfxV3D%EpDyOV3)B4pn`+YCsEr(2I`1e?T z4J$kuY#2@V7C>*-i*rXZ za;zNsTnwuql4ANI#M~z5Sq@*qDu@XIItB4xcGVNM_ke=vWLtxKouDB0uAkvOF%^m+ z!G$Iz&+@VzT((nEoEv9&2c`j6H_h<&c+SkvP)uPJ#INk^r3PCc5K^u8=u4%3wH_mX z8Kl^j(`Lm&E$1ie znxmXfOE>9%Wj|o<>Gd<;yM);xu)i)({v@%-9jW`9HWzzoIe8v6qPY^RepHM*#dN_ky80uP4FzM zG*LBjo6Qe7#g4=6AMFXL8~R?Px0Gr&7Q0zft9;R}kk>JVqV6m>`>YO}vNz=QjQ1_z z0t$voWz+VC%$iAu@ix=i2+y~fW;2op&!f*T)bmI<=kGUvJuDkGA9A)<`ml$pfOF6` zH8#rlpe^J4rt*<p~v+QV;G1Z_yS3YvX zx;`c1O~DF8n3#@}u%60F89E&t7;8yUptD2KtCRhcSQBW{(0h`?sW4aerNW&(7&dCn z$3(T-ZJj=%e6l&y4hB%es(R8)?`4nkEWMVpQ9kmMl)KSzhaq~Thn!~Q+;62+m1l-e zOToP~$|o}DU;r;F@>sycygbWqh9e|PiVN+q>N``Xr8v)=>79$O3n(7=H1AOU@Wsy) zrq5(^-KTeJhDiH>=*CcXKr}m_9T0^X9SX>}bxILGnnwpjWcxIBKqR|}0Z}$PAQF4c zWCuhiR+etRF_aw;y?&t^5M|_?Qm8Lu;KSe|9~Vx)mm1AJ6u^6iuh)QkzB;9NaNham zrqPF3yFhFw5Kwp6KnJNs@Q|;u%Gb?LN2CXbSR&>6&-C_Gf)%r~=2+Ey~6vhVdP8-|`@KonnS~!A2vvJYgv3i2> z^ps;6GrddjHHhL><#~r*4qy2^Y5q9=^cG>!?w`lBhXFZo?9F<_PJ1|8qMP>6(L9}t zz#t!!J+T~5Ygzb)2I}~}HKvL6T?XiH^oQl_Pk;?!QpQc3Pk^fX@OrDrN+X;PAj6rbck`9xc!K5|Y8t@nRKgsA|GXQ>AI( zc6jbI&vPsrkdx4!2=ehP>Z^rfYg%_0mhA89T_SqIhEtNrhRIgVW3zXRW-lQ)i_P9E z@A}Qvus>t@sw8oyx=FC1r@Z+k<A);~UjS2bE%ES)wz#krV>b3dGMSRPQieZX)}`l6}Ti1k8X*qPXXxXDH;8veF= z3>*F?K7U#fKZDmWTAmrxY_B%W5(eLmw5jIT`; zuR?+^J#Vf^_;khrYWDp+#M$MJ^!bQJJ(39hf=ai~I~ou-)rgI=d+J1AGpH@S_zzF9}UR3Iiaj)>I$Zw%~HY6_Mr(Qf1+n4T^q_#CE++>BKAw^B3VGYer32id6Soi*Qs!*rme;!rjz?t4_#a? z_VjrNOO?|$RuSQBcS|W>ILo`+f7ro3lNrw{B5I4LhsvdN25!qC#LT2r*<2&ob(q@{ z)@oZ+S8Qb0>>mfvb%E(Ui8nrl1M7>oPXy>rQ>xbP3ZWLDik~Y?ZtT{?c^KJLBJ$wi zcQo>Vk=4LrKjxmK^eGt%r)us7n%GpBFufw`!*2ALnb`4S83J22LQCn zfAN|6#y)+jp#dyg(VQ#gv2V~n%Ebv+UP-?FToVP5;T^!e#-RY=DC7B``i{n!I6m1;4boTj5$PAb z@E*L@gg<6ry})=1ViS1(X&bIe5%+RwI3ZcLbF|6MS$a%K!%>IS=Hh9p;t&NHOR#qW z^IV(U1M~Vi?9oXuLm|&R?=LC^J?H3rcY~%hbFy}YP_WeC6hK(?I6qEl9{g}uNQbRC z32#JKL?nja!b_KOO@7k_0e<^X;y1A}3ZOKI)BU$*=OAbCU4Zc|puqh^y}(MSXZx7C z(f%uqrGmXH7)N;M>l%+Ds*&&yYAYwa*CxAN*Uw)E+P~ByGCNeNZj^YJH0N0ET_Hb! zon;zBpbs6BHR<%BuOc;#OBmzH&%p!_o)}vp@TKUt&6ruoJVpiubyvm-toV9?FKNKB z%-0Cv6_U^JY>Yj2bRFy2m``m|xm|S8nUb)8aZxgbjR!11{U`2X{rzE69&5(!8upJ_ zA6BkGQo&R3it(vstV>|#71kwCje2b$k?Tri4Pv3^BV#KzO)^bm+Sx;wrk*l{bYDCh z!dmssQ_G~E5Z-P&sA8bT?*1laZ+Sg}o7t_TnHyd|; zb&QvvU^S}qYuYY?^{VyJpv9ME3faJThp!|j>aSW4whn28C0I1{ct4g!7hfq9bsL1P z)e@bs>Qq03&xlRc03BLD-e3FB-);>1*A%wDeT)9qx^6kt0c#8Hf5QdY?cs&Q9=ctMM8j7}4}#g4J`d2aO!*r&)^E02_>XW9n6<5K*6`po zoOP`bGbjl6;XX~=rG8opI+~~eQj_I}eVUBKe%kmo=%M9L#yh&Dq(9N~Nw7KVFkoxx z_6^4auxq#MKJ6^60=qq>6H1)6(in1PfP?1)p6mP)fUfg}`WI*~6t56+2_AJ9LMLc^ zwZ5@oL@ID9l>}{Cs!%08U`gbm{>A=00dp%ECOhmI*FGnb@YS+xBce)Q<(vX@_QFIN z8*=Q+BO{~>UAzD7T+iou^`8Tf}v8M z&$~h<-lS0|9eW_`*yJzEH-f>ZT2EnQN5i7)H<_1h+W)Hq3_gw~pB$2D|1q$a$G5#a z3jXX6J!|2*0B?THd%8*RZ`UDpAyi7r{X+FS<08=bY3lM;`a*_v? zFpv7$CHJ+fUIlxRpY`4T{%?^ocXx8&?&NOCoJuRGp8rXWXy8h7e^G}0qMV`D&s`5e zbfduxomu*Vph%CPDYq>#Z!=b~?BhK8z_jW?H>wA9_ol`U*^Sf)C>m>nVC=xGqYh3) zM37^{5zMfIuRv!qq?7h?cw>UvCt9LDh|kmYL!PehN%uj6TSGU?RIJ24XvqyflUA`n zdE!Fq6Ao27I))5m)(<<)5k8WZX`e7)V&x9a&-kQI*BwlD89y7-K4HLY%MEM5{8WGB zD+A_+U>GpTcyAa8{jBpZcq3%XbasB?Px*=6QmBE@UzU-|*3ly6kVVQF)%p)Wt5DlU z(28(kgR%|>O?hf5Rf1N{pFk@i|6t9ay)}cpyxB^xyXs9V-St(X=4IlZ6t>ctSL_3Q zyp`X2D|?!B2tZ;`3$cPy1(RqD1?CUstx6)!zwUkUy7!q4ygW>JmF5K*KowvRR*yRYtR+#>}=#hGLO0%8#0f zgLwIl=*`}w8&vCsipx|HUsNZnjFwSu-7m1CntfLI^RGiBbaIH8n_u-N7+#fSG$XWG zDh+5+#|`JV~qd7ymGJMN);FtZl+%Pc(EVC3@z)cRL{P>UZnVz;^N?){|> zDmuzgA7E{PbyGbG{M$^&U}30!&D0859I9pOJ5)bpieAWyj#KSq$ZV;S`NkwS^!z;o zE21}l_j5?V1_${=I2LCgN~Y@RwP_ybra?HgtM;C(OoG?pE+x~oL$QWnr_i7$ySpec zmxcu^Sdhz!c(S{^1xymy9;Op)Hp&6I^%j5?8^T1*W?+0y_mC`;kSP(pSXR7N$Fkx& z&7jqqLEYC#=V0htQoveztI8Ai+=UQO`K$J&ML_8jKU6->QqK5RK!rf)%4RAAIAcPx z973l2*$bx3BtcF6JUTb3Q8Q@x8kVaQKCoQ>Zx+qQ{{|4 z0%}L++-#?j()V<#i4bZ&1ni^XMFBDYRRL^+&MNyk#zaUr+Pi zv+=v=jqEgU8PtUi)4WxEzn4^@*G6VP8+O%0V$;W*s1aMxMI_vn(O< ztG6`?95E4t1!I;`P{_C5-sCbt2gYAl{YDM4row-1ZxT#L1D`q^a$pT+o%>nK)vO$S zP?zXemzZ~-Q-J|$FRj@qVds&}=n~*B!W{Ru!qchI)(K7>3QzM}m(lf0#uGXpcXn&x z=`3|$pAf&c9h|6!^jZ{)-{~p{xohyXbrl3zs^`&ieuwxU%<<|my`~4d3c|9sDk`L# zLXH1=6$H;m>?#OfPZ?Dql$ zwfnZ}*wnKTj75Y+P4kkQ<_#!f*)*XHoq|-HQ0M(;owpJ82bIFgubaPtz5qhyukwWP`hP4^oF>f9kQZPWn+yDqQ~^5=F? zYY=9*|GOvqSq6U4R)@NE3Q{}NAv$nIleN1c3+oi@X?YJ=6GaMfe$K`5+ph%L%I@~WJ!%SQks4JC-`w+_-yzA?|zdyu#hbkk_XzNC%+ zk_KOCb=x`#x|xTVrRE@zQFG$mFmnj7P_OhUi_@pP>19egYDWWTTSESIJ-aJed`8vYpD9N3nvxa{)5nQ&6dl$ z@&!JtymJKQa}+%AC(Yc+AN_gFVV<(z#&|EDn`61>S>=TCUNXc+#b3pg7^zL(TskEN zQOUB_LKAy%e=~Pfd@L^)oFLDxM$7;aC)|j2IDWo(d+A8eY`Ap%=Cka?yYbO~(U$;) z8o!<`rbfebWi`UH#=b2JphiraqwGV70z)J`B*yWqgJwtR_6prYR$4!0c``pPfL9Z* z$j7hu*@tk-+%QpXY-nvfYY9Dy4iQ?}rx2>O$ZFE`YSK;y8_TGUm#n4oA?%~p?1Oe+ z!${dVXf1x)MC!pz*3K*Vlg_|m4~F{qjpcA(3P|1Tcu)VgaCplTl2;}q&&r2+N)R~P zqokLRKXag+(?GlK>j)_dAFO)Eu+%#B=rKcoYr+f}O@&%&En7D+b+Hbbl;Z89 zMl;#yv3`2-o`#olZEtD{?%QhPFY`)ilRh$^4T`V3oF%FH1UHfOp7w^q^_k!8B_g)e{7dG3TiJ*zqVF~XXD9Ml-~>u7m4+}3|zh1;44 z>*jiVnd`CjGcy`aaQhb()CsO$>3?sf|M%BeZA1Ed7IlKluDu^_jfn$nJ{D*KG}!Ceqs&B zBL;HVy9i$Mq|E*LlCP)w(nT1sTF5$93iW%)hRNohsL!roq1)~dYRDUfb{iRa1M7TQ~TBUKcu17#n-eT9^zQsLs8h^P8TKwV_yJ4yiN93=n| zmt4Ik@%gGj9Y9VlY<3G4 zoS>7X=44P~jk9V+Oh{qRBGLQx1Qj0u@Xp5GuHG>)-L}U~%h?I+2}$v3)U1{Nnl)>M z9XX`QDC)1JAfg4|=w>V6?j8C^%rR>ozdb(G8g{o>L9j7p zQ4;zLxmz0((yfH^8_YNIGJCk}#HNd_i$r@i*SmyT6Zt!C1IjnpStu1@MUjc^mVQJF za=vgp%t~&==hA3F%@8(PFl@!0+JgP%O%(Jo$s0<;@c5wtcWUFtnqY;b+?={#^(C?J z$DYclKXqX4+P6<2BiGvV1A8J2ucKR3eF=*r%{T8C04W=>?KvxDeJUG*1CtS1$AV`m z7$LQN%-VJ??9$yNqRC^+Bz z2EbVYXK7-2lg(ou7IK=EmMX$>PGR-WYZo!)>L-hNC`_NM4qrz#N2XD5kmti`8<{ zy7)?S#vegf)1azJQ7{ce_&W8ud3e{Q(tHt$8=qBvG=h2iX&D=0 zgL`GgV;fTxvf^LGsLK=iQ9#*qTIV9fX)60)W@g@v2e?yAf8R!AqOIBRKlwG0W&d=2o7HpsncURyg z%q8TScTD=igN%Gkbt%ZDJzkN{;AKzY`!>1FJEnv&8W z$=LwPh8^aM>L(3UUxM-dFSG|Q&aK)ee42XJrHV{b%Ul4eywdN~vLed09?`Knkl7&3 zu4Usu@7Dh_Q?!>-rlrp7_Wb9Qo7d12&98*^<*fy=qg$3U>=(3gv@D0H0v=F@? zm$QXfJStVRa|a8myxu-T79eM5jZPJ%0L03gDzDIY6y%uRbxalYjM9N&2QzEK4Z@@k z3mVZOx6h4bpbOa=ViZSekUe%5KFkatZc1Z42NY~Sx|J2Xq&3#}zz(D26Do;anNJLx zslks5tnb!h_>|%X&w?h+*9)~Fz}1`%08MG+a_jII)w`)#Lwx46zk{)As0;^4w{jJ? zWe6dra=jT<#R7TD*hq{!#N$JP_aGl0W>>70CRpr^qbPtXi0A_rtYJZ}b5TKKm-@Qk zJQiFdVpFD97c`bPwt`n!kjrVt?b^EFZl7ro?g$&D34(ArM(-Qbo$Fc9!|Vh=4>K;O z*ZaoM@%4~X9fF_5Ap8D^vy?BxzQavWR8=PfCCk27MzP>6I|_~!mz)Zeoc$i`VBLXP zxyb|f;I$rRnjl?KG7;xo-uPcay;4f*T`?Yqv0Axf5`mE;6sSoy9J=oOq2c=2Y{aRkhIVj3sg{iBk6o1W&Kz;3x zs4rq8sS}i%;0F$AB7k5TZ4oQQg^e`&~Na=W@vN5z+2PO&nA5o(7-6#hL7c6dWIi%=D9E!(BedA7l9hf8t21w~t z_8txSE5rSMtmsr)OM6P6+iXuMzfjkd@I$bKg0Fcy0V0+}e5tN!+fpu|mP3Z|-U4$v zn@9R+e5i=JCGXTV(byohMViRrPMHfp)yJ_}bxo>|-&z#*NE7+pDH9wJD&!ghod#pY-}*&4N@N zsArVTQj5u`50?8-EfKS)TMwb%9F-Sck&%?68)W0bb;~FE)<86LT#@momq$ebHCT}m z#z?wtY@0FC!)(as4r@`;F=oP5iNxtM)}lmU_#F)S+f1BE1M3t=u{Tu*kB)0lNH9RG zfw+il6LmD4&M8Ulu;io^&&77pnwT_+WUGeO$o#`>jd(^?HpLX6#{g(vx0>xSG$WMk z%kQ_n95K$x12wgHxm|~s%io3s&#I#@|CQ`%dwGQwN%Fj-)sUnXGSMO95{<4r4>~>) z<OKhqy{wjp*z`p{Dbqzg{Sm@pf)l4Ul$h3Be#c+p#@Z zkG?werMT(qj_vpGs&Ig`r}buKpU1yjKXmsIBl^wS-Tjvi*7 zH*9LChMOD6YPj4pIkn@8E1M{2KVKe{Dzcx?4^Pgi<&}ZBjnwoZrB7oIDcZ+W^QSCT zZC876sVw}d+sxb z<#p^-?&+Ir=G;R9iYc67ErEgZw-m z`PC$;o13Z-W8dEGF&tY1_m(MJO|6|NUD(;(Y=G5c6Vg7GAVlRmQ38-%*twy#^U*Er z{1MXAy(Q;VEL}Fn^2T8n*rc(ge};z`^IB!}k*(UF80naG6D9XqqBiS@%4DGB+XuCP zqEnR8p|VU+daw?J?-n5JnB+b{E!CAv4(O&uPI^*1E=LD~GY?WZ%I7Y4Qk(Hi2l|-! z9MVlfT=k?jPHK-e#Rj?`*6G<%PihO^RW;d|8qyjba+-ZFDXnUfkA!65LnWz|=jp06 zW>k=501ymZl^@uFYrJESq~T{}ROfWWo^XmjG^Xo0lS;glKJ7K{BA$i}i)$brTi0#{ zkr=$FUl@lDRvUD(G52Vy==JF`m+hVej1aR>*QVUie2hQRMUUFoz@i=%1jEQCq7ZOj z>@8x~K}dP5$vBUdbiToB5x#bkwHJyn57Wv9K9p=lmZgHj0O1D7*2NO`=lI>}OZr(D z&bT`nPtqN7#H$$lt$%Jwj0v-Teac8Ix(q9mVOc=9;o%Xw5CeonhIhL}-_vq@L@cP{ zO|?G5BdRy^y^XQj{3uK#xTz5HzB6XW#@M4yE{-@yNvS)6M-df$K1YSpu77@L9AP#a zW0Cap4!QC_d90YhrUqhXo(SpR_0Zi^fHPfyt+3_$dz`TV4Jm3l7q{RgI1dH>0cQ%8 zwtWBC^8FLe!+|44pA5nIOAB7sa#pwCluq>MqdR@|`D2G~lR8|}OV5_? z)Za{xO}Z2Nd7$O`9L|5YTtCOTwB?#=XRSxLc^)Uwhy)s4HpIZ7WRbFI$k`2P+jKwE z8Zh*98M#EdZm_VYJ47BXTp89$-{z*_A98}N-Kr^X(*k*BldguojXQeOq%P9`yDX+t#dFfb zbLFj0`u6`Nt^8?NSHrtaJ9=zLTQuQ4(pDj@^c|Nz3)4T?_Rx$oJ+wH}c0hXS&K#U6 zzjJY>{LjOg9{d(uujQtkg9lP+sF7&ZWlja7o z)jt8nrupFz#~w0gmSvs55%d-G@f^~|6*LzdGW|;7Quam~n%+_XI*6l0Z{?MiYbj3&%FwxukK5~ds*&lq8B2WFx^~^Qr^mHnUafT< z_QtqlT{G-cb)V$xx(=(?j+dYjk-F!kXeKG}T*>XM@7Yp+yxP{fmOmxk3_Tz1>9Km4 z*B$F=2Ri+nkNO+SE;&iJA)=DF3(l>3!aoN6ad;9U{=|rD{$03j{^I_OvvHSb^d7o{ zKj`~BEs_5<$I!!`C)NYuxnlZDfKZijN&a3=uR9#krZg`?P@T%oPB?c(e?G7!1(%FD z{Nrx6CVs?|XtFL%uePy(6jejh(-+f{(s~Iu59UlvZ@C%kJ@Y;%-5(xty+Zv0%0yEw7N@oWI&^(pod@HEjQ<-_o6aOCf0(F`i=KGm_-4d*N-y z$z8{hv#(_Uvj-#Hk#*~eR~K_e8et?4$+{Ji#oY{JgHO`HS^1!$unWO1NyNw9Y>hj1 zdHe^_n{5bLb?|n~=02vg>}8pkbbrJho60iXe=NB;klhb2-jkg8!;}oL$XzstRLwT) zf@Q_&cK785Ysm>uI$}j#6CQSdeQk@Mk!uc%;FH5w3I5pvlP*i?LvHnZ$R$i~;{=vo&Ys`+zxft_Ezfe5f8naW47ooD zpWM{QX$SR6ZGZgD%=R}kPnJ)mE$N67gL-og zM&OggpPZ9_Vvg*~ue+DL-L(XuEt%>(iD0LqVkrXFHu{3!3-8Dk!7o z%G9)=GBr2je<)~|<7=lp$zTim@qblNA3u)Vj}}z!=UnhV6g2wbx}r_p4Y|ENHmHc`t1>NE)`+?&`E`BBk|W#QBqE(0h5_!lPF{|4Q%XC zm+?1ID@iBjFjR-o2_H6X=<I$vK3XdoZE{ zL!e2lW_0p`yZi1(vwI&QFW7_O?lmX-_Pc?T_nEtUtb9Dsb^XOjmwhH(CjZzpnfr8@ z!Q35X?pAC;eg1a^%{E}N*@9*pIQ|a>)f;iMPplCwsQUj?LDy_y%nWsfBjUP7qSr}& z;$C8pWKVsm0lGH6l>U~`L)!4}6|>H>HD${U*i3US?S|OHt(S619kh!vLs79wk8w~IDt&H|t>>+G+BP2wmToOHwf5o!}B%xC}_n$~kOiFzy z-Yi@O-qIahOT(X|Ny+}eLpwW(Q^bqR23Y7ygX|_)NvHpDy;J9z58qGF>qIQBx?T_B zBn5H8QSJD{`>yfS{2nL7oNeo(X@SM`nG?p4z{7!-7ACOsm~bhA1ABZ`9bbktdpuUI z3$)zhLAc5t-hHkWyxKO2tg^RwD-+0#T66}?axCJ=*NQ7jUJ)NFrpURn-}~cPqh;x?drinhkWef zenn3o`Qg>wUmJeB5`(H#;bJAdAO+@yBq<#!aX-|!Tt{-)<8QMd=xcIT69A4sdW>87 zDDmw=(UnFboSTpD7OD0+YO)OF=}2bV{TfLhNi2vnK22MCB;vVcP{WUo%{xK{kWd4v z2xgc*b`(G7E67tZi_6_bF!yaa!lqhh5ID_$&oJ9iyW91MFaqf?XG=tF;L zQIjY?QZuF#?9JSD6#=X9Nq+gu%jK69 zFWx?#yH0g=-w{=WQSM(}o7b&)(J3t1qa}^%ce&Ty4BFSrYq+YlgGQg5pJn{}^Go5c zB3C@W6!+}vr`&aeMl(NQ884*y=KoC#`tyHBi^+<_BWYjL!s)!1;3}mBNnG*b(dYla zv{=$g3qKt#)E*=NPd>TgMVF6r*ZFOD`vFhxao)>i(~1|p3+Ap6};3Y_5`Qi)euS!o{K0yTYX^BZR{h=;+cktx_Jh2e4p&IYPjO%g2&z~j~M^^3(nt<_F1jI;(j{1P>_9q^Ev=v2*SJmS$od&2j@do-g)Ut-a=zdGhxc$13&y4{KKf*TnJtXA=zA za(c4GNT}9Y>j54d3K$eYe^m&E<&Y~@7qp@TIaQFw18nPonxM9*SgqRDDkvWH3`N0P zP!JH5c;6Zn5Eb?RW)ngJ{P_R+^S2+E+04FqGxL3K-kduNE+H+?bdWZ@gfTQ;W66qDr=_~Mpdq^(ZdQ_E_P`DAGBF; z$U3Yh)Ckx%i%H?eh9UVe+A}h$G8eM^cXBGYC=f#YqAG35gW^^7nH!nqCb`GxqB&7u zo1|eH8j03UE8lXIF9(gXO+IJpRkN4-;>U?Kd$(RZ_(WOPVyD0CxcvC>|5JXu@GQGblc(F>|A0 zxry&_+A|Bv&sh_up=oKSluaDP>p`P-E<9(t3(DW{c*5d>@W zJ<&A6@EO|{A1J8Y@>HtZ2K@tl563kW%Ue~)miH(emTMYOw7mdICyf`T5YmxZ{2bE= z&)o%;ZtuqJDyU3-xAf0~N zfDD-20S={MC&8@{iZ$^KqN z_B5_BV}m~;$VH2cMz7jeaOw6F)k{aVi^#Tp4jtoM;N|h?alV0 z%GD2}|4aNYH{-8JA+WyHg`rWsBZ}ljm0Rvd$176^$-FFn2&A>Cs51Y<(sf19B}mBP z*YYFM7ZyQJF*<(9Nc$%h(!0^|59R^#%!f|zVYZ;CvIIhu5Vt8T5nN=>mqx=$4(LgR zE%1dkGSg}Hz9VnRN$j0(YhXTo(M{8G^-utc3j1W?5Js1artHEf6SQjI zuxoB_Fb43C%w|`r^eIhMlp18T=fl@*z52#ir7e9p>YxBG~NvjQFr> zAD4lXa*^W0?I+7uB96lN`}|MC(ekN~5yWO^Fb{>+99#UnB|*#;X0nG8+t&G7u0?rM zZJoI&euR-}Hy2nKL?;$JM%slzBUlmM0IP#acop*+46p@kT;?gddOgT+oS9m0*)Z$? zj6Y!*v&^srrW(z(HrUGViQXW9AEb2JM&)3`7lwf824TMx|4P-b^i8xQ&bo0cxyuC_PvU#F0u_jNqz*K`fLRD|U%eMAT^CO^)G z-KtyrAhc}kx3LE1XzqBJ;CN?aAs60|^@KDXqGJvS z?cn9qKOZSwzzT*9Q9IMRFwVwl>yX0wlQGOE@Y1*AY2)Yc0;lOB)Lrz-5>HEE2ykKG zqc5Kce^frseg-J%U67FmZAJ#dM{60IVMn>>#V8|A0IHd$T0|n8Fw73XCH)S4ShR95U;665kibBPqhIu;k% zw>r4=9dg`suyt#-1zfr{B6tVzEHTO>||Iyw{Jhr#xm2pKw12>p!C9^^l1jg5j|!>`9lX36uM>) z_i8(!%+P|O!l0~d21QBiVL{2$1;uvKansQDKTfu^&(gj61_4UY{ zh1V+&ooWd#uBwYuHQ6%A zNa2vokM{~|Zkrjf?g9j}Z9vNb_HfT$%;-i~6kzbZ(INp@n)tvY-SICp{uHV%9CDtJ z!rAV~4cj4O=|Y$S&i?KVw0hcwJtzQs{l0w<_u}AL2SI`mf>-r~Wp#0)5y=~&Ic)6Y zgyuj)CcvZ&anTI*C4DF1%-L$zP;uJ$!jTk}^iw~y$k`r#gUGjHqdniwvNwEu&dP|0 zW!~6b?30R#1?DAzNzf>uXBYn9%H=({JJ2q^t$TAQ;Imxd$B4 zhc`7Tng+Tm^omJ9{uCF9jGq==x^#=XZ96d1Ua%OWc)PE0`OER@&?hN9HnYhN*G)E$ zD;P6tN)j_(8xJ_bCmoK?tR?TS7UEFzosNTC*`m(SEoz9N@XqbLHt?c7SG4d7lnGPX z!pj^3c$s;SXlr<-$x}4&GVk*mjoQK+2JmJ_4r&YU`Z7)mSM`#!Ke@hKp{WEsfPFy7O_WqSi>eW+li^VnrrzK zjW?{@eadjWp}JD2qfY~Kwdd4*=v2b~)4icTn%R!wSZ-%{!XaRT-~#b8@yPuaJTb>3 zj^+!Lh)EvgdfT~+TD3~|oWc_~`nBaW)Rv?ZZEK6tEl68i(DoVa)s}L?y!ID>wr_KS z;DZijuRYMBLjhOX(IMd;u3%f&+PqVSMi1R}B7+*CiL+~?1sf3x9fkaZ)T&UdThp$X zGN-4{t|dNih0x{wry{aEIc%ul1mqwCrG1sHwlI(cgzw~|)mb-gaot-Ft>*eSzhtt#62S3NdI_r_ai;1heF)Z7}@MlM+( z7uTe=a#6j|kxR<)cI49kDOwi!rmbAEpX$ivS#mpaQGi@lH@20F;L*VrxhUVYBNxGb zu3$&kwI@y)o^CA{rY@>B+7aX;8ZB@O#&Vg~1wMI@mX1&jZw%^UxXZd(&p1DwJQbll zNnlZ6C$s^r^5U;t14XaSAw{RY{Dli2 zGd4rhc~dlT;4?F~xW+l-)e)o+A*tw8MD|h+tg%3&|6tT$S8TIpzyq7VxoAUbk5BM6 zHzb_;7|LSDN2fKFO{b{a_{gI1UR!uwv$XIcp)97kvZ>)^E88QeY{3`XR<_8IJ++mM z3AwMXYziK7)EdDju&;?b>pnDVi*fce7jD3RxPL1KA^1!Ye2BWl6ZS5(h?GqeI!TxF zo#Wbyl$jXUEYeMjA6zjTJFr_U=F9ZCUY05#ON);^ zYMUi={ZVt4d<{!>7^emFSFEO)E3TdZmO@n=Zj62L#S{kLL5 z+Saz3xR%{vUsO&Dq@oc;>ZY}K_w?;f|b{i^(sW`p0N`pgkiX1r-aTZ5litu^>U zLFSQWgRi55^ZCeTW5wOUuEOzOveq3J11@NZ>;C$275AY5GOr>wK5MqyI;ylD?Do;a zZSD4hCxdm`)9cN4TSqWLu-nD*o^5)cwn3rV_S9hKIj!BsmJu%KmML+2I(SIi_O#%r z)@~a$t?${~Cu@<566CUm4s9bBw0)jdF6i`#A#JUoaHgSf+qI)@)iF}sUlqQaMwZ5Vz^VF>+n-UTWj{K($62tk5l18*nFGa1DBquGQ`IB98*Ox)-@nsm=kJ=euyDS+wYjmT&w{HUmKprvF>&_Ou(o}cjM^~Gpso07pEt#4Gy_z%?z5Aq z*9i0cw{0z9w+XexyY%Qjkk(tYe!NN?CqWD;J~~)vLLM zYLQDev`~LPm$s3M;$neTE=V!I9l0PF!B2m7v#nez)3tIz8SmPW3sY*!WO)^jhLY}R zEtg^4ii&Q6T>8IL^g4y*0<%`9wX;?ed#M&S&w>~UeS2+A?P|yl^7^P(Q8GZXpfYd? zcM;!xwbJaUHS{TTFNLLHnzj)z7e^=caN_Y)GnLzKH7b8&6iYV$aQilbK1o5hVkBs( zGAB%#Wg(~9wyFEO7c~!Vg_0w;n%h)iOA8fY=>FvEw%V{WS4SKCdZ@Jltl3;_&0yjY zIv#k=LE59J?VQ8r9!2-na}Hm4|6ab ziW83Pa7F?T^oKJxZ=ozY!x^2T;^B@v!Tjmb(ikfRUqm@0v!+BJC*(W5iWQ-W51`tyT*1^wQ%6?r@s`H4I2h`i`dv&ffEsw3mR zUAA-)j7woobxH2`uKDOk19dv-lj;Jebxm%o5=U`sF>`KPmB^SqSJPUk3j4ib1jF$p ziylzR3?Ux4qd@m(~&tHvL#@rB^)zY8huw>z9&g@PAP5ROKm z1=U-Rut5_b2y^5j*MsFV*r0zw5N5Jz+K@SHz&8+pxqH3e*@X?52mv@*0WA_*EZK=3Hs9Pb0Npbd{M56WDVio35# ztgk?d2cOraJ|C6Laj~xk8u5uMo<`C&Y8odFn(+=TU#y+g-CXlvxz1Rz!)(;Ohg{>gjf&5WI0D2- zkZKJv-rCz*Rdl7O`^!3Fl1Ec5OeUehz8L!`@y(%;n_Ty<++h~*W#h^n zt1bcA&UF>H9}X)XL;NTJsbyF9_Qp#O0t;3L$AEL)s z@+a!Z5S1At|H3PV1F;NI@0WG(8DU)+f+W!*h=uza+N<6D(ng^!nBXLg^0SH7xCpVGa);~ikgUJkV(KP2|g{8N(Q{fd)Ip8*?QWfEx9Qm2IwGHzPkEOW} zONDb3v}QR#sJxu`22KzV-~?c_tnJwaf99>zvqPPs4zQTGL!oiK9H;R;G`^?CAFuHz zfZsvA#L);ezg+n*7S4MBC+6I$s^UaiRaMMaud3n%^{Oh)$v>}`xK84_*nGKZZn%6A zD^qx16RB#st=J`32NI?j8g z89Zfh2(HBH6=M8LS-x1H@Ha4D6lSJaOO*O}TgytXc=oHWbMxkb>jV5zcL?cJUsvMh zl3XqF-Yk)sXlOcf>ZTX3O$8d?$&iQfxSF!t0O4hG!xhgSPWxrSo8kwXT=APCYB^2> zl=OAG&*HD$SYez1Vc^HDbURc>x0w^hXifDMLs!;5O?p)~^$KKHcW2rxCAFzfOrsI z*KA(fVq77zW3&*05uTfPk!=7g`hsN-9`1CVKl1lgn^r#Jjt5-WI^fj?yJaTQuUYJ# za6uc}Vs}jkJJi6fi1xL%q;UtrpI>I^=h=KZDOfV5lxA=o5Z>(oxyFVn zE9B~&PJ$U<;^&cE8^xJE3Ll<1C&xq~BkF+pzFuWTlRWF)#JoYC^{HZy!JhSCL%m66 zxM%&A3qHw;SYK-q9U0@hS%QjXZkK$Lt7CkvU-v5Woak9^cf}_e`M`ZQAU@@jTpaDY zIa_X`;c3AcPD7M)KFJ(MS}9u%H;V{`m?r?XGk}RLl*pH?>Q(loB?3wac?GOoJ?kxi z?RiKS+4Au&*qu__^KM(e!Mk8J0|ID9RVIn_;&(OmwI33aBh5oMqfC=wD6N;l7hf62 zS3Fu{bQ!g@k;Z1r=&{{y)^8b?nC#mn)Y>g`MWDUH7Lz~j59Ci;ksD>x+&MSvEkY8L zRXszkw`7_GX~>6T?$7kemzy1;7Z=^EkB&)9KFtrcCf2P8){xg@?y6SgM#c2lFK*Z0 zJd>C_eORdV)O9AI8uD3~`-@iOwrGB3PEBI6$T8G<^vZHi6@7c1i7o8iH6#K)SZp^#p%la8ge0!8?Iz~%8b2!qWDuGe4oLHiq!%d{o!LZ7r zCjW-jZkfp{IZ>QKTU$U9ogfMSGy`z&B-7UO!Yb46_&3~qEl=je+Mfp+a(d;LMk;x} zKTr5Up6s4MTlbt^X&6j)0T(^v1+)Dj_zdY##r5Z3%ig~IA*z-T;F*poRqwO)qTp?g-f4hgxO@#*D}JkIN$L%676xl<3EEL$LZl_jtJ5F zx1a2XsPMwm_i7t8t7Ba8fJ2RORXMYE1=F)(xGBY)Zmo3gr zo*}2Lr4TEE3<4Lu(Bk@FsBplGuk%(meX_Lgi7}#4FTOrmKJe`lxYxrqj?C`+y8EMV z7A~EvKW}*V!H8iXV53Ytwq#`l#CWM^qYK{dioZ z>sVY>H1Z3tOy3sRFm+aDa`8H1;!m{oCJ^19feoo4g*zZ22_$V9Ug^0!u%Toc;2Li~ z9%v4P1FpsE+`@RaGc%JDAtVoC#gm)C#kj&2ZNmH~*rJV)aINK2!FAj$!Spvmuz|g4 z)E=|5VA8L-9qt4n0vtTW1x-&3wayrg;5Z9&v~>dBku4nleTiuowugl)sPYjZxcc&q z5>C#8-QB@B8fL46ZQXnB*QdT_cZL%pb+Y4evUhcpJ?y&2>>8WwS>0rn$)VOcnq+sd z$trNNYjl%Ei|XDe-?7Pt=p?J)J*-cC%SD9=-SW|14(y_9g6*IjX7Kj{VIYyR0k*Yk zxd>oO_GaL+3+5=ta)bxDH;q)?iL~SZiG=|yPYG?2?bqnLZ}zNey!?3UaZD%#H)qH( zS7v@bxPAIEH~EC}k(;^l4q-g@bdU|~pM`gct@}PYYu;#$QawY+MLzy%ux0Rl(9RUF z>P=?DlW3zRGY0*z$GGI?*JIfgy))1oVEY7Us4+Sbx4*nMl)g>bLlP>IS+k$L#H4c+^oC1jh^K@tw8Pq%tH z^AjWC0VKTk)FvZ-fzg5My}!Hdzx)O8aRxrqKMjjt&>#5`+NH?i!&PHV?YkPG(>;{W z8bnJj7%*6@P`th~A&EYi?lHkQ^@k%a+n&uaQ@1KG!UwWN`emN`7Rs5TF7u71 z?pq!3eM^~pg}-vh;n3oXD`G8dhE1=5^JB7|1OkWg@ z&w}VfBEdid#dzL;*9{^BYfy^yYzxNuqNX>8H={pW(~OTcHkeO2?lL@l3<|D&y2Yo< zSj7)fX1RB(#;Q#|TjoUlGLJFuvDIOTy3BJddTb5C_v$h;AZN$$zdt~kSGFlLsyUb* zzPkG>C&Wn_gt{d!FdA3W`|q-Y>2H9EY{{wqUre?8yL^#r4U}1`Ei>BrR$XRh&(f!@ z%ACfQSy`o1=Duv1lisS!EK-+wOq9CJkWJ_u4}aTW{v68uuWyZ}H$1gbB`=u44$axJ z&et#N8bHypAKILI-RK1X|(f|TBn)gJsRKX>-2C|rxgbQoMxS7 zSep9@^>T!eb1P<3)e?(9n}NC@Xb5W)>5F^AHTDEu`4na$kv1xD)bBr6Qe z)i$8_GaKnTYN$1%+-RbxzS(VYKY#Nc7vE=eL35uUerx+y#qVv1$+QFh#;p@+^R zg@BXM171OTf`f5Knb~Q`eE-K_?qv{-S!ZNrwgio2Y`Q3RnwhA3bHZsh2!=`#1WGBR zr%U5VesBnHTc^*0L(&ZW*Ab|mQ&2|Z$^TIt;Z>LnIK#DcM_2!zVF)v*z#jhbJ7GDe z%4o$D_8p;7I0&l)ZjcWDagI3vBZcngkqVbnzR~|7ozX^s3mYMO8je0n(k&$Yr70R zS&H92!d+n@g0$hgUpyw{@X*Eg7GdahE&(2{jfVfbV6(A*N8{fEe=W$+T|-Qu)8mJI z#*T3=Lq){o1bY0k@HiWE1%hx)0{!~w`7>-#F$7^IaACx;P0-d#xNn|MW;-bG8(&*Z z&m#fb_r{b=jw!N?qj?uQEjD5V60v`H(p5PL$Ahw4CcPSu-X8@^yy!1Gv+)8MjjruJ zpMBu#VL4CFPDGB5Jq74RW{RpoZu~ig*fz^-8 zl_R#s;(N6X<_+(OGQ#hbkLZK8kuVu701ny`7)4geHyobx(xE#e++?EI6|%u@mVdbF z8e~ubH+L#wEVpcf6hTXmW*-?kt!npqSbQsV?v*OaOr3Xl=(J6{&#&L{^)Tj}7=mMa zDGh>#T?FA|59A6iE=B#%DV#$#5a+MRHyGXLAiQ(0ap_2O8Y~}sWD7&U`JTU$FJtlH zg00@-P}q9=hsSTed&UVZnrF`-Blt=aWP{P93fb^*JWU8QK@*_k2Z}jkFuYiTGXt2n zIx!CCi<|k!kV|Tle%rL4sxL%guk}w66GIp&1eOW5sb6Bf!kWfJ8ltREg@~s(w79c# zXOPVZPZzV`pEUEOCUu& zF&U2sCvYWz{{{Go8h@U~pASB6M;3tJwI4z=Ffm*Nn$X0V$7-SoY$bk7AiZT49Fv2# zeF%EbQt_ZujuQ(Oo9<-;d>|T5h0vd>#TkGLYXZbzuV$^#osXTYd3L*36KjiLE_Qw$ zwD-qw8xNNR%I?lZ_BFE9nLJB4|L%$dEqXg?1Dq)RViH-FBu*PqBWtd#0=3vRQ*1c8 z`f7KIjeT@+tr5q-oMS#n`V%p+ZW7rmS?n>fM&=d^_h?9s%;GK@$i)-n7~>>$kx(-D z7~_Q+KSkp+;A4za!S4WL{J0gyIA$x1abkKH<5XHK4T8Fa9|JP#e~bl}4|B4tePr7& zd-%k~QZa8gp3he7xhW%NJJLV}7gT!I{ZHq!|Hk!HP%gyt*{Yw2B}_24I2<)D6{n@$ zlv&Jjq(wjHPIaUuKi{0@NJDpEHcv`B(n+Kj`BR#hca)T-iThci((pSFl9VP++k8`& zJJXSl{mhF*Q8#7zL5{ROVEC@G(6H0C>UhC@vCY9)E(Nf#?xtZ(_0AG<5Gt3j znA(C#!DM=8ykL5aF>Yhk7{i*T7GvbdZR+hs)`jDTw#&u5zPFnzB}V{|L5=(el~Ur+ zvKS_DV4`@EWJh|UtryuFIG-T9ftxYUk)94I?oAhaJcpu>zh;~7NGAe~jUq}-bI%AV zw<)yShlGox&$hQ1HpA9yL(4WN)ENqiar$0^(+?fvgvs=9!u0w$N%V0_^zkCiBQQ=^ zWa7d}cRv!RZV~E5L%=DTC-QWnPfzwDOJrhR5vdq>S2pza>7Uo1NAw(2W3a-NIt}IvVM2je>)pD^%z|6(JnyBPr z-V%(VbA&33I0-&e<~{vb3Io&+LJ2jZc?>N@!uxHm}abz-R8 zl8r5uJNw?;b}M&jaO=vA^>UpC)Ab!=iplga#q=Fw`a}wLoyGJ(mN?Df{zukrjHy~L z(LA2uloQ<)?M3EgiFt4cf8YBuyE9I-bgmbX90(X+d<)CEqodl;afB@WM? zxplkA&-R*#9!8=~Zu58uB2L6nfYm)x2JU@wLl(wVuvv>KQm&0@4^xyhw>?ZZYB1f@ zF{YSI4^vF9k7=yFo(9KzkvS};JvNDXzkV#Hd0IVX7VwmnPIP2~7ugLs!-ohG?#pVg zJJEFzQXHWGw=|*@+=_??;4;qlWj2?b=qE8=q)AB!j%7y3C4JB3&yCbU5t_BZTlGiuEF?^jxok$ zdKhDReT*0C>+usA=vgFg_fPyPPLnuC@YeJZPVrRp zM$*#FUZmA7F|VhU@D&I%Wh6Z@$BUFko`mq&$O>>1BcFhq6e)yoMh+0tBk80KUS#GD z@pj3qt$&&vw7+qUnZsw;==u&ZuL%SQA&OiJU|XC!6T0B zM{rWV=12!LFrYoW5!30hF5WHMUZOV+ogchodGGSCVA~6B5A!hgCc5YB&Xru5z>WpH zVJv_jvsh!i+ZkW^b4&Mokr^!3{=3DzOg*gekU`V;*Gy3Ymv#r_f}MC^A_->qya><=PG0*q0Y<1a4`uu(%+ijxZX~D^gl zu8)L~oA4Y@0XM}5q2mE18f;bnCmy+FMK(f+1+ZQ6SY`)oOCc2`wUVx8zwdAWfWk#M zi1E}LTj{ATe*AZ6-%c#RD`8-UoLG1|CC%o_sJCLE!`Q<m0Mi^1Z6 zT^gG4t2&T%+udu(Mk&|XFIsLQ+(#52hu-QQap4Dm@`A@Zz_LhW^7oH4WY`+R~#nuSnV0?x^7H9{nDzdTez>gVWJAIQ9PW#1IyiBLE8~ z(*q9E>*F+6$Hp?pj1gHV=Gn72ZLXEsBs+fuP8B9;=+p+}VD&k>wYI`Uv5$c5m!yB8 zxNuV~?5pB2v@;z^dXr(0sH;^lxTCG+f?FKuOvm={CJ&qv7cQ-pk*aH_XN}!sqKQay z>LQEx5fX?P1gzH8%2F@!!0oKsmwzcOs}>KqDs-SdG;CA5&?XeNhL*Lb3cv{KU_SWz zI;e*&Cey-HWKO+=DoIa`uPxI;u45chj2 z%P;Zx;-##!B9FLI2tNT^%a*|`V(50UMLFl&#kNp`ZBfVAVlq8!F}*&vNv-rY^MaT+ ziN!YMrR-+?$6|YR1M;$J)>~B`5o_;FmR=Bh0CS>@C%W!TOB}q(T1b?#ssz{1>IS&} zR(0SqAX()wZ_)zp>6bDa_bSWTi}O}owiiK^cNfIrM#BC7o=HDNnVJtCpy|xM2u{pv zZ!lqW$H7~F_64^`=K(LQ!xzBsK!-7z9?qD)W1P)P#k^pQGt;|Xmj8{*N7@Gs&T1Vl z-cJOJyh&F`0+^?k^HgJ9= z^!hj#w$kUyGBGcl)n|FVj7a`ioS$w$5mwFmtT;d@{JqJZSH&K{+^veoOm(3n1H4J6 zt76_9t6tznS=oUbYh@2^oRu@UXp##p6nm4ErQ*W4df8XORf)5?2Ub+rPp^_fbl*Vl z4K~6m-fSzBRxitikUPNe&}=EVM`xb|w|I6%fcFLzXH_~|1vfCrNNgEor1pQ@?m*6* zc40dC{$QgEAQKZpg~mspw45dtyb zp3;Il^ZT>*a7UuDc5%O@!Tol}xMMOs+%dgA?!~S2{q+qoZz+p=4HU!M^&{;H?`M=| z)vWK*LxeENn{=oVr`-VDZ}XU!F7y)!39S+HR#-WMyVA-B+*MY7;L5Cmz?EA?gDV9M zsE!Bay)G_11`3f_^U3y1;(koPSE5Q8Vj+Z%u|%=K5g0}%B$&>jJnSoa@; z-+}I9GCdh!`i^Bl-GiYAmVxlVYne~X|40TJ-T#Y_Zty18-V+z@e=Q^K^Mo^9>ENHd z$-|K7MyvJUZnD}4?q;jK;BK=z2=1>|$H2Aqaiu59yvbg7#f7rhGP~1N{i6zwu6Su* zTs1zbVB2e1^lVpT9lY^T0S2}~oF<3+h|x5s!Cpht&q#5Yc+7)5l+1!WWKZf;Y?|iWAHR-g^!Z_v z-JYZ{8_F2@0!18+q0O^nMWA2d(Rur#c8Zt~T$MYQlpJ}sg}M{*-XFcN2; zLR}Nl($9R!%aDPCRvUQ~jKquQR6xjI5No%a+zw*-TKST~6gPQEn1~Lr^d)V9EGMc! z!*dDBvnrk=C4D!b{Z^%Op1_R+NsbUAV3Nh7((>Ho`A&G_%_W^LC6O)%EMrsyw=T!J}L4gQR!GYQ7@vWyZDkZK&FT) z(C}P>PFOX~QMdxWC#}q*+(%=4MMsGlz~qG)m1a0jo?2VjG#29vl#rPZW91gWHVN3; zLAvmzS~$Q@weVlp*KT_Tvd)iplia2u!cvM$FM^r%{73`p})?6=94~ z);Rg<6g`ap;XI1SWEuK$6&kpTog%=^gvdm3ln4m$B}eq2($;|tU#6{qa=$EGIZmGc z(nB^*PAL3*$(-(#$DDDXs6I6Boqa=FBWNiT|5%3>MmDYvN7!}6cngY{~AAUZ}Yk%V#sqEJOID$UhXZd2() zOONGV@}U*SYD;{uzP{oySA1w;oG-b6Pw{S8`S7v621m_+kPtpq=K2|mlOe$P)~X4D-T~! ztgq!(Q}~nzu&phF$^&c{Lb})lmo8ZgCVdisj#_4PGa zS6@qw(J*U@R|8ZWrp8lV;yqc{Cj2vfMO{tPSba77TnNg_>1rxGPCQ8RB?E90o^rR> z9#^5zuM5jPKg7cVJ7IYHs8@FzZpcBXFf3#oIqYj!}jS??u6t|393MK8=Nn)br8kExdy%H7Pz$ zoCfBf^`kugoFGqqTbMRMp8uA&Y68}jIxC@kg1m&DOeg;2OO{3@Zoq1#JRTh}nSQXr zmrUwM74DcIx0nTTJn#jTHhY4+HfSb1|6}yh$3#yreN3b$h^Aa$a^FCz zaKtxq;sb9GB=I3_Fx(gC_>#j1QXXdC$fp)frk8Ye5LMfrn@k7q1HD8acuiJ$1F3$( z54?9)hX-Q4%x>8ufP_E&+OA%Xhsf>eWz;VNZvVXVY-7LQoAnZw)>`SM|GCif+^NFBK5`$3 z72K5~74N;}xgW%|$ebd316e@yVhztFs1v_iY_J8j0rB{ju}|Oz7F&u55irRDwj+Gx z#8}TSeQ-_a#6RFpc>vqoZ+vNAU|S9Z=#GxfGy@c{Zkl6E|GjSF$77AEjWySu|KI zck?tHA;y~0n=f<_%Y82S(lbU-WKwL!FsxRJl3EBEKb#`FO`;0@#PX6ds4GJ!QfbCw zd2RvdlpVD}P-vpzX~B`kDoS$C`O=)&*y0km3s~zJPs3ukDIEqvff8Bs8zy3{m&P_h zNEZkh2dsc?EToGR%{H?e0ELUt9pkB|m!tj|`75i2=b)}*GCd=T>GkzecMXq$^FoGs zQ@p8#;hGZ9@T9yn9v8gJ<0i{+^kitYf)PexJXTQ7=t zN(@anz(G2UccsY9-js)t+(0+gZ zZmc;|r649J(V@v(94k|C-gb?=t zitGxR$pm^DWcC?FrFl?tJ26Gq`BEDcg(e!F&~C>nFWUuC&~C@7F587rxZR#)sDPVd ze~JwB0~5)wr`UEowh=-s{HVeulza=Yl|s5GyIBWG016l3GmNL64i3Iuv!2DX2y_sW z>FFS*??4By7$c`(if4~?P%+3~ZddjZI*6)TbdXbJBE3QgqbYKIFy#T932)DS;JQnp zkik?M&tD#00J!vWkj$mX{Xk=+xT2okYnsZ#MgS{|j zdOB$MlaC9F*%yEre%yf$GVrqP$WV&sf-z#M0i#!X7(q+@pU!i{<2HJRW}f2;u_QZ$ z+Z2m@LaDTE{&Js}6fG>Zdq~luQoF}kQy3pZ1>A@hK(iZ0@jUrup;%MQ;}RjHHk2wn z>MyUYrRbAM6e(N^9Bxu{Vj@L40$D}$VhztF$enK!CHqR8J3o8?b#ai)kug zipli!5Yu;{hZ)AGVmif}$m*e2pgcdw?;~uXjvg+mGAS-4lGajWFPicI&Z%Ng&p;S; zuc64C>Chhuluw=HM=$E_AeB+16VMnbOVu=>hmI`^!{$4``lDT2ID&3h4}W>S>+FM3 ze++$dQLBeG7&ARRe4qS5eU40Tzzjd`Ko9Y^0M~_6JZ~1GyHJvOdKmpvJ?yX6Ltz={ zVKCP>4s8mj3iATxTjKm^NtxShKU!Mm76s4{$ltISZhW&SQXE0?Lijx*upS1)B|*qg z2)Pg_cY{~~8!3{>3Y6PK_|Z=`P^3JZ>W5+qG(49eKYl=*=x5MFe|~UWG2B3-UPjdY zOp)CqsKQcU;-7vh5bL2I-#UUyI}af-ezXYK`avpsde{fR!g|;jW2&czzdMf%W%V!` z+80cwr-zun13gUSy5~`3VjS)(2F#{BqJnhWn}66>^wT-O%ggOQS!O77Bm=v%MjU(fIw8&X7g> z&cc^aUPr*Ge;b^RHYEPZ;`9jiVByDwJvPeNfYqRkIG#REy7LgsdSi4Wmg3P^7lmFS zaw5?GBkF5{iSBrBQG$u&Dp7icB74SBg_A<$`GJNWkVKHDC%B21DRNURRX7O3C;8J$ zhB}?v!dV~OdX!5eG<(_Q$-WO_P=>GiSG+mrOd7{#PeyxAB#^eRkl;~DVZV~1P- zyOupk92XPiRpP-rirkk%r8R_sAvF}f^`{@ar^w@wXe|E-xN-avaD~tP>EgE(`EDWQ zQ5_~HFIS6Vrd=@6L?k&!<5X9PVu*McSUnGu6Cp*Cem_3 z)zyz2u@ol%rpk#hLy0(mR(10uMN27OGT#NEir^<;tGg#jF<@7FO%DoK+Ag*Z8f+aq z#uk(5VT$UF#1<7a`J&d&vRIsYKIwm|{(`5u1c(WO+HY^vPmUUhcN){7>i97GVMIE@N7 z5>@@j z+IO0K>V^Li&T1W2RuI!|{m9A7sY2^%^89Irwx2`kPTu4;Lp8~F&9|kUbZ5~|n zgaG;^-;bQ1PVo$;$!%U#7spJyWa8>D9-^cy2b@(E|DH)dhBjpRU_-34CrP*}w>_NE z1G{!`cGuuMu49}rnI6uVULR+@JxQR?4J#<#Iu_?m)8wmbKNjbfJxQR?@KL2Y2S3t& zB~`d_n%phIPb+-#8bjA4G{OF%w(n*6Kx z)hMn{sfmw+$8`xruXgf-$@U1tjeNz5Y4Q>XiFEQK6XP3!ZBqP1xX*}}01f(;FN;rv zn^t?0oQm3=Q?k7upgX687csDYf1|;DV#l~+GCkZeeaE;v$zVo|#eE1ZkM;@t$o5Zz zyT(ReBZNMFY)Ymn$s{vmLW@sELfoPQbI6Z~>; zPx7yWn*$mU>FY-hm%}0{Ew`I;T^e`0%p}0!+v^!|++DPMYE&T1m>%R;$D`a#s_;)* zzGZeGt*AS92PH&PzJJU`k{dLUJ1wn_fgp+EYP&L!L3Jv)s_GJOIidvNbvqzvwI@k6 zvOO8VCk`WYWnlRNy4SWS=NWvz)#K2ge=LuBJfP2w!)KKTb`QPv=N~Y+h-D$@ z!Q9W`Tvl|hkK#fOHCBliHUyx{5PN*{KSMO_@;)Rl;Gw5dJnD2*X z13zwsxtc{BQ@s1E4Wbg{K4l@gwjVM7@m$)!K82Lbo6iw8Qrv(guV8Lo0_s&w zd6*{1Ev|&n${Sk>LTJ?un^PgQuqGc|*esB2C@Kn}>!SV1&#uFY<;I_{o;vN3ATKF_ zoE$5sJf6qNrzVHc6Q%y7O|?n1!yUM>yAJ&v<&D$@>A<PG&8^loq?tRa#Od%_J5 z)$@gXU;>|=GE^6*RmrMgV?Y(7H(?|{Z*$_R|3-n@mL8NrXmp7$=Z zz?J~8IG(;;(HoCf7^9p!6z>(rmGPJ-uk{br#r2=9B_QXP@i-hI&v73Njo+l@ytNqE~JCp~1p8V#7P}*Rw!`bU1?@(GI^M|fVis3tc!yVWc zkYf0r|Nc&^@wkxryG zKJNtQ$-?7S`Z!Kyha4;r0*okzIdfDg{PD6|n?`bGs!W-+NTr zrg^Zo4`@K3VEMDSo?91QKh@v%oN`-&9cLz_wdNjGxEHXb%)du@?3yR<%&|=R2YiHc6yyHpVLLesg8)|~_*nN~M?34!(fCmsU#jt=HU3p(QAp|<9(p>H2!>zzd++BY5ZjHG5tb~pQ7;@ji0LV z7is*(;A6f^!0(!ZkQ7%0xCoTJ@WW05%r_Tj0VhwO&+VMVtoX&S?GxvO&_AaLgF&Df zTQ4@URK7rk`EtqB8)q43 z_sP1SyRrQJfe_=}YHuoroIu{0&r?~d0HDIC5@>SbYjq122til?txg5Pvf!do;p5%e zi0k1DD-5&V7ca0}fA%()vlLT+4;CDue{v9(HKBj9J{CKH!VJ?mY{Vdlh$V)Q0RFqc zKW;aMb3>c1?KKwo;JjlTe$bTvM~%N+_sG z5dp#x3Xoz+COv*XP0pPi$m?M(23K++lMdKNlQofnh3-L_7NQ&D=PmXP%CsrZguZ_d z>wu(*`{@mR963lr5l6Y{raVUGAb}u@F0c=VD?DqJb8Rm^T(bFdBZ@x;ozppC$uZUz zZ97UpAU@Gg^PYmiQHaxWH~@1JB*5y641)`o9DLl~;5Rw&wGMo&C+oq-m3)K7{|WrA zplBjY1Q+PXxf}VcRKq}oIJ#Cpa9kV@^kaQV5eFF{-T)k*Kt1XQ*|TwWLq6Cn;5uRe z|JcX!ZGAaw0=WDDR(|k~KzNPy)*ekQ^-}Q^{dGQ&*9&sTQFz2;MlaZ?(Ey8YM+!c}g%2=T3jM!}<)B16%oEPCSb2$H-I$g{TY2`=y_ zL=b|$h{<$2lSRi4jUW%65A3&oUV(c|=IW9xdJ(d=PD%;}8cU!TLI@JZaaC()aBw}{ z3^?E`8+>f9wrKocH2zl2^KIY{g6F@2kL9x+d>in0XrAu`AIs-A@Ugsp*Zlqid|a=0 zX@38y@pprduRY*n`W%g)tMT`0{Cyff5B%Xk_p|2re(*8h1K{K9AowG|Kcor&OXDBb z_(wGUQH_5Le9SLP^ZPjXIR7U!zZDukAN;P#Fu+tx10qfVeBffKygv|S+67+?%8fkFn_oh1MS11vKEV2@AP#Ptqe6X8D${^#N!nrmtE zO)Gyr{Qg4|cD&Uy{Id-HAHaVj{CCsH5g)`kQghEXTJQ{CT)uk!4(j!L%P+Pjd8p69 zMG`o);uUg?2;%j{?JaY!GBbMS37vZVf2_R;TvNyTKRj7XVhtp&5ETew)%K!fVY3db73~5_P4GztGd0Y=(F4bjKEcS}Vzeox zYcB!bxUOHO?R>CtT`Bu8T;pHIpa?9$1u)#A^}74o4$DPppSYhyt| zB&Fc8cxaGF9o7o*l!wiQcXaw1>VT_jj*a7QROj!(H{C$b77W2a#1s~J(|yTZMc}?* z(W!@CV`SlZd^m*{w=-7(ygZXtmamM&uZ)&h7h@h#W*CbcYFp5th?XPyOGZaPnCSRO zZ_dPm@bsKn$gm+hGO zn@6|4hI`!*y0*h+aKdppbU(vgwp|;GmRD>3hWO>>TsC$83A*%{mG!(83ST?y_6{5S zV){Ziq}>!I>Y*a~rJt$+ShJUfP0P_A8;#uWG$@Fj7Q^R5N^plTJL&nnpU2#)%dq1LCZc8ybW_#sYpQ*#nNd5M_n zHqNh*n?PptD~MVQ|2)E+?;jKhmg&Kzh~#5+`w3|rYupY2S4GMLSP zk>HG+xe|N^Gx^Gh;dBt#miG`y2oDRP?xH?)P(Z%KtVmzxG{cY;?ZAp2s$uAMq74g? z>;8PxYL{m{1Yb7_ffOY{RR=8-3GDgRE&A{R zd}w%KTdQ5J;{Z?yHz%`O!U>xxl>;NSjBw-&^*!s;O}GrfaYay0EmM+0HPrGdH~1@ z$Wh#qaX8;lwF-d*jyq=$hb%M~;N#BcP!$*J@0*|>uw6;pe}nA^zi&}`;|rf=BYAU= z-T+-Ql%<)Pb*r{HRgEybX!I zDM${0Ae>v1zpTy|6>DeNyVck8FC_#kj7 z7m-h0?ms9}JHEC<;%AHF0SA$NOVpMyDV-&OCnY+?<5@yKOSt^V7eM3cHeAs%TVfs5W)5 z&9;7RclwhY{)-VYV>ow5dvjJ^N&Yk3ch4m`Ip($9;rTgueAOELueuyYT~5O{TXjQv zG4vb0K+Cx&B68-!t(d2sh~E#|_%=Q+YVCM!SKF2jPiB9Byb@D534sOB5!iZu9wh1svQ4jhPP5h zGa03e+w4e{fae5MFnV)t0uniX28J&ehNt)pdv6d`@r}Nx_T((&XH~3#?0% zGd^ijFl}df#~GI^!g!f<7z8w8kEe~i?^ysZyPDDZ`XgAq!T!$S! z8b>AxZc-3O&HEQRVL{d0sx4yISVPwI#cY_u7~8D2gl6Kw6TJ;_FS-C^#$S6q?kJ# zFq#Y%A>`W}et!ti2^E1cyENHn830&q`o67c$JaUhv)}{w1XJ^9kARohJO&&06>Gun zJ&)GwM0!l#YYrFFV*$tN8}rU!9&KH=b>?F0A{|HNptWYPh&Lb$x2gHWD@}^xi2w?3 zl|{JdB>)ay-8Dswpp*HQshGDOX9tNw+>ShExf`-XrOfpfGJaWdMjpUn7cMGytCNI_ zi00Dd)&J7Mm5Ftm;L60$KEqcg>RNmRjoDnIO7A?cvgC%FO^TJ1!c)X=;L5~&sWh7G zj62O)D5N=3l>LV45UE?jywf}XU>9^sGTs=eI=wl+b|qUr>rzDH_NAla0$*}*CdDwZ`f-<{<8>rV zSdnny$fdSOk@(^%Shs`@Rz$8zRW+)rmbXI(ODt@yIag%&bHlL&VD8-SuNB!neTm;G zBS&|*vgc$FqzIqV-Ql8pU5Zt$ks@NE$9-&9yzjcRqJ>dAdp zWXw5dRmOUuGHhh5D7SNa`(#p{&5G;d5M7+xCQ3Z-feowHN!B^yi*Xm>bOVX+H=~N# zZR?3#Id^TBk-W?3q>X+6!cm8#&dII*v7*mM`nZm9Q;FKDwUISlMiSGyq$mx8(BwAL zZ531jbVeYI=HA&YacLV}te(-|KALB46@nv9U<(Mgpm)T?AgOz0tZ3vUpSbPwRQ=~_ zQH-r1QJj6jCvj}?wg>&~9YZh9MZD+hvmW-h-yC|8zxIG+FndDa!2z=O%twb_EY>$c zygOX?D}$Awrk@e-FHnhmGGK=R{Gua)rj^|KVk2WtZj251>UCg7JNh1?g#{(^q(}Yj zt*nPoGjh!HQlGdps$)~crl>U>wNCblV=qwodB&037_5=pSdTfXk0&m7{zM&VGQWD z5?ZR?F4=rh*KbdMW5meWidIFkTo&gYHqkj)pGKWdAMBa$zs-wBRC6X9metQ2!{+Yv)yx%`4X4_!F ziRW_!&}-=W_Ywn$~E+%XS*ne1j zF+mAH(-G0!2fXIEACg1pzV>gZ3Z^^u`WgDXH>!%U$ZmV2vh zi>Wdi#_6q$xlVDSv_v1*I$u@pz4*tzD$90LC38liPkx23Y9J;XDRpmUupk8ky}_5J z`aIhEmE8hBw*z9hkm$o{@>MaA8eSw2s%d(hXeYeKTSO%Kj6s!Le|g7pxB<*RPo&JB z%V(IH%N_F)ST%4zPF#Ffk;MKfiwQTP6Hqf-8FT#c{cV?~N^(WYk)|_DkVIPS9hcHG zO3N3Jop#00?%jxLFOt-dt$!loUQ~-+aY7rRyVo5_BG83oAGj!cgFpshp$mt{frt>t z*cT(??FR>t0`m`T@_H(!tcFX5ilAchT4awEDv^@D`U!n$lLuEnQAy;!=#xY!m4sAK z>lK$0MJFLsG(z6!Btj34Y7NBNopGdj zhGR`QH~^WNI~m4`YPjN!I9A~^vKTVHiq81LzzKPL$*M2p>qW|y%i}~6>B!+TOb82U z$Wj9=iF`r&4UA>dvNhxLdZsASzk(>ae_iWGas@Z{L7myk#Q4d`TXw~*C;9ePP7@p> zaQ_PbfdWgkIKL0zmM@JHRqykO`$M5>SSwOO?@IfxJpM;Tl9w?BFw6*4s4Trj$}lYq zGq(N0w-5PO-duq>3^Ppj`s9DEP~FS*RbNWqWmmi{i*G+IgumbP?v3$Qk$ZexxrrWw zST1e0#hQDN_-G>6c(JLu%+#FfA%JLN6UNx|_;7PHyib&e?nOPFSghG>Wbf#mSDYSK z00dM!@vD&_-N>+J5lyTrt)_H@va%^o^x1izF(G+WUH1<`{)TlO9kLL{a}U-?@}4>t zYo{68M~^h$NJY8bSU?!}iSnsdyTnXc^?AIgt-?o{omXQlkYc@*w=bTX6mO`PWNnPi zA=^d??2i@ZB`j-{xYXUtjd!y!kAS#&+(oT4d7ATb!TJM7=Z}wWq?ru@p zzBX4b&xsc;j&O&k3cTE3nJWX&$BTmD9bIOnvee;gz)M0wDW(BMq}atmdEc=k7xuCt z_jYq-InbP}2Z5-B7a)UK5#~i|RwO-AU{B485X~?vGK>idy9viVDr^9UPu*Zx$bt!B zv7n!qoA2c7={7DdHdTT*vXmeLMv65LTU640jt6kd;DpJYF4~ z1+G%~ccJuRzU2^sc!&;aXdjo}waz?0S=T=1S6gQ`;CG!#;F1sBhJ~x3pM@TCg&$cc z*IbVm9c=R9q*Y1?Vf=(}RmLY4N|M^ZN6;}Lf><7|3TSxq zpoYP7Z9sJp&)Fs)S82FvipQS`%7qg$MSF`@4G}~_w8+guSz8(}il7qO(gY>DWYBJ& zehPK_5TuaOArYK zzGLQGrmD=(A?RnrDkGPYADXv)n9ncz#@6@L7sb3^Lr&aha0W4SJawmdx+!<4fE=pl zsZuyT(|wkXr`HFL&kV%xIzzl>YF-DF+Tu1)``;N=Igq!K*e|xzo0;6Sz)VW zz8vYB?^K}jz+{W0n%9iJeP;)A-?+HhT~}FR;xdbXAo8FDQHYuEVe`j!?_K#bVdjPj zR*R(}fe9%Hamgs?)e)CnwiX!l>R{+1k>>MpudYyQ+QT|BqCnN3stYGBSdyoN==u7} zdQ*Fbq|t@%51n^0B1UnxI&-%AaJEKqwq|g)GE_FrPy*h?EWgKg!*BnYz&y^swRwV7 zlbJ7vM|3wLggD<98WHH0B5U)oY56^^9}FjicWiat(m=?fzGJm!TE4DhML-Abhl5BS z8M78L2ea2-5Q70t1{z{Jj&C=PZ$FOjFpfWQ9G?vP`njq7Orh)hQ<6(RE>R3oDcp~5 z6uqu9wU;6Nv;n&kat32;-neP`{NahVFbXuyNg8l81Rd2eUdZb>`r|6m5C2-~3hQxW z1|DA}x@?W#b*3p4kwNkz-(q$yBAZyJUz*yFnx3EVaiVQZnc$;D+q~=GwN9F!V3BBR zg~^VEkU@xpC%+M%E}#s%X?i}tI`d~(@k=lBEv{`cwUCqg8`dNgZjMfbYc@=iZ@F7`+vZiT zEZ#O%WY4lOKOfQx5&N2(J4?J-)(tA3PozrCpu`j;EV(J1CsnQ-oG7||$#)FTd@9oH z3n@l02%%79p1kDCnb3d-Auz@#CN-!Spv;j3ZWgUE39$?}5{GYpWdY+fP_!EwY%+Iu z=qlyiMw`r2_+4i>NnYr*aiA~}4@9yf(C3$Y<4hVfTBdv=+*XWWTchxa_O%B_TQztI^2hSW!RmNWmTO)h`~!)-eeixI-5`2o>i*`q}Py zsSxq}O%g?~aWri4K-^aOfL?>KoKLusya&STZ8n*=J9Q9tw%cTO;dcWFBNh*#AUqd= z%r5)7&TCNZ{7kBpwfn%c7Q6^)gDPWzROt@yXr$nD#6KZa0NAg}pG#4+zZ5OJ?91_N zP(>}0DzC3_$UFl;zL;(QUIB}T?oDKUj$r0G>kaN35+iDCb&F<>-Y&#?OH^{x-&d++ z!u*Dul&AKCnLsJh!uqZFuaIJPL_$Ha#;6}78fQHjFzkuvy??~x?gR12vt~i<7heRx z;HuU3%f4_pE! zIB&YL)<03?ROQP#WihSFH(vl=t=@^EVc>$viW|^lw9@2L{FBNSuvlj#3pXaFeAdtF zh6(&$6_6-e3c-i9fE+CYVj#ooI?dDo+3wE*o&ME?Q3GUvb_~RAFhKSZVNiWUs)y$G zQHx*L+K0F}6Jm&1e091K&$E6x1J5vMc5Eru&9g#v)-2-@FDF(7fCQL+h-cDNH6Yca z<76f+Dh~(-RkyosT}8F6`MKdnWRDCs4tB`2?{}4&PgpV3A#)La*O>$^s^`w2P?FVi z#btm}AfR-|my=^L?T&B$0`QV=OcZIWeB+$py`%xvyM5lG+F3DO*|)zWi)>L%dEU6y zQYH@GsdzOc=_01;6$ zXZ2s9`mcWNl6TLX$)&QX=Bv&X@XhOO^Zo)xJ*CD2{0Jiyq0^n+;4Ut3>DR6*&2>^% zWkX#y6G-U0lh^6`K$a0kVmb(@+xxZ-nFskgKFzmx$SlL}Is<(mZ9C(h6Yc}aIvD<^ z6GaX$d^tPXRn84=+uKz;Yn+tKs^`9(@OIU`Y9QMr1^T{yAW^;V;S)8YoPJ{e0+tqn zbU-{_FMP-JbF=?Bw>05Pe+R2z>GIRSkF0)VRNV%Ke?d%6yFnjFd=|CcDWLj5+F%RZ z2P&t!ujpJm-3Lnjo$3QU{)zy9=mW*jeIR7jyAPC0b%Sodz}=v6^WE&vl$GLc(9BQ= ztG}US2Hha?emHc4RwfT1rkN}66c}`a{_ZD#=A;`-{|33#SHnqn=xRtpHOxN~pxNw_C;G|&R~gr+#|FBR-iLQg2^aHc2&91VLy=OJ^rC)8L~kdV;Q z-4km33N`9P1bRX{k7tO|)~%v?LJc_?qVwzVyUtKOA@R2nxF@7(Wo2br*tgXdB+O~E zWjzwiXtQ!g8Yi3aPWn!^_MXME$VG{U16({6EH$6>v>+j+%{KE# zC`w}p5d{M~JpUC)$-g`!!YI90l_7?()E!5|XJ9$kbTI0w6GekNeDnKtsd8U(;Te@X zL&-eV;+tRpMzs@@g-X>O|CsOE{Ki)q=X|^xc9w)_6Gi3_1Gh`n|8;4?(g=sleHK@F z*$}oIB7fcD%eiLJ+~PY11v328JC~!{2KSpYs9CS+=I7c9ilH-EL3Jj@6_6Y?$@%Cj zo^2DV?FzjfFwk+MWL6uXqjP+2rftXI?}4SSP-rbmEx~ zU)_qTe@>jRdL~N!-8nh3m@SK4pG)YrHVikyJJ^OBxxWN$M1`l&#^D-wFpNsk#HLmAcdz&9(f z5#&aFN%Ku)vAV{>z9|HH20V`r-?$Z!6X+R)*1|akXn7>E=<?2rEKBvpIQs{teeo@M{#y8yEBTlE63Td z>Z*ii(&9Kf-)}OCvlQd(iCHYnw=h5x^DP`~%(n>Ij-+h@?0?5MOpEC-O&`ADX#4OD zr|@6#?TZ5rnH6Ju@$Cjz!FfdSZM;iL=_ellCEr~2d^@M(TayLBc1g+2bywC&_K3LEpJMS~4ybEUE(VU7sBB#j;aK(m4 z0Q<%N=lz`8H`IR4sz@|qq9WgIUJAqWGbP!@Aj|iNrcPAEEtr?$+*L3i+-tAz5uI^R zlCrQJA#(km!&eZQ>baByVpDAm>#c3j(&}}gdp2*b!U9c2opb*ifB(VLcJ-GDnXxhjYe+0=`9a~jb#+Qq&{Cyb z_=V3>rN8h~-=#_rA{U+pUKXe96YV;z;22phI;?;rzf5CEaM=Vd2Ue%pu3oBKxPPC> zF}863KKRC1D`eKe&$7dc{F2ovjM?KB_}X9GxK!Dix=%!`U7g~y4Bq$c6W#qmF-CI5 zg-$mPaV$+^7pwNAAg<-e*m8K0BT~q0RqYdfepnHAXmyISOX1$tDe#dk$I>5M(jdcr zOOQEb0wdJv-X&CG{N#HWwx@!cwWD|o-EFZ$|5zQ!ezUDTx z4pPC?nccw=<4f}o9blw>H81|oAI?`R@zx$jL8>pMGuow=ZG~-1 zxTWMVn4=A`|t@k9~rlfrqIwoL*z?z zzz5Dwl6J=c_O3X^wu3&R;f6(*^v6XfCm9rdjOFcEg+6}}4vId%r|73dY)Sv0ZbM?- zgt+LHeTp7pzpr=EiEE4F)b@RfzK<$;h(XcGLDz#8_boa;c~WPtL(%soJ%z-&38|uM z`xL$0w@=ZRCMvd7`1UTkKUH*@)S&1SEH7;DTl5t@MXwRD{rmsa0Eu-IT8(T*bKXGS zK;HuUv_oND(7hSBeuSkR8VD~E?2N?lqztL5&WXEJT2&N`2>ApSvCdoc{q03@bcYlNxQh32JN-VBvTDp*so*HS7#(Pz%sjXrXOzx}aucWgXnN9>SD*j;c?c=e23 z>_MR{d)cBm^2T0JLgM$jQx&pX`~TDlSj?~-vPr?4VM(OtAK{l~|EqWAXH%I^SOt-H zXMWtQnzOpEG3XQ_^B(%l$IgmDvn^+T51FS44WtXUYK=SO4quUt+*+FwEE>5LF&Dg? zz`A~}DB&^VGkqLl(qqmKkfh^#QIqTK9N%NGhdlO*J0F@XN@P`cODbYW4sb07=<*;2 zH8@e=nF*;ra=v!2C>=gRSUELJlw|C!lnV7hqBEU|!$}uQL8OOVUt0~Wl*F7j-?AII zq>)BUhph{D0CtCy*0tjX&YA5P$`4rFPYg4}Ja*^eieXo74uc+;FUJG0jgq=Syr z4rOSEEG-)bPo^jDMbXUXMNB>tgSWm^yub_ApH8t}=E(~L1kTtDfWNag1CYA?7}0*r zz5N(a;?0K7llw`OGm-lRYnYmgdXl{LMe=2sb2t&R@EERClw^Hxjy_y5One^t0$fk@ zsRUZFf8^*WavzFw z*6{@a9~j5%;5Z8_|O4qpO)mElVeaW}bNRr1zb$uOVKV><4PIjSr;J$r=9uhR*VgmSZZTrsaHIw<*XCHm zUmcV{R$s)_aRm{U#y_J&a!>{GK|Z%f!5ub?Q+cvm;D&?@V5ATDZS}V(eL%(pc8emTS-}7nLK>JolwqIo9`=Xy zuk{maR|(n9PX@e$H!&t^xf@IF76U>;3pH^Kjw-klBpYVi9UpDyk4Dpm^KBT!j3IE^ z$4*qms@&>2Ml(M8cwtifI85ZtOK-RnqzMZ)TUhPIT|aONJgZnv)m{acf^Ry%x)Y>7 zqxD-DC*ZN!NRW@-`A)(Gkm`Cvd1QfOMk@~I| zH`o#=h>GBwwmx@*fC>yjkrTLQ)yKSj{IC!XszKU2G8jLIneIX@5;Cie)F#a3TY}A+ z?s^sE1mDbEHtT%wO~#td!Din-y!Y%*5Oc3o4K(d{z1(=(VLBQ(+miQzHnbMz z0_u-g!N=ihD#xQvbJ0pz_z;+(^!htNv2gs$RGc{(y9E(=MshAwb2ztkt0US3xu+Y1L}Ww5kI9GsF;-1E{0Q@eT&2P7&&$vQ+T$7MMI8!#?xQU?&$yQNKM|EXM|1kMR;xz!@Ks#i>Xe(o;4O*>UgsgFvfM) z;vIDt`}L~3I1m^^-u$!f;!MXuDoj~I(9M8cO5z~U|F!OZ+^g;)UEL*3nT4MRn_Z~z ziVq69$?#?e!n4vd*lbgUSAloX&7Di2?y966Ky#x4>Mm)bqk+1s8H?*K@$~5t*4yf? zyVso{;vaQaDuCKe85vZ!)={jXmryGuiFja%U|^}8y?kk~843e7b{qfIcY>$^B9{GK z02#J-gWbCh*sy(GP$GXEWDk4ysuVb!A-K)H~`TtIS zwOD>hTae$a1NYGKo6cuA{CU=R`HLel`_Dd0myAjVrM88Hr|Q9rsafFFEx&sKA1uG4 z-XXu(ub2GdKwu1U{ipomOebRbB_;;n40!Utkzbxpe%(dP%re7m zkAJY)2uRcj+MYa+-~CcG&}^v!`E@td(dgwDO@DD@@Z01!z2Htz^#6zazGsEyR|qV^ zx>6^m~TSr#Lh?1->PXhGrfbtE87N?4n})9x;jC@e}GN*mv*W6#It;i^!<{NWAw! zNU(m(H%VTHL7?v#HjxmVEPCITtvz!#VJ(D%t#Z%BQR6XJ*ziweaf!t*Ca|vY5r5RS z*|SDbWl!l{_L;YbWwxAzJ7b~j>#BxjjyR>eKNiYPn6OCE%;%F7$Um-c*=3*K*>fdt zT790SV;P)CS4IlC(ey`C0zV!nMu3j*Pi*H zhGe7kk2gIztl#n`lX*;5;GGx5zIA`$O*}i-f947)z)~GdieB0Wg`xTinkp9Y>+LppU?Y_eDzr?T8j=7Vn_gxR zZgjCM><2us{T*$mf}Llwn6VgY5y-~61B$fkesJa);B)JsBCQ#}>pCFljxpNfR=Ly7 z3_Tnu5k^BKV)&51kMvO}eR3bA=`MFb`V1$IUF@p$B~5wb#vzc6SIZ z?~j_$$kSXQktSW9;+DpH0Vk})moV6}u>$u;9%H}Xh)6Q`O9n%>jJY+m{A@TY_jqy0WkVtuz=wqGTQ0s93IBtAdNvf*lXvp2AqBlB^%!4!To%Ia1|ndewJzM_TlUyqwb9r zWJ^&9c$kNm+kRpZgh=b~^4C{b)&j>S4>%oy>0diih9Vl1JS~DoP30o~$kQf5@yYi) z%7M#q1JJjy1D9eG8Uy^ zaVpDt5GCF2BH+1>idZ9W-<6g3c*aw8~I72S{rH5tLi*<0T0yG=Zyg#NLvi;znYb zB#23vAS~HH(aQNuC)uFjP;%?=xoNyJY;>v{k*J86pD095aXy0*3e#;=Qy~FdLT$7N ztsCAwGa%eZ{M~jW=J+;Up&@%ZBbk%2LDv%E-*=egba$`nAmlHA6Q#m$ibgT;ma7jI z;)rxDS@tq?n)~z_jJ=@#W&K`1)nzmRUt{8qe-$;d13H4?HxM1LJoD;p9sl%Y)j@Sb zjb~HCL&8?DU3_}H^QoL?>fh?8212~zbG?3QHVlhGsSh!Q?nsekOkRr^Rqey^AV^|t z^cFAA+K_B37hoWwl4f8Aj2ob;KU=SW*0_SwKsy( z29^gkTM!y+{Q2Dh7Hm0Y$>`id%@}CB0i6bUfPOIqWS5MBZ}@Q`{y8wk1$gkmgzu=v z3=LxH#vfTABkx1VpTO?jujqB2EcRyE-ui~>C})9E#^Eq0AsVQYuug13GSr_?yd~gy zg0*;4z9=aUE)GW(X#x4+eyNlnOc`kALG{N4q{|3_Y18NIKw{_lCu%?m8|WH87hmnw zW?Gjx##|R7e(>o>RLi3y6bGgTa0mkN)B*V^J{H4t$A`d)26J7A-%1>PkJy)-ewJWA z&L{((+Nm}C^c780Yl^c41FWOPP#XA_=0{6X>X&-&n#gZXU_RU@(XlaKG&n7Q<8CuF zEkIcrPoE^gW}zEGc_PI3Ai;jplp6lWE)saoFL7jLnJg%A)NgZ1S8vD{$-8&_$nMo9 z*ps~eaFYohoBu-N|LeQ)$KJj0$Ked|XPJEr>*5CZlOg$V^95#(_kn=?AN2S$#R!mx zf@01Ynt%Vn`CSJg+*!E|F~l<7T?gVTo_`Hs6PhpbIuOA5-SRVdW><^+>Voq{Lk1+>$|?HjwqwjKN={!G%4r%Ti{&)%R&P07A?@M!~Z(r9dP*uSqG;e=3VEUz3&~_(+1j@9Ga4 z>yz)s8k6?+2?zb|# zK;!^1msk#mXZ99zzq$hjqVmT9aV?>#{c9VOa?SnJKx0X4p8k67Q$e%UN~WTL!A1^(@M|vtd>HY2YVIS4-S3^uslf17x z`tElqK~H~xC;tR}uFbgHhXOdJ-5*oCAO5(8FM)Glgjgq>0UUAe&w|~%&(jNkOx6p3 zOmB#PA2|j5mmUt_R9Rx(`Qz%;fVF!3{|ntYh1Q+;VvZ?BYBT1glzdU-;efcqt5c(b zd517Is(jHza7hFg#c;pqbJ7l=*?$;xr^YOrq5<8xsz-OCEQh!1PPF%MU)?DMe9l36 zv3(wFmS8bMQUE23n(@VM&y22>p441K$sW%Pdj-6MAz&_|gQYdw_1GyKg~gLp7lXh) z*br#Qo2DrX{tSC*sVb9eiZX2k7o>~NEwC6?Ul!ld-o!wS@M4pgBkgD;>Yc)w^0A29 zsP0GD2&Ofa`E{S@B`(Z3=tQ`{&R}&i*SPJ8eip`bm3n~%KCWd#?T-SDyZIT^^w2Uo zqAj5#-5A4`4vQ`!)(Lz9}`!!Kgqit(dL*MKLJICs!kkq za_K&V&-oDKcVs1O3sy_XzZV?r{tA;Miz3?as$I4MAmBE`@{@zW6LSB6yLB)i1S{o@ zxAbXhavNK#_Lfey=mqIiLa}~?MMOqH>ddtDgRL_jbemXf=m*$zV48McX$${E@ zP!ND{;-7LL?P|)M*TfFD%qo)$ulhO&u1iCz7g*eFDdReHfgGqi%G?|hOQmyOqHvG{ z(i(AF)cxcRg1a4M1^1>0GK5$2CU!N6R_9`=m!Xv>Ujqk+$!+0Wl{qgLSiI~g^Mi9$ zZaGi&!jetpDM)}M5P!WTO46P2dKt>%2)_AXWBpkG_HHwTX2Cl)u(x_=m4a%&r2TZ> z4AkqIP#hBO#(cdvg`zqRJue(77@Q*f(idgdr>)qxNf3h?o*F@@gJkDHx zcO&O=OLyNOn*2}uVZ_<;@TIzOX4Yl&0NT8t4BNc)ye%c^PHZ^s>n`dUVbLj9La)To zWS5C~Bxr|e5TEH|Er(d~9_0<)ykav{u%$!;F&P>njpIzfmV-(d!;_Bja7gN>l(!rP z@Gp=f6sg0~kRDD-bKo%@VV-k7z?DDc93wrM(nT1(ja;(ffPJk13ucdz|L82#KsDL~ zQz(*>dq(K|5XuwgT2<4~j+WG@$ZoXhK+}w((GVoghIttxz<52X{ekizA&XTE|8tM| zoh~#bZB?!ovd1w{R2oduC2R~~$!viCVBqH?W1?odpG>05Bu$TiIbxze;?=>7jXX7P z1ls%o;(4d1j5JR9E)Orgb45U(Il{I6VmlQ4y4{ko4{^OAoV_u zD6%_@csqOCc8%UgD%1N&wzD0#6JKt*o zN#D-S-mcO6l)Ji1hVMp))=SQ@QO9H}SPy4d+=MPP0>H4zw`{TasANqPN zhq=S*vwvxP*(lTO(5?3&ZUV=@xCO}@yc9A!CUMVr(epvrO=o63I{OzAiV-8F{zJo_ ztLzFd>7|zc~=1i!o0fyc5gZFb(b?H>m~S@{vC1-cPdIYd2*~NIZyT4+pu<# zzAWnhRL+UOEv22hvdp2zY-jay4r4a*_>sTT6_lLc!6hKzAMswniBXFb8cNP@zA%vU z*fU3Ta{lxT$T^FpJJt(MDJJ0MaOt2cf$uoZ|T&rFFNt_p! zc39nO)~)Ux0Oik?;lz^sQ0x62_TzT+UEQlO(V|LdWORlz#0?3p=WHktA@%^g1qcky zJ!loyfcs}1OD4mo6z>P823#@o!!9TrUVx73e`7w~r1@0&4?gu`3-%_qA1R>(_8~N# zI9y*o8MO9|tilZyB6R}pXOu4w;>=i-hN;0s6ANN=BGoNwI(K;Xna@TZ$#24R#llPF z&&6A9a2#0bU=0{${W3LX|3CyQsTcJl3~@P&yy2M^1s|2gOKPTaO zhWT}y=2z9b`GviE@e7ADFKw8Q-x?0S;}*>+Tay529@#VS_OLrJ>u;^=;Qao^w-(6o_T6; zoek-j$fh(Jv2szG!8N0%k9W#&?u43WKfi506z%c~ddqxhHI29C-FRc~UU=hh@5Fme zNQKCO!aHz9kn3;%BfJ@aH@-s9$w=eCEQBPaD}v%u0q?RoiI7CawmtA%6I>y>?G?lc zUzE1<9^idf8upT`@$@SU#dw$T7FbPR0eDyN7FvC}LWg&Ae?8vl$ho)SO%Ta%#T%V& zd@J6}6)WC`cMXmAgLmVNy?fz}!@U#l2U{vc3n{!kyn{H8{zrIY`PShrpU9MjRfvXr z2jyP_yekUxA&Hy3Vt78-Tp{`s_;6xTT0lMEt(9JSncm>(*8%jS$O_&fs}bIS_f6h% zD~b0%@MeFR^H#jclDFb5%zFKHyr+4;4e!S^-nH+>8+-S{8;9$S_d0|1G|(shkrkpq z3h&7)gE%9XbnE~BQlErur}PPyZ=F8TPGlBC5^ubNT#X>|zvr-*q}}TRB|T}T^XGmj z6`1^ZQJP1)r{5|d%a96QN}J$i;>w^no@^3RPtV-5T^D4B1{T~5CaJ|SzrJ;nnoO!N zn4~5G%=_aO2@(8bQ|n%d>w^Cg?mc?ke-g6}lBfWt&Va~o&zZC&&1c@{e(FgV;fVsl z-E2u(soUp%g+OLGUGPe}aCe2M1LICkV(RIcC${T?VB9r5xXZ)`-i~|K?ziF|74ml6 z{TI9y_j($4?YnWu-o0?g;ogb+tbG-t(-iKv6+y1?|0CRc^tpBtQw~WSgUB~Q~lZ&$-Cf*JivY7lC%uZ&;2^~g1k=`v`7nq{%-}A_sL8>J+pkfE=V8T5qavZ zxbqe!zZG{>{Z`z??p|-j{Uwci)4OrU-o0?g;ogb+rIZR$C58JLWl-Fu{}Jvzdfk6A zQv*rtQU-C3K;+fiegNE8gS=1P1y5wF4025X+4UqBEPFfd>iuuUow4Bf+w_cB_Em4(*XZ<23*a{%v`{P9cntiSw%cgCowhq@ z`weY(f(>&`=oM`@)9zigjbI)V$H$;;CT+85n@!vOXq!XZT-xS=jmPHwY5P5}u^B-B z=7WvnH==E0um^jB0~Q7_OnU6jM=Tr#4vvH9?|H-d#(9RzCoSgH_rv4V^)SxH*~3}G z*}z%ozFLh3M_J>fa57BvGX*8HYzx5{6d%kaOa9^DvbUi6B~dMV}|j<*kD}D{YOPp(QE`y%m57jib*Zs zQjUS(h`EG0q#JJ!0K0pjC&7+=%mRbozV!RIV1Ez)f6%{UObQvi0t!q5p6B_<;#Dv& z0*|YSMQ_ZaAMcLWQ4-?XGBJYuL7LF7Cd8Dp?nxNe${E-Z@%D*%(Q*`_h~0s8bOVm#$Y^A|_KT{3J3yE?lm= zGDrp^q>+r;C-q6;ZPN~Y-)VereeA(bW9Ly%>xJL8O=D-7B(zO)=-ya7r?{-zQf{!} zh`2ZqC3hO99KPUkgi19Fo@=OZYav|sxjHHmhl4iz!M*;F8GlFSrGXDEBW8up8RKEj ztSPkcF#mq`p7@o69$I!^w26pa;{-;jj$)j7Q<$_80*H8gCIo)sS%ZOKWBDFL+k?Tz z@;rpLhtl>i+BTtWQ`#2M_Hf!BLE9r~+l;o&Y1@Lf#k6fn+oNdPind47_WQIwhPKDj z_Bh)9fVMxR?SIj>HEoZl?FqDP1NQDsFquV(6s`rjI~w7xXbb@^J_A|SO-Y2ERET4O zgW(_y1n1DcPq_`oN#kUhD1X2bSP%gb4+7c8CB~)YY=yh@a9~rMC!8M!;^yBNMiFiT zLJSp#iGjZL{Ir~M4hCn8Fh-Yw_@A1=jgJs*2smR#U?wn7_GG0ARbAVlwqw3A(b2^t zb}>O>Iqze9F}4^-jG;$OLK-0;rIq5l<-UF&KS}JVqHK%s?aeJ~~9v55h=e zl>6uhEHDf-gN)QrSqp`%VHv>u7lXXueNwotcdzT%z`+VGY5Z{%2TY8RIf?=ERWRLNlN$IGQZn4A zDRq-Qg>2_cd2(s}{He7g)8P3M@}It<1xh5NPl1#Vzn2$P; zFe$wy0eS0vcFy6TRk{i578W1{-XNyBe=LtNCKnl6-6S>Cnim4Xvw5w?(GH2x%GB@? z!~Lqk6&oIN2DM`!#6nCt=$_PTr$zwu1b)Xmd*^HnyX=6XbB4li;w&S%)cDhmLGUhv ze^k2#5g)WqsvXH7S8+dxz!{C6OEq03klg@{15rmM(qCGU8`$cxr7 z*LRBG*=bW$XbDI13VCR*8=3(w`y@q`?-$!Sn*9XNIw1CfOK9+&J;rdq3yjxlapbTG z34iFJ29jJ5C5!B9f&8|_8j=_KoP=SxM1TpU=nRlrfo;so&q** z6QKr>Q`TO}B1^Q$29hI9ePfj*f|ZSAW?;X|piUBsfPgGuI?i z4&mT{v)bpzSsXh9efefd5=C_fxQz?OK+og#0C@uW!z}n&{_&V)*3p%do288xiVPSy34BVREWZMBrtgBeC(3^sl$y@eCqZwN8!tw!~5)iNusn1?!>_j-F4xzilWYghuqSBtJbTN3U-@ahy25K9{KDB>P;Vj&sNCeTh2G08V^rHSZUSxe>r3oO+*I)p0?< z;2xSG524uq*31B(Py6_8rhoTYe==v4dnrWOJMdb-@kLAG9G2;Mh!#>j#EjBaXZi^d z>39f5((%x1(rtT+fv9y6<6KOs@%1-)-LP#lDm?y|-6}H%=^y``(hXEjI;SHw;|I@u z3^hm(f|n`Kw!ZMcL-C%XDC8pc%@2#Hb;{+xSR1ZW63=+@je8Z#A?wQ)E#drTwHTf^ zA+qvs;VJ6AL2mSyM~?9&20Qb}XFT=#y^4j)6(SK8ZWt6fABP)I0O7iK*v(yu!|5jW zu`c-tSb$~gW3YR#mqpqX!T1FlsXF+_WW5$mjP!|DS-F}ar`h#GyO>Q#s_@KA+tU_;YqYdbOh`JN%57QnPo>%#5&g%wyYlkNEauk=mS zdf6LX0?NR;u-eT-A)m%1fK{D(R;jkYd8=7=rzuu_6^Ye2Z8m%YIpdiUk z20(GRe~%xL!bf3aJvrwwe(1$Vdl`A3>hTl)r})WJJxX=DE`-{*93{aiVnd$cqR`zR zvZ^WNBcm3kF*8W`BJjdTdvoilbu95*ikNx`cL2Ez*0CJt|J>^BlPGW|kbv`{iXs0QQk79hRash~5cCuXL%I_HJKea854(kA z{p`{FiSV1pltZ2#!1XD0l1>rTBGc5Qam_&n!7#nX((NX~&Wv&Vg%TF>gj5MJg5JqY zCnU?A4}>y(Vew|6PLa%%zWaF|$OcQ`PkpBY`#3+I?)6>h0yxkOzM0(Q(|eg{K9 zcsSc?NMh?G$i`)>?vpXF9~iN`q1A8QhJr|M-lr3JOJAiwZ}nR>ty9#r15Q*@PwPzi zeEKEF&J;PEnZ>Mi>=b93?eG6R7+57*QnM~;$g|Wg-PSeMrFE&vCAoAVDMTfNQ0a=&|9Q?#(@godefRr2 zuR7<<=UhIY_wzjGIrnqaf5iw~A^0m_)l2ZQXXR$!FO$gN>z03HR%WI9G#HEfo&>vE zw+Z$=)ay3ky=uV$zO2Q$S5ivi_{RFAqE8dv5F;+HmpG68jMwokR-Y2CXhu!2AX4~x z!$>xqtrXK=_T^x+V(8v$dsX&NdSeMlGnG~xB{tPdxZn2n8opQkp5ie>?rja$TtJTg z2sy!0MBpwc+(Z3e8-Pf>Mr|cGhYmIvbGmmuEkE1amePH3Gu`LRagDw-OGfuJ7uV=Y z^n;PpeMDq|BYaIp8@d}V{UFKjRXuN}hVw{`xiwyr50Zk}pZQyN0$C@_`OJ4RU+jc* zFB;3f?ev-d&Cc~{8=l9dR%w9ETKGYd?);e^<6R7d^vdNNd`<~Dcqk>L;gS!M+jHcE zyrD!$bK(V`Gd7Y4$Dv-b11zW&?ZH*m>neH)gS%d-xJLETU!a#T9m*wYgJ!+1G{640 z7TNuS5BDDGCF!wSFSn^Xq7i|MSRKG^2P+1vV8!&xSXI}FGk|sG zFdy!HkV-Zw1gw6>%~+8%*mZzERrCMdW5dj9*<%wjtBaR8d(oxae6L|X5l;YD-Q)tW zeJ|eT_kkxF;IA=~ggBc^AVs#iW%I7M5a9}LJh^MR9X{@&9Y=2ar4w4P>~aWYKPwb&WU zXSrqQd*uoa<%T}L7CS${TXN5>fKTk#dP{z+A%5Nx*eXz`5d|K9*8={^UaPr<{pa;s zomK#8S9?p?;$CD|`JGPjv$X4bt@e1fp|@UrrQ0I6> z2EYAzOn%Aqo?LEHkX(lcQKi6w@ z1bnP)Irw5lB`3VcA(yVjrq)3vH+B#Tz|Bc7mOjyX_nXPWId)clrAn1bAkd>G**UQSgW-wuNKs2`m0*ojmUCq`kMHon$Y;7qH2&1E*{$K}`V&e$%|I zZ=C6aJfJXs6d0r}q*56CjRwc2aIG<#iSUo@|CiU08&pS+)gosmP1ATmY5w_6_wMDV z!!QhW71L2&#W>bEpN3BXlR1WD;QBKanvaOwsgpU02&~|>NXL1yPbOk;@%Maik**8C zMY=AOhc5yb>FN$H($xdpcIb-1Y}GZ|nDX}iF~3r3;ao7jx)q`Et@uWkDqZoTz_dqK zOBw@&99&hpGCVEfKVh228>Fjn*q!c|SGUl0V@K&)q#kfVSH{$I8C_4S(DnSrojMOe zmi>!iw-k?lOm7$tN+tFa=ShkzaKJ}l*t4OKLg%_h(Z0oXT3>%O3$5#h`;OPpqA!as zu&l;~QZTKNowr9{8>cLokKF`+BxmOTdBRvwR;Kl4lK<;6txX@zIH!^`VH9qxY!ptc zadjUr;LPlaZp+!1ct7rN`es&*p9k@>WQ%k2_`WrMT(_Xu;Ks?WL9tt%=1EA+DX?W1 zyr3K`29m4ll4~rhtCV+K;2j17mt_CQ7aaR+sdq^axau7~yt+S#0kbG5cKB>~1vLz1 zBhy?Lfv4Ggu`beBi6aJN(a4sq!iz?dCXI?|^CY)(^7x(9zUkq zFJfp=Z0F1xL%VsBdWfUXG-}W|u)U6WO5K~c*9qd1zqoSYSx%nv$_0IG2mFMlZUVIh zcaL0rxcPgk(BIxZvZePYvxRBNnTHZj7<;@a(}DvMkaj<|Pdg0$2ijc(_B2x3MFz!I zF8sH&o2dnFiprIpkM}J@^rLb~Q-7&%P^|a7d6EhFd3>GiMR|FAsXIIY4oUCl@z2-z zeK$GpN>EU2xB2rVVMJ{Jjk5>7<~(ax^D2(u&mX@yyP6I8Dy`z+4vSIVM^L6-wCsfO zph0|D6#yRxCiN)P;&{%BLh7Nyle(>q4Yulxs}mO}_v&ud!s)|1X+0b3^^it+-h_>QM znbx4Gi@}bmGaFxeDYG6PGHW)iIRTfoL7xa^U|Aa(*znly0xdsfpq??f9T{M1IMwI! z_`2Is={cACS>Fdh2o{QyfZG39`O4NA3hYZU`fj-lsDTXZ&Luquknpv!^Gn<$6M#te z+Y6HN_+%B(>9L#SD!lj8Tfgs|^Fp_*jqUc_4P<~ffW`qCV3Jy7fb^~Vk_-?j4k@CYYeLOPmFqBShl&b&g_p*mooF$0|_U{>Yx?v(+-2% zr`_aaU^k^*Pf!M(g8n7#{D;Gf#Ird1(i@=~QG^`^ey{ChPq|;(yS1@18r>w>GcJE} zlMq+nP#zGp&P^gr&f633s(k^T)ByR|zT0JSU@c}fcdla6<@ds}FRaC6gw<=6*J8r{ zsIl+~o&XqKFL1FAUI{Mtx8?gLpPqJ1n73TE_sjOIW5TcK2g5+S_#CHb#^oBzAmYDW z+NxbF4YaCB_1U@Ojvzi)?4QSRi}W{N*3CiBMJ;#INUIta$yLiOb=CGae_E5+Xc+`6 zwI_8JHdzKu*KyG6tCp+&?Es!y?savmnr`FmgV^z-$cAlqI|<#ipLEKV+`g)lURHcQ z{-f#k?LUzBYbu5wYT2>J@`T)VCr|CgtTtcvm4jl(9wYcG{v+x7?f(Cei+%h3=Wrxv z$}4uoarFx!uZ`b_UWPt61GUC39=D{#$vy~523!0lf`j|iiJ;>9Ll#o?M6e-YmQH7J z5*+6@_>jd5&BNLcApPP6**5k;i+Vcf1(?IJN1;nYUN20J{|Lik)?+41sD?oyW!|xb zrRzU3`_%9t6QsG1oc6w|G@tpmW5U`MGMcYD@0bvWe$0Tv!tZKH} z?Kpc)|4^=YcV4JlFNb@-LT#1|Z8uQmRWT`#Ud`jmi@QA;0(0k9# zRUb0o0XO&hMXQ<_o7&V%&9`+ZsQd7%NqBXWjecX8 zNMqQ59$=3czz-8`tS#i-wKEM@8DsfzD&b!?2>aPfGq``uxI}|j{bI&F)i|gV@Ag9D zU^X1tldsN~b(jcjv_7C#0kI4_AB`?>6Vl2GCFooJw3T8%&7y(yaV0 zW?a0%1F(}JrvGJwt9!jPS+6_Ad1-E;vvD$Au?qO2+D>6#^ms`1tPbc|3|7$0t__e4UZvqF(JFyKx(3!Y}vYW+RqGSM?fn-N}x_mLuB z?B|?LgEo?^lIyQWmNgvESvHlxF333xF?X7iNSn-9heU;zVAQeUa_vsY4Rtam#UL!M zyAE?mEwMU!+?vJ%QHxUy)S|o3OEDPnaK4Ko4`!P-c>;M18z2zQxRG4QgJYsC2k_R5 z($j!Rl_ufVW0oyd$hP=Bi+Sy-8GKMp&2aFZPtoIm6$iu0JvH|f52h22zbHnkr<;>yXKeIG z>>%Q#D?P6xJ*XL|M|3WnHBb{WFpBu_K(^P0?^_btTM)r^cq;?t$o{O2{wBH?EC85@ zeU3G9cP+TT!v6$Wj=*1)F(M3x6V%Rjl6A~BsmoHb$nEJBFQ{aM1E(-kFvtt!TeHF6 z%KfzF=eQ4`MQ)gF9BGn`zUdCkVA~4O#^guMa>Evo4owy)?E_dbQe__itdkCL=~Cgq zE`V3eSs~Kc2bnwG*!hSz&T&c%_yf<`=obQ&);;1qEglsfw${9&CjR-TaN&6y{eHx; zv%>(F6{0~x$IgxeyjO@`;y!={!^z*xZ8z4Ka|R>4o-zncX$7u8S~@CRsoqx9Rc{Io zd})CIiF?FTS|A|b%exN9io9AccNuWo;S~n6$fN2N^^`F`0k1G+D_&uyVE#3)8ZO%C zJ5yf$to*2i6-G;QRWkBJYxugjJF0~`I_ zlvjVR5>3`B{J$wz$SZldn#EoQuUNNAwDB15$K^&G@XBS%e(+Dvx6$vhN~E#jF|VJy zNx0gt=C-v(5|i-!hsZ0J&dUa@Uj@8!>AZZvj#XdamCc1O@rvjy{W7mcy!{fd;C|;X z@oEc@6?yfG+>Hdc9bRE@D_&vBR=mPY!E~HgD^%;N{7M`BB+9FTK#@ko{{gQq?!cql z`pJ1EbYfS-D-r`mlSdWu#<@-zQpgK&-Sk5tZ{;nMa555}cPZpOyYJEw*cc9z6hc4$(Cgb?88iMpRqgAhW-U_SUD>6Cl<$)=`Y1zOUv0Nq%TM6)EHyseuFSFIYnDzR#G*#c4|-(9>r$;D({TDp6BbO%46{ocj)Uj&ro)(E(QGrKpPozN1~7q;;e1Pp@Ie+oYA5MY>l3k|F=p#ROG)@;R%Lk#6O)BTOF=y1I6>-L14W(KJO`}8aZ_{lW zz3}FGJjV@etxp@J{WPGD#=v@pIhPA9B@K01aQxte`Yb+vK)gh|w$aBUUtMt+E0fc` z==}Q3L*;SCryEK)4{aI^o6Ub{8jYLH<+?Y%eZFFFE50sj#n*2deYpFPuOzl9W=841 z8%ei#aXrHOD*JeQm_e|9Ph z7C14SIw=vH-7vQnW!kH#Z*Ow7HVWe6WFQ;qct}piKij7x2CL8!)2Y%?S)U;tbKm)J zQ;?2K#;2IAGgRdMU(j*AjE+J$c>O{azZNowY^}UIdzD*ACST0re^c(mO&iby?CS%1 zgDnQm<^K&7f9I2S`cn-5X073)l4aWRgx%P@UG{U?1&~$ua-X!cPcgyXH?Dq)N%igw zepuPU46N`*a%I*QRZ?0A||51~T;&g+;$=m{*kPExNv4;RtE!9uY8?Au5Ldq6EBGf_XmVBf|qaYmeYGj@0SOcB<5@cNsZZC(tW`yXNa*$o%t zjQW=!ynU#_z?j6p2hZF2We0EX{s=!|@u8KEqQxtaULRKp?cjRneEq@3_0B}iae})w zZ^j<}`*=0D=1QNiRhvpp7I(&aHr@78Mf-<90=cRf{;D8+Xn)NX5hQTVjvDLcv z^_=OaXYoyU;rOiEF-Pv)r8{UjgsLvyDHL&aV0_kcc~Ag5WF^+|4cxgf;D3S+iehRw zuc_$QGdGL=rt5N@V4;Z2Z2Um7Z_RNRy3%#I-z!Et(*sF`2cZ0c#ayNLhaW`%V2*){ zW#u@yxNhQv+)b2+p9I$wo}U7@$G5PK1^j4War#%e?=k7FwjLt0T7naY!@A??{DLKrAqfpdN9c_W!4K zOVS}#y>F`v1Op*9)NC-G??7>2YFxME+vl*>dBE{7_^_hk2rC!g+PfFIve^^Pjo%?J z5*6zchx};^T<*Z^U}H1uHDHkN^F+k(gp# z(t_2)f~3!I;-B7y{f5&j?Em)9BU%NN{STGcpFPFZy}}LHKh&><{Vy*bH!?eMWOHU2 zvLESjwhcXc?&>>((&G%sHwL#u59YiUS(WF=t){aw@BDUbUF)ilZ=E~=B<_HG3u~98 zoZ|=%4S?9v!^!#z7 zq+u);``!7QS^@TK(wo#AJJ4UdVq)62HAzQsHc`?)sQSBi6{Q0#Uf3mDuUb|=o& zzijyxR2IfS-gb~TqyQ5l?x-vrkcyGX{b*&mm%7Iqy`-}6Q%sB8OGlJ# z4_*&)|LCa5BR#Y`$i1{F_%E-UMMGkYO#gEb7XBcR1Ynz!e53_$bVq|KHx@&4|3lD`svtd^X@UYR{(fTQ! zS3Hj&3+4j2$iIu=V%>d7?k3B_Q^3W#TMDjf-K}y6Ee5m6rTOE8lpHJ|2fjgNB`Ic& z*|w^=@y)7rH~wxmSkE=jn~VoP*4>8JX($8z5x9h;+r=F9E=W_tE3d9B851N+3Re>& zO$AWl$?H7XbF^En)r~K-bByUkgI~z%?t4^j6m_@fL2X@-8(F_x=*=#0wbR?3mvg;q zU3KsxH#gQy_HgE2u+@u-!8ZR_CvvXWyoH0PsR<#jq1cjBwE1O^(QdUSgIqZC zYGqd%Y+no`u2AQXMI9l;N6@}0@{6??G#Zw>s1Lw3J601sSMRv<$kn}il@njs58@#G zZU6>VnX}i`+(+pn1o~hwz?S`gp)G39nE<)%ra1B*J6f-T!&@OXm=FQt=t$p%1nT9^ z;xWQlh|S!gd%evSx(?bdyUUInnJREFP2*Qv?YQG=@9x{np#{gyHaL7<@TC;TA`o2+ zZV$&wEpoCGoFz*2%Q~waTj#a3sqH&jcH(!Xt{ch`*khYoOxMWxW?`|R2I{2>&BI!A zXuWh^sa`Ui4Q=X`Z1zLsRd#ty3t zsF!w5f;P3hZDAF6_-6LO!$#GA9+tN)Znwc#tTEn^;@b@PFt|N@J300<9r^hbUr$HJ zh>4C0d`w62F{W4ZR`p`UJCSE+sVrJ5vfQ!2L9=NKySfy=&!L1Z8=7hPxrj+5QYAL0XKoao9Dw|U9&0p5V&Ci?L7P#+& z>f&1%f_jl$r zBVme@LRS4zRy)#O6Td061oehymMI-;Swv;ExxIGw(P6FKD63XRR95j@8GCI~yWEj$ zGZ44;?-?PljUYtWui&s2VX<{KdL1#kVqvH_$i+04^oDQU;eSZhL zKFJa0O@x0t;t;ZIEUW-%g61)}$e$Ydr=9D zz&EJ0r!i~HwiS2q&Hv0Fj58koTaAU)YmvlZ(=_ZTe`;@a@8|kg7)AvG3Yd=ahp~Q} zGJz(FDx~d?ZBvzH{!rlTaq%GYvi1kl6dJdBM{%jEdwqaX`=bOP-)8S^T2Z{&?O7V@mf;a26im+YJ90 z+#bfATEt%0k?V#Sr2{7I2);2xfpK?7F*3(RBb=1`#WSZX*Uw2s@ZD6;4nCmN{?MAV zgY^LFXER+#kFh#Q>Xag2sj-vPi~4Fg=x`V}kT!-M2Cx|RznfP`3h70v%`stp1>C55 zNWdkRxbVyh&se_~NSL+pImu{Eyb}G$vmw8~fV@WktavASSmM&;GMH)tiQ1suYK zNf-@c)8o{;3$|)?gh_?X0GlT;$${pZw`$zpb7BMB=mU=~cKY=%D)rLyPL8TJ*b>pXG9l^TK3!?>ZslkXu01@26lmIpnKI# zX?exh!Wks-(JwNJ;Cz&l0HH2EA_Dl=u-BbY3x`qs)PJ$&L7kuaGsLEtw+$*1-2d@$26lz8EUy?$$fNrUK+%m+ z5YF&DEB=I+X6joyNfi4XB0)HYHH4XM8eXxAO*SDlkxsAW^eU6PZz$b-o9X6ZZkG_1 zC8OJ23%i8V=m#UCn{aiAH_$D+E#0(Bc-?FK!f)wI^ThUr3xl+4&FlNx>L+gyX*40} z8a9X~2SwJH=hsE~nTCh3gpWH5R-1-TfH=QFoK*w2fxUX*t_`B}7sb500jA+>fjLo6 z&gsMiX`5^orKi60W!V>oYL)O-CIKDq*GW^A>DW6>nU03G`Xe{D&`~FUzMPJb2I<&z z#o+1&Z``K=bhJ>WW6?vP<2$6|w{gmJ6nL73d#%RFwrzHbda@vpyfld!S2TvjsG&$B zec#II`cCea%iRh}Xa8n8-=ATZ5OYsP=W!ytglzOH=$yTJWieYGSLuAtk3%e2{j* z7EyX|1stDI80uHT`?~q?BXatigF1>s?d%_$h6kG1CcqWh^l&;xoZ_v?TKJtB;|Xct z8Zj@3-IQi9f?gxGX(Wmys39UvS7(N%8HA$E?bzpgWUi-mxcbe4kW%@|vKUZhB4%fNj*g>=r4S zd=2Eh5(~jBvf(yc&U9Ujw)5%_m#h>Z?Ok;X3V$ zk)p-T*De!g9mqcUSq(?;i1b|vZziOHtLkM6DD=~H12w$Z{WPS3Ys@PGW5!kM(LGV8 zLw)ZfduWRtb_tErJ*e}w9k$rbmNwTA1a=9Hq92X>#baAonxW1Nx^575ld?2Z!BSGn zA-jO3&nZhK3YJDy!7(M?n#ItDmhWq;mGh{M@<^fASIx0YxOZR1qo*!*3H9h#@JJkR zcl_vZ;@pNuQpe}KH6M~@6$|q7go%YEK+f%=^s&!*3uZukX5w?+DSWtYI~JF@d&#ct zqK!kJ^WIMz9WD)633hhCWw3=JTm8Ebhj_s{6kx!cx(dbgYt(c#Nx+v@Mx2{|m9W2@g_ z{=P1|Ff`~nZvBcIC|&=Y_jLZ~@B(LB{iwZxU~k`>4Yuh{(Z*jO4wFZ8r`z=+jplP* zK$`F7bRz4u@9q?(Csg~g(hIK~2YNIg*v9i6szk%6rK7_e=GZ0#%XJSS50x2^v{N+s z3?%kQkX?SMb`}$Rj3ZYe4QxCV=d9GMJR38vKW;qiK3AdPHwTjVBQfIy=Ggo1d|c7{ zpKeYX9P#UM_EjxUQA|wq$cXO`>P)vIf>c?3@JUYd2D#fPcRy1eDC&b*K6VKWNOw4s z>awq0g5hIj9(b);=?6TBX~P5IkWyavCH`CL^k3#N`GukDBR`ur)Mc+99bP@pR)1Cu zWa8{?o6u-pU-z=`%6jeHyHLOr_mY#lL>kr4dE0_OwAXY8yJ*bnN<4XIs>BoV_0i!K@OA}H z;v;>O3WZ;cXydn#xS1y!V@Jz);ty$nC*)@z%}vjndE%6!$FC?jNSz&BD4~oHrWk3+8R-3h?-^veiEqE7CYOFb?dC15bm! zqLlahqtW5)cqg*q39u+kd(U2AQ5{@>S$t(*DQ{&xaC2OJb}4Xk1#q*;yeI%l7(^vu z+TMFbi<|G6wP&i7>x*5byqS=urNKHTOR1sd4|%MG#LW#>!eo}2Z*O7wXefqe2X)p!G1Lc!ATQPAJnTeysHjhB*V-kFD3tMVL6BX7Gx`-g z6b2fV0}plL+SK`trM!nO-Inbtn#Tzai|lT(XdP(1IFUwqDKvI3#)&rK!|XupC)fwF zs{?KI=f;U9KQ85kR8Gk&JrhSS?-glW2U(Z*o49g% zsH@V$Bg!tp{+Wy(ceg?x3jGRtNCUTxHw!0*ZRjDjd&PTQ=#-l!AP2>O7X=!DT@e_9_BQA;Kpe7$?d1hj zm|h<*G7Hz;3j*82;`Vl>`qk=yuaYVmzF(AX^Gd0H^_nVEC5s^qs1oLPU(F8&u`>0( zZLvbGK)vr4#E$c_K=nT5v_h^xz57Q&%Qy}O9sxYcj|QcaeREs!{&u^BxzA;E8n+Yr zOz2n8Nf;C|8*tmVrBlo+-cK2q>_qw+4+O$u&X!laaSP4Dt9L_@&jycuy{U^uI9ses zHoS(S8LmC|KuhT&jBzaO4%)k$(bA=tW3VXGS6;gID@vCDyMw-(2_LaBh2P#;&TCDI z!J!$$yS;V^?@MJE<|NuBeDy{dgE(lxQo!Kc1_M*`inqq;!TMVQod?3n#pA=Z{SS&X zp1k5+4uJTi^c8O^Jd7Ou2KXpudnExM9qKFA0w0rrk35Svds~`1Lh(o7BQ$l$TVNkF zb;jBq)G5o6H+5o1HFpshIB#%rj)B@c+SIX)MpCokzvu-=dH~*BgH0XEr~k;YYRTO$ z6ti zQef#yX4Omc%vze@?2P-evh4?XKoh+F$JlXZF7mRy@1de?0m}?t0Cm!7*`B!^;p3+> z(c0uQFrW|y&EE?CRFI5hsxw-Ub9oOk*-$3KUF9^zlP>@nJ{$He^) z1oV=vEf_@aTg*@h1(YM^W1c}+T@T!(;6clgEFXamyp3UqhAjJ zptfO^=B7Vl#~rd{tz3LCYUo3QXFspfEN%<~dn-I=)+B%pyJR{8I2=>&DW}g@?b8RN zsn7@GE7J$hkZd{E0O;eJYpb6hhq9k|MwGrmK_9k&bZBBq>0E=UqgoE_nmS6_*jeZ_ zCVcvRTm8LfL>dhPw}Z`y#)KE$v(=vg@0#_Nr@6S^aQ2vRe~6<`nmW@saAAR9pH!ka zwCk@`U)S#}{1!)^UwGnLR$I!hxCrZzI z%X=R%COksd!nZ!Zm;(_)){hAfBV2>t`+Ok>U1~o#2dZworj|hsWJTU}4*Zs`we2gX zjb0ntxaU~O&I(7}gwa%l0plyvrWNlWYmvtnMH*cUV6H|uv7Gn&a|LY#rXA&deDV#q z<&^ibv##GN^Pbo~0gb@Jg=DLgc`qGW&bvHb6Nl?AD4HWo6-)TrYR%w&op5Xib;GxE z+ymOjjnPzaV|-=YoIc8X$O+)iOBQMLM42F&<-GTw6uAF;nP7f}y}&3F(Zm+S!gdrh zQM2gnnDF{fw)&$|L>j#edVsBqc6v%VZ``Dxu9x#dCf&SU&SU$3u+?`<7Ny6Q^JYR4 z4MU5|^*SXBH*0@R7H!NZ=Y7qdyU%N@QRSF$DYY9uK_8%xf$u*52JrMX@ZWd40UCtT zffZYIkY3-(={2woy-J2~lIVQS7N~15nhL!zzB0X3<%HSEd8T8hAGiYjhyh04id*_r5YQL$`T7tV}i-W3|CZKHA`RhAR-87MY|%1M#3oQOmG zHB-Osgrn~jicVqr2U27;Hr#6)8y?Vj+u5e6f{9%*0(_9z2Ouo?HU;bOj>zIU1^{cI&~aCZIVlJQ$2M_T093+0*g zW2R~TVDL3W9)|YhYn41r;je6)sTtt0|8<mT+B2L6Vy-Av8COgE;%2DufV!#a!2)(@KT}Keh_*v3%YIxh4VroNcQhp;%z>i zg9n1bp`wX+N5D5BUc5a7-BEJaMDCh`+YVk#u7Vfy!8|ZMrd7sUqWgxnrQtOU%r^qw zsHWqO!T zEGuKKM3xgH5O-7-1Y=$1HYu;)>>k+Cm0Lp+#~e3~pGrsKlNDXLRTgAI-#os#(%ui64kHyxwa_-wW8^!jY@u2gKEYO!A4X%$X|*9GS=W-!B9^aK8iC zWTa256|mFSIFH{W!_WF<$(2ZLOMvL)6U%4&?=RZH&Yde^2kx)fF%vw$z}iUlmV-pk z{`SR#M5VJJvC{2r{$84lo9vPgSez5}4LP;_-BU9TGo%xj!cp+GcjA_^=^5vWmvptd z#bpiBJG7-t>&Fr^&ZDGESU>@un;Rfu4=r+YCi(Q#Z2aYII$LNvYe=gI?pGgcWin=Nto-HsT z%MEzf{kTFGP55Xq&5E2D&h3-8C!0I5;w$#9E<^;PcF#N3+Yfjq%>|kBM&`k2O|g>R zN;Elc>@|%_cM7sdW`rr;v8gVaaIpRa)I_gmGLOq&^$!XBxUpZHMdGxrf;fwpF-c%A zPB|Dk=>03jzGka7@>YAh&mdZ!V?ftou!_7<-F}_Elz}(x19*hCVG~m-t&WE zk3$jaHpD8B!Bv26GY+9^Q&-0h=>e~k?`!^~sH0)65A%BMM=7ipRIJUbf9}X#7qBCE zo}1Fzym4)CJRcafhvI+^1;OC9I23DH$?z^D39?;H^-@^C4y*Z)IW@3WvZH#b=uDOG zX?5kbdG}fr4Xn*GyLCjXex_`$0n7S$_$aJzCg8WL)HgLTzv<9#j|QS(G?n@W58t!%rAjOk>f- zEQn(wd=IvjtmW<`a82R&WN>jDYclxJKpUs$Ni&KI4!fYqTJ6ih6s?vrW2TrP7?dCs zk`_tAr)|%<#QL{|9;Axn6`jX#p!Dcl>SyhwID$NZ6) zI$;FZvFTv@XJG2UjDuN<%OJ-sht#mXS+iu4e z`021_8jdK2819;ekIaLft+vw}{v=0zm%+!!IqFAyG=VLttL|1}9;9d+OlyP9so|uo zT{;f1VQ@Rx$P7-PpPilq#bykz+R}n8zQfplb*d>O?4DQ*q56jY)IeMC($}J{KD_p0 zkrC+XuI%V85u+Cy*s3j2I+cz%bIJF57w3K6{ArhE|Bx41YR3Y1v*dd*v-hwIRyOkU z=dO>i%Zm$M3C-<7x5tT7~G0>X~8?RnH}0Kmtc@vM0%}8 zBHe?Boe2FJ`7>SNW+`ek04|ED0Ez&8AhW5r)vc$qE~V6IYoz0z3Nn>aaIi831wWN# zF(a_HJBu+67)T$NMJIgt=pjx?=EodZmYlptOr*cDvy+qgmri(ESC>UwE&ZvyELy+u zqlZ1j@jBtjtu2dY!ESXd4|Z*EpZvCWSBl#gn25oxa4YW8x!KJzI&MPCT{_GY(sbOD zyC2Iv1Ftv>mj4U`So&j>M^I1y#h z-HHKyQgX{aK>IeBzS6U{rI^kEFEO|krprq80dql%Bp>tS9;f58F zH4RHYdN{+!CqkaPIJ>~cw|spPBJM4Wn_rVJv5zqV zd#-sce|BV$^|^&{ci^W&-;3H{<{lp7Kr#0RS;OEqm|NOC%y2ET=a(SvB`W863*%UI zkT*4qAitw>UKE>K_m&aXAfjxn%erq-#$4g^#(0ozOL-kX4}j(6OR7iKwv<O-9;tJ<#ou{pR|5a zDzEdO=Svz)Yx%Q)g3aZ1R{J>UC|?pX$6`9f8S_ifcN!Hjmwhya#rcwZ@MJXLy=O2AYy#ywV(eHJ?1DKeB8P98 z{_)NzGrefDvCf5CrlGH8erck%){qbZ0Mg)+JOkk~_n6=SzGQ+|8sF>S$9az5=uWSg zm&WfN;|&*+@?yL_n%9p-F&8%*!!ftGa0crsr#7_J`)RoBOci6`69%i$7R$GitdG_r zy?1$YbE&LzB{8X~e1)vP?5K=L9j(?5fP3CD;9Vr2wn?8Ww@I0G0Q?No!O)V;({GtByl<4Lb|H{~R+2t6F?y50gCsB4J7Tq8O!1OF65-zW zu6^LrKVg6-Gp~oo7Y5z$dq;%(#RSjqBk|hXU4n7QTFrRyOrLX|zYF5L zHP{aJ0l%08$Y-w8b^c!XiK0&VF}Dprn68&(mrDN#h%vYweh@z`5|iuAeL~CZQNNgO zOZzDJQQuL1Fasa++&F^xETqh!K6p;W2W5Vc3$IN%Rdm`24wnE!n_%}i!bN^DR%>xE zWDrVkgWdwu!;!szdEGzakB@lEAj+F-8+;qPc*!VsI;(rls!EhEHv2 zW4|0O%*&0l3c5)cqI0E2avNSo=>biO%cD>@nSa)jgO+Z$X=G{4p>6B}dQzUdavNLt z`gK;kCCvH&%kaDBxB2eT{fqk2`spT+41-&JH;nJMjDh89k@wef)IU?*6H!^6I)AL9 zKdkdeK;YB=d45A^;rjOmcn=sV=&_^a@P+F&SD{UGd_R*4x-6og0A9;5aG_E! zJH1UZEDPFTiL~W>qF8(Y3kJ7?g$d9iQOP;#YTsiU{{)=DQ`T|@Pw$RmAzC-)6m+8B z_?}Y#M@oHskX^-!zqR^fytotIGb>*;LSt^+TVBl)2;h#B|8c;dTjG9B_a83 z!E1s`5C>el#~(2~CjOS$qCp32N9%=t7vbkQTRrc}J^j*!+piijt9F|S1|P_Td6d(k z_g(uahCOP29=cqtaG;SB2_@ z+x6$?RzKD^eFWF)jgNS|ed~M^_vsI8_{7lN#QolfC|47Aw)87zLs#;wbf|R*=lW}Q zeCCF%3kD@pH4;Dd^ScALn=k(rGC?Npc=<0WUvU#J|8-m?vW7Q6r2wmbUMi~Pq5=-% z`gpt5bxpz@yphG61x5?$-S4oQqNs0D$}eVcLM$Z%wTeEQy~aJ;WI2=shVI$+$35HP z)IKeHwi!g*Y4trgC>izmQlO71xXZv*l{=L)NHBPJt&RmPXaP_>F`cs9;rOvvi;f9| z`>2;)Q}0X5mYz#x@SRzK@D?zz4xv@ql08Se)wyJh@A%kNGM)IE?q~K_u8{;yN9&6g zqD~w&77G@GIaGWgLUkUzS*R``1U#ishbCPKFGY<)jV0Vc#XtL$BV<5H=KmBKCaVKH z<#h0BpAHzTLI+HzOb6`0sM2BH@@wkfVwn^Ax>P2VDCqDn%G_yKH#IOaR0GfO7cA#& zKT1|DzqY}{rLywTtU&RpQx70>U3lFjm&zGAvjTn3^wdj;)n09}_-s$Tl;zhX8sbwS zH*P}w(INc_31aJQ=*lIlEu?3A;#p$j)j7-;$Lh6WOa(|g*b#5) zYe?+f)+^N@%D!o+J0{jgLhycxY^IrNx}- z0#8Gr|3Hd95KgEwHJ8Uku%o+(Bs#34UvauW93{Q+qYle?)?idc(mpa(bi3pd z=beAKe2OFKD499YCvEPXn60x%NCdv%x0U&sV!f_vY9L0zowC3G&Dikg7g}z!2LJp5 zmK8Mj^}JCo;d^xDuV;}}18se2aV!REV=$FNltt8Np}iDilK1a9Mz8d1srLk9Inq&g zVytdqgE0|4#p|mKMT4=RqYcKS>-Vq0q3eNN;bpRZ-xf1`IkFz7cNYIXI&@c0n2Uf@ zL1Dh!@|jNx|9yd{wMCs`oONXzOkTYsA}J;t&|nzc3X@9zbrxsB$`pR~QS49f9(!6( zgq$G-n2@67q3CvCe5xX?W)7SQiv0=M*y_wbmHQKkCF_h2&2Ap6fwSV4*F_gUX!N+Z zDy3zt#;1K87_5S$M7LJCA3lpy?VG~SKZ@U*^4OE>TNmA#A=Y)#-EtZ|(jf?;pg}?k zP_d(t+0@%=v|ReY{p~CwJGbS@C=GTL2`gI8DL6_T9(zX2tBbaR?-yPM&k{&2_D$IX zXUpkpPsOZ4G)&7)`rrDL!BnlISF+MN!nb{V7~DR-qSYz<3W{&d6VJ50h))VAQy({a z_(BlA8O?u%FT@w4BfjkvU-ePa1VZo&2*LA45Bm`C;C+VEA%7)&8@H63gg*V0kzcQb z&#!%a7~DR-+iOzz^%UR8LeGc{#K*+J`(HJBh#?4)Q}ZwJ?WXt|j*|0FJh_(uUnOKa z4m{rQRrLXKe0J~(=J%fB1K(xFAKqkawCt(YzQf;T79EoLE3#Rn_bBi0Hu@9civ$i4 zK)B(1j+SicP6&yg*F#dDcXbc3{=WCIH+fh2#lyl`Bf?o;IZU8UOlS6Qj7txR6rKx+ zVuO3IMzkqsbAt|t_JBby)9+v9pB?G_9dk$1`uo2|dV3U2oBwj!{EBJw$-@!S**zp7 z%y;RzSNXq<^yX?Xie7^7@^_g;v7y_0q<31FO$>k0$s*bHNX)U{Ocz2Ft<&}b0q8a_ zhy1I2xV#X01hTq&RU7`ztGg~6cgY8JguyEOQym8*&>wm@!kaq*+bYrxHZiP)JtUN0 zP}CS~tDt25(^@-WM%k>ZodlDeSP)%6yQ6<9>qBPgE>q4Qpbu9kImBX?G9!5ZgEw7n zmVV)?%5t+`W-+z^d)IfF_4_v&8_p>PJATPiSZ=m&$dlulaALcy5+arHN%WWnHdI~-c$dsVA6QxAQ1(t^@4{owkXw zTCU(XXkaKsSm~nyPqX>*daqSD#Kb&mxnrGqL>#}D?y`v)zNCl5_u*B(^D%p{rJLai zNL2+0?kp&TNu^iz*~Hv|IALVg_cYEPXpkx2u|7T8)c6bcbVflMrF%N*XdSEo(tEd} zP%G(?Ny)p~3_3(Z^>#oTI=x}oV`=^RE7Y$TtU@Q%a>4B3)IUn*&pn3q>$Y>AY0us& z>Q}*v4%V-v_EHrO=6|Tj-^1~`ZAX;r*WKrWjEm;9)URq?%A@b3e)7n!P@213(>@Li zR>9F~&TkLr&68xl?=h@jEiQVdX_upZe*QMPGT@Vk6oQ(W{9oy3S^fGH>L0iUG^tC` z8TRDDWPUBs>GRv@-~#aDEBK%Z@QMu32^*QxAmdX3gXIW5eL~u@zJ% z^8+cikATgBV&j!ZpSYPl4sg-ip>%} z;?5@zF$DcPY+lXSoGG^5$B5Y_&j_dT=!87THWfVGAVz%^tQAm#H>A*{|INA#>3bPG z%DbTU@nLZL_yX%-eFDX|GTAdNhT>aM9zFaq5E+909X{GFLf#ote2K@P40=XHlt%}b zfVfM+(+%YDWo@!@yGY}wLX$rV>oVf&mGG@=A0Gy{!lyFVzK65yV>16V#n(5*GwnLX z7h4`(S^CLC2tofNzPS`%(lK%>*)!ryd35nx5cyQ_u<}2sfZO=6M^UgncWc^`|s=OoyO>arr}Zev z)~>;$!ZO~b!Gi?A6S$Z}w%nW%EI41EQ8aX&@qwQUo9joWeQX%qKDNa@Q~38Nw#R^N zHN|FA35U`(cr@_-EjHKYa(9nn%RffEuX$R#L$@8Ux2{wz&8l`cYIS|^P<=)juF2!PwNAf z(UnUYJfy+kVKH#nW$zR|)bY(KbK{K?lhE?|jNN0E`XV9iS@pt#d1*tyVX9WHaDlg~7RxkiT+YOYemVXTyh# z`uR%uLfglO!R_O7)=S|xP<*p*dq#X!h2`!|Wpu*Y29Gy=|7U!@6rav<@)+=`RYlK8 z1$@Ea84cfc74lcc7xcm;bnl0Ze2Egiu=ep`aQpZs8>R4h$FZ%_Gs81tBE{FMDti9) z29JW_|1&;Qim&%^vgfv^^{}ewgp3A{A_hF8p-%9H{FU)N0{)%-kdd@p314{o_%OJA zeDxzz__`F|9l+;H@mW_z>*q9h+=d`XP7NvxK}W|rWMctX=lN57hR2CxhNrb#RdjJ4 z;0p#1Ug^6C@>j+;y3{1})`yJUK1%o^+Q)~%?c;lClENQB@dagiM#NEke()iW8$1Fb zNQUlTjddWtu@s-_andc*(|Su)^zi3UFEHR?!SJC2o`3 z-U9zVLit;#gl}W}_%OJAeCg&Xd{yEK)sI72l7qO|I(JiY+?VlPjUv0AZ?Kqer#q-(pkL?WZX=|Kmh2*E7wb zCc4rQ#!>$tYhMCaWA^`lZZ}uPrLy+SSZ>ytF-FNYM7NRf#i&tai41wnjHQO_7R3`L zW~QO+Mo%&eCR+@$ccT(gp%mJTkR>fjk?Q~XocmPwx$g99rvG`>`8@aRpU?Yqmd~@C z)7c(;@-kIt-J+?n{O!Y};17Sa>HlNhJ&T{-;cZ2pi#4^yr+_Vv(IVdTZ1L&R*fw#D z-(j@H2aNJ|oZuXaH=4k$RyNia=T>$~f7^-kpzqFT-?2ZXYl}zr_|Zn;j_+d9$7xUA zbDG_b)mX$a10B6(`}$ZrdIzp@4t1W>4&S!KHS~stdBSKBPvZM9+;nMa`#5F`#cMEB zv7wG9BL(Da#7#Htej^H}zK|Nkpin*`W=5x5Y0elqb%_+#U?5i>f*F|S5>_cBR2^SOR{Mcs;2Q)7SWqof^PKiUik zrO0aUKW=(OXzGlOOw z1#IbkmYejQ)6=@x=70O6O*mpp-w`MF#^)x5h7pwW&(aCh-))%67LRW{+7bQIF!x%nMA z)GX}t8^yCLV2aTqIf(J(y2{C`0=QF8?hXE zYR}Apt&;`!YZr3zUXI*vO8vX?_Y11$%{Uv)WWT6?SAJ{5d|F=OKDIz< z(RiPfT&Ua?Qdq|aj6%RoqwkZ_cW;4plcM&LwcH}9*%7kq#p1vtmAkB=*-q!Wf&cbQ zG^5#GxvLnYm3umx+4N#@uka^pgfy#3T%UGF#sGuS(4@N8Y+($V!VRq)vgX!^B<{pU z8;_Y!j&HO%_xyp}t#U}+_nO<@k;D9N_I9RtdVowZS|kTCp2SN|`oHp)#nX2g4*G{$ zf7`Y0`N00h;;GqPWmnxyaSDejI1C-mUHqNmNk4-HJR_bxknaFIGw*+?#R%L z>7do`9SzF^qeb%2>*pYkOpr$s>IIkPAL^~DlgGc*i;H;we7|u2+!#KV-hYoI_klwJ zLY=+4vYO1xjMEV}@HK~^7LdB~-eu4JYqT(S#lQ=GK9OcN6;@7?g74*f(o7j!435&B*3t-Zs|{ zJTjZFdFE;cWgDNGdFYb^gRHMbOt^mRo0lmPF4!}zm&I3m!eOX~=kqmJBPLkASQAtB zF+TV(nsMaCR@YrCJ=5mRoqB?)eFE}f?`sjQ>NfWtGiCC^zabU<*bvIVxpn6|7^N** z`;zMHc4!4gi!c)FEVoNehLys*-E<5Z@8~MbETOO(8Ab4Eb%%h@|yi+bU0I*B%Z%Rg?4i8u!9JTkci9cfS0>=P8Q{`}D}^Q+W=q z;roL6r-P6Bcw8uNKeX8Y`+0t|EJKfc={IZ7`#DogoQ`zLnKGXnMNdPJIAvG9cLK6@ z?|~oEp#FuvBk!{bfBs4J&leOOqeb#Y{i}b!m-CbQE%)pid<564UbF6u&Ybe9cDy@jYWg z11jGG-+Gi4JEKh^EOC%0{vDo<1TQ{DdHN3O!02~)s{dYs_)1;O5}8QK(@x_hfxTkt z)@fw%8psR0DsW=Ni(03*e;}FOJMFZ@=q3*Fx9NMnrC(rD6b^g~O3Lk$H2(BG-{m;- z3ofB_Rj5RvAV#-p#7}g~+bb*Wl1|lZw0TwYK%P0J2>j|Ac%s{}re+9y%4wl}_EfYg z{G%N~%@DjMrkzQG=j4T}Ejzq76nWElUpsi$_`wK^(j%)C0G+bt>DH+y z{)8mUcDn9@mq54lhsooVsjTV%s)R{O^wT+$7dk@RqH)$JUpzJ@|Sz-SRZ;yHkX$q7^KEi0#Uz~NP)G0*D8JViod=K#gy zDJ$P{;TxcT5CVqK@ilAf`yi}a{3;*F-_Ui-McsAF+;Z)@B{)mGZYi22$*p`4R8>9X zL9|^`_^R*0=ZbLM5(2*Ny5&#}d@yB~l<}s1-2&C=y#ptb2S$tJp{K7Pk1~))4PCcn ztqS!nuagJuuw0|pvvl2(pfd*~+#|+)N%X2v=a;Zbsk+RxJD%|tByb%1Z9!LdZsld> zWi?nM&qiK{kTRSDn)Rh=^w%vs^xJoz`;$m0S2PE}S33CI|IGLtd7oQ@f4f$y^W6Wp zcjV-E?cfHgH%~!tFj^!hJ-sQDlMZ_q%VaR_8j-LkyF%FdZ+%l5tv6w=C$pO=d}!CE zXKuw(y@9F;0i<4y%aOO9R&T!qEPgXDcGm@_0&1@PcJTLx`M_uqAL8f!1o$`#rO9E* zZN$Ys*=6mG-}-8R8<$@$Fxw!CHijB9jT*b@-eAJFzUSdvU&&hKV(Eb6qm$Cuw=QLj z%kd)com~ClHJ&eB{dHgCAwP9cY>P-v`QxdL-=A;fA5UBM=bNBe5hLI=p7{|YZ0cUC znK7wMcuNY$l0V*&i7e?{r!r>9ah%Vmy7~uBcHLb&pL;ZV z?mM$_+_p|!t{;vi934waMPtd^-N+76c!QE+oA+X)!0iLt6X<@RLxBDX6u(o75aO)SN5AIKEhGa_*X!!FXG zgUsS44wiAR8*Igs8lx{78eG0aWY*67uS0#swO55mKRg!%FcJi-$Dm5(J?}N=W7Z zy8F?fSO`KThqJ-ld9BeH2SKP$ZlK=sz zoDwpkV)zRhbOnM?50#*|-QZu>)vkK+9eX<=;!B+bo;ue)aQ&0;J4`41C|t)1zte#} z6|Sp*TEdVsKp1v}V1s0|kY*ath49b8|7IbqHba!&@2fh$v*5Z2{^rr#1A*oN#dbUt=p%tX7HB?D1Dv8-GzUqVX4-Vk91aQ3{R^_aCC&YXNjG6r6~SjAGCmkP#`p0U4D>G$5n2^#)`FLT^Autn~(DghOvYMh(&%kWsnx z24vJ%y#X0jMKmCzuIUZPsIGbgGHSTqfQ+3)Z$QTWpf@0+ib{xY=FngYs|$?e*emqL zXzU1jV>IfVXpBZB)*GWyKSg6SDzM%djk>A?-R=SZx~_KY(H*1b=plol zC|LP*?jl^J3BU4zRtndxVW{g5|D%K9u zS_1vBc3bV%SGwr*cSp=W`^*suHE`0M>ajJdSDNtAF z^x_s@R+49v{qiA=B^le2rg>~aa%0;@4v+WkL2qsuFUS&oQ77ED;J8E6i*@f?Y$l}( zt$bqS+=W(P!Eo4M?i$IBnH-qg#TteZT_^j<%^y)G5(RMi6$xuzk#W_Gdn_T5bNh_! zap!6Z9F4oyIOWYCj%2sao#}iHN|`AEIS1`JB+pVOuizx)&H~RdgQhdTUY{HY`!i2x zzJx^ZVc-Kz=|U)(x)La}#_*56U4LRa)2(1~AaD`CyvLBQX%`BL>fbKtFAtD`@8=0G z6=ZxER}4uMfBO=RN8(zt-lxyV-+Ba+*y&6OMBoi6lmf01N?=^UwZTiE;_rn;pQU4T z$gSzq>F5WCCDD9XHD6h>BAkU93NJ2Ka~$&v#kROdK^HLpl1|0IyFZ|GMamAtoSo~n8!w9WS6#L zbig7orriEql|3xdO=8?7b;anam)Y>Wv@K*Q1;%jAPzIEKS3ZHBiTvhn>)mB1FEz(A z2IpnA-pxe8H8|)pq(+*1^UFzTDst+$M(?|FZi{QW@55>QKE={C+y&EZuI}qRUDIbz zhs4}M*YrJwYusJaTX4USPBW)<hh;Ri)G&ydve*_R@o!7;~0 zH{V+gl6`-&`?__m>GfYvk@pT9z642z_UaTa`AhhmN7i++dvl8c)aK^w+yz#@qKlu<&N_I|D72P!A0-En5JNCj3xgKq77OhJT zx_2MDn6U;@)=0v?{`1eLL&^MU9`J!KKnO9^DV0|vo^gL&yL-rL?IJT{NhhMrmj(ED z{p7%z*4H8qUpg7_jF5W~hv(!pKO1pa3MZmrHq_N})KM51>%W=J|2kwCRml#Z6&OuW zC-L8aPJRGq&$BAoK-5W1*;GEje=-Xx!Ep++EQLrXQLVL3?;CcH>yw5#HltB4bmzi> z6Y&RDiTC>-9Zb^f#ryq-f1!8EXhM>ZG?kYq6vSv4tJ1yo!|m!2UU)Dm-1dNtRq|8$ zf@vQoKMhL!Ybf0Mx&GHs-7mPv#Fh%xWOgZ^#&`n{gZj>7Re_mMYHG`@seIjYNT<@I zr*f;$je<>3UKI_?3!`bnYvm>Wj+KDCsu!qa!}~(VQcju9-%p#&!e0EzliBBgr7>?I zO3NLp1qVhD{GrqOc%^R#)$he`mZdaNbW_5oHbysE<=!%KIiAM!U#NkaY=2G%E7DL5k{(hE!`8q6>~@?1N1J?K=e z^ZhRJ?Y~eZvqQd#dOB}^ANe**pUmc;NMlw&6s-mL6Y(ts0%@3UO@K)-eDAMZDm6Pn zwk%XRE||{m$(qb+BnzkWlGR`?LoI$ryK5hPOP-w^s&fk&PH9BmD+S))Hq1LF6Y-Ae z8|K|+kxDiSdFOtIhCM^xy+8t*Q)!GfLKif9bj-Y#XSkyQ;xi+fCSvmrZMSF=DiMg zs}rPXk;*Z8IzRg*@Ggm+&VL5FSb9dx`%Xi=*9g3$5;UOmm`ubwrf-<{Rf|=!2^9Bo zXqf#J;N1!&P;@?x@rS4;;htNE`;Zf4+hSGx^XYs{)nqo86aeoqb|*qDy0||##5+Dj z!~Sm6Fz=X5#5<;MnD>E8RkDc`_nz*2%sAvd7$lI8lE&CTRMU8`!`DS~fQC&$-its2 z9=Fn%J5A-is1A3x6QpFRD&EeW512HCEg}xUJ1h&{-W2oxiy_{d3B2QBJPq)U$wa(k z`i6NAQK@88DDHmHu-VAF6G)&UEsa?PQBA_Vs1A3p6R`SMIWBbP@4Ex|5kL5+sn4k;V*!s3!5QtmED1 z1R1eR6~E1$xBq$ytCVa9-q%XV0;olo_c3P;=zI%-_xBp+9g~T8$Mj;}b-x+I`TYa6 zN;Zq~p6$+Cub?`=7<4`}jbR|FNxbK-uASq8Pmum0>kQ# zKvZ%s4kzjC#{;MEXxF+e1>WTi^Nz_xykq)?dA|t^dLr*i`7C}<9P;h~5_p@P#-ucr z_mn!`cbp)1)T+QLcfL3VaPREB3V1&W(x^ZFQR%Vfh(X?43%r{)%sVC%@s8X<54;oGLrLjIqp3aA5lj?%9v;dA|FImgjm~}0irB4E$rhnK#AVIm zy~_b2>Ntf(W9=bjRM~Fry+iG$K_SDjHki?=jXpDa=$fbwxJgDrn6_y26&Wj4bdwB^ z$~4gnh56IS&(TA>KRS}M|MdYIpKn9JUr_xNUMTdcek$4|L)BLk1=?E(V|8U3bMC}* z@N1w{r+((ERCVv;C{I@$5H{EaQ4#Zo<%Q8yR<-gH+e0X?qia>NWpvzdn9W-|yWxB> z){XUPbDP->QOF!PPP8_r2x`OaDx?5}0)MOqzuq3QsI!Mw-)QBPZj=iJrbB^HOMpk) z+l;d3Y<{PXJ(Sz~paFZR4KRS~qqfMW$Q}}P6O0xq3g$ze4ckM=cmMBIGC$;7Gj}#` z?~Z(X0QY|FZZlR81$ohNBED%5_5Rr&LcRri$YZIr^aS|~N}D{JH=pXpYGU95?IAa) zMaLcrxNywXc6z2uVLPg2dZRi>3A78 zo1d*h-Z_v!?EANwV-O`k{NHd-(XJ7I_jV`A*+5m`N$67Ez`K3aY-$gAKrK4F2dpy0 zyM@3z(=hKCE#e*XHO#weok|u+`+C`I-a7_)4+aS&biU0jfv6_&F4#lBd#97cZ=EXs z5p*kmH#V0%2Hs)xoC~$+@Gi+W#QXaK?;kYGJ4TCm$9xU*J}5{f3!?qK=NvxZI`SS4 z5=gYV%?yC3rtw~f`+$>VIF#0L4)1&gc#nY#w1?(HEjqjhjEOg(^PL3VJ2%WbMvHjI zd=2wn4o%uX`}^cMe8?T-JrX34Vso1*Ybx)8Jp{Pho+Q;lD#y`t_}OW0Y!L?+Xb&xb zT6B1q{Aq~yE&}ge8|EFOMZ9CahIv2rvr4vw_V>U!{GNx%y9OkXI_NfY5~7-fyI>Ci z?=B}v^v|k5^&H;&KJaeu2fTwl16$0SRP$cAHT{RFilY>>=QN#z_*qK^4Cbx>bQ2*h2?_cd&<+LM=MHOTID0 zJHGUe^LzJ(dBe@=BPoNpohSF&xU!&Xc6z2uVLOl+oF<%QQUiZ z@<%5i?{4fBrCBHl5dF7IM{2yu^u_5bgb_qVfnb6Cl0x#j-7J;dqQL$HQ*x@(kKoyOdT z@}cB_udkKO;w8_k;PyF$Je>-c4t7#fNdnmWsusxIsi~QVJ ze3nhLd&{+lEAB)yV<~sLLwNi*Eq4Aj?eiB0x0%hDo)5n5fu0V@-?S)>oc4Js{KSn0 zK{VtelxHj5=Sfp46&2Kex&?DEMpOA=HCp@WqV8G6ci?;n*KsEM=<}rAX>HnkePS)7 z1ji{pMEeQXjQG(Qy`TgBtZ)WPg8&fN^li}*J?9?#riJ9`AK?EC?}lM> zkgq-s^N!IX-cfh*<4_WGZ*AcH%;a$<$LW}nnAWEMk~-eSy2D`(tuwgi9!7CD1zVcH z)@wIgIo&gInBLd2-IQ?&m($v;UN|l;t&Ne(w7!;GCy!gd4??~@vDRpyozslImR+Ze z8)M>ePn!l_6&V5_wF$N~NjWv`b7}9^)ck^Hn6x-%Md2ct#u!}qUsdPyE`2RP)FLeuH{u zg;otAl5q2F`&!~RsNu!O*XkbOTd`2`RoFJOBl~(fy!g6BOw_|?U$@w~V%q22@;|}X zeo97l=hKFH$7m7ndb$I=?{FDs5=+M&JHXbtj`x4BJLFcq?ik%_<&fvDY>OmyP_)Bp2)f_(TJ z`^v5(u4FjyF{zFZF|ODs!Ts}?a0@=j_(Q5R`C>4)q@{9fF#EPm9#aD4C-+SQKb86e z?879fW_ip&W8Xki`>>;${c2C)EMw@SF7R1RYtXX-def|E{K^7Kx{;F(-(g%D5pAg1z^T#J)IKmrJX8G zD9vG9qVW5U94P*AP2KsoM70Ka|G%Htb6ca-F0DDmUQ{dX_>xyYzI@e{eEOzPer7tJ zj#QgaE@~Cr0{d}d(4#H+Opwow@SkKRmI|W`J||Ic{oW^i$uXXtQgW4ZDRN6US=bkspbnr^G>=7Mn z59jc+%hjwl^?zC8rNVgykNb908m-qJS)h_eMv)OK)sA5~e84j`o047fSk2~Azv6Wk zvjd{`=I|j;)a?8>Squq>i+l(t{yDsTj+!kk&te8bn#h+Al1zP}ozOzY=y+5k%h}m| z2q2bB-qyWlIkf79q0d7#2ccY@6Vz*Ox969h)xC{cw?z1BrCMissRY}U&U+&O2gKY? zph|(-1I3%F|A0A0>tT*LMVMoeBFwR_|Bm_jRccuwVyaD&d05&f)if_KmO3V$QBo zJLbOpE!ngNE}(^sQASiF%b}QC+|a>%fk~ku%!w(KYXI{|%X0=Xw_R%xb4S1dF&{0^ zF#;V6v;oX9S`Tx~DZ(6!6k(2aH6HUsy?(y*d$sH>?dL1+^C90h74s?)<`q$7#rNvK zh4=Y@Sw3u0&c*3~Y7zR+J7hCy5T&}$&vy4==XV6m!{NfA$_rvi2Z$O4>Hs>J&^~+T z>{Qb)?fzHg0a3Xfvv*o*R<*3@dk$J|+zPIHa zfQQ&m6sVIxoq;xhJx1$ck2yuyW04~4v9AA){RivRvS$6DzjFom`8}7LioL9#?ikJ4Gv-_$VnkN*LCH^2k2pDNI40-X-D0qika4|~ih!XAqhVUKk+ z9{Zbm{k}X%Eo)7&pZkEH{jjOnn~Jb^ItRC@)sA00;3ao_Sf}EWTQK5NzhXc(+EK)_y+4oFw+C|iT+E3C7bl|kzGo)38EWFOXKn%y^5k!25Vn|}7QS_VyJ zj9kwBn*#BSBd$X$&En9}@Q{EIW%%J@-P>hBFUKe#n2_fKvv&rxZBAE9-Ft9#qs5tc zgBlYFjn>ha9u~Ck!}6BmKS!W*1?ma30sJvq4}Z)l!XJwi;g5Cwcl>W{P|G?Z{+i4O ze9TDSCeHPpMEEZ~NA7M=JH|cW&C6lPEp^&!#@SkP3vWk><&opfhxuB_xkAvoEWm{sNb5X5dzJ;Dm?#>`A_? zlPln_boFHutA>@B^J}1j`ncdwg4=5+W6&C;Ko0|LY9Mvday#EeggFe+JGKlw4NSdPLUp9 zks>|7y8gQ!q-|5n`qFtI`yn3?*Hk_DRHO&z&XLS*>i9S)Sq-4Ryy*>)Q{QU_K($>R zfBhlvy~LND?+$tpuJUE`s&b2KV&Hnq0sT5d;(^q^3|a-HWkTVDx2pqhqaIA#u6E4c=xdi>#X&CA1BHW*9^{`f ztOrZB8`OjFXNL745n5wF4>-UE^&mi?s|C6SXajnH(RzA-IYoMaMT+zQ>uS6n=-d0d zL)EfDbUgUtF~29Lsd_M2qz6Uk$jMN(qwQmU_AOsF<>hzDfFJcUmSi(#yxP&>F>iju zmmRYd#{;-XfN;|BF&_gOnd+U*@Q}Tz{6UUsaVQKPk6{`pJ=e%`sO@K>Yx@lvYH(Gj z91rChu>CUf4XcPXud5<;_I@DXfS9in=z4+v0JH(jF%v(Q$-U>fS zFkCpn1-I%ke;>4OhEFzQ7p8Vpy#6iEbTcGAiI`iQZ)7>|+WX$mlPA3Ml;ura z_e~ICKIA<4;CFRk`zQSUvCG+_(u<>(v&u5`7ldRpDv0X*gr7ZnIhzkZi3ToQs=XkV zoZPJrEO^WpgAR@f2Al7p={CD*)gBP#vk9mBTP-K{n*l9%K|j6&v>ftgKq1SZ%q~x0 znD_f#?fB4i%I^m3{joO>z z4PcMade~!55%yT52z#vSzhj^N2ds@K_F+$WOI1^`pDeru*V`r*kfId$6nvwkKU)2&7|0OddBa$ z)l}?fiLehoPj2s1I~qUZ@5e1?onCzxvz+yyzFTBAV|7sND1XMAUxI!QKZyn|mR4uH zUIXbRZhST~d7nBy{Rw|##d6jp%x-yg(d!3~P0bIg13Ny0L4V8ne^cN)_P)oDWd>L7 zbC2q-*y`>5k8T^(m|$Q`M`HwgKLRj8{0|89pg<1+Z2*6a*25ojitxuGMfhV~{~iCR zLuwgI=lbo>_?VYX#eaba|KsP$g+pq`mCxW==5jXoRY?wv{?xCC%4RGM!?5s-54pdb z%{+y3{e$IfLiLB0YaqR(;&?VQ;*dJt^%?Jc5AgrXE~#2s*}cH@H3V)${7;?#HwC_9 z?~|*B@pn6I5P!*s=?3xl0LI?M|0H07_(uu!lt51dZ2*6a*25ojitxuGMfhV~jmQ5T zd;f@9wiNN_x)ksst}B{2@2f=kXPhVZj;I5h74QM0SFm2?7wuQD8tN}d0ekpIz#>I@fOY+MJt#h* zmig0pU>``$x2bxtQltlO&y$K1>iD1ne$Uq{SY^egIRH8Jb2GA;FHfrDw-oT!o`BpP z&;yQL!IoBMRIVvB9dJ@DO97=^ng&ZcC_!DofAprhsPaLfX^P$FHC9m0{JXdqxZiSZ zzt14?_tf7|0N*{VV8=sglTNAwdDH`+lWNDpjpywus+ExI9ecmxFT;AU^`t>P$W1n^ z2QJVW1A34E*q|O<5$IKcUIW^I9$>Vd9$-$99$=9oJ;1seuLt_}etMKz7KnPF=~T!E z+-j;GtP|;h)di9rrFN7R^5&OUuqhQKG0=~x?^6V8!E$J}4Rdc6KF3uXf9yOn1%MG)l&>X5U7O@*Jt3ogds#Y9LC+UHUR&+j0O zN7Zj-rZ=FS&_c$@?Ls5VdDq_W=4TLd&G&{eUteSx^Ntq`VtyNNK+Mwxnjz3TKpVgu zqxCSyoFdGzND<~(SK~3)xA)zm)v{39&#Mag;&FaWocDPV<~|q5tY~%Mqe9-fW(8aH z+Ncsn{Ws|QRcAA&A?igTzXyI+z)#q%ZUsBHCh|4t-J1*Qzzc=Eb@2+;tqN?uSEhIE zzNra^sMH#q?jN_@-7gYa{yX~dk72NYLh_-IGf-w>Aq?{=(Q3z6rn{owwf7|jIR;m7 z1e&O`f~&LlkFPSQDdeq4Q|j&gY`_Dt&k<;@K<@)>0DFwq!ya>ru*V`r*kfJ)9ee9I zwd@bXUa2bPEx&Cl_IpLxhh88<;?(goig{~yKUVW*(-c28h5EVebC^vKH5a0$`mtUe zau|{e7fWlDkcQlfRmTq~=3^%K!Iz*pJ7<@hX4@^Vv4W`a9dlrcf7bF~KVNA1A?nYB zmP6k0P{?KoWQzg&usF42x#`llckO*i=HCXf&zaouUJP`XQ z0(~mbXFwak9;5ZJ$DAVUu}Bg2SXbk**SGh(UWWJLXumH7kzH#l_D4k6r(7U|F2m#4 zV&2@}k9Dg2PVL8fP(Pz{4igMfc@X96$IkBp*lXY-w#K4n4WyT3yr09Ij914WDdul@ z`>`e^c2{exY972b^@d!~RK_Uv!oMl-9eZE%s>0yPy{Jo$&Wf$h-k02aU{GT;D?}P2 z*!v}b3F7}!prryW1KI%o7_Emt<`m(NMT+ppy8b){!oMl-9eZC9_1Yl*ZwDE~KOpmwLHvvE z8N$CBFhTrl1WFXz-x8n=;E&OI_+w5H{#c|4f2^zV`0LyIPRVLnEFJr+LDCcan>g>s ziSW0GCR38tfq5@^?;053->!ZQGXV8xjL2b*Le%q@@Ic9rRoVgmiYh<$dCjRBX^rV- zXq5((v1n)xla{0oOn%9KR8o^tGpEM1+U`w_0?Ns>gGoSB-12h29gsK?{rHD3d2=W& z0SZ3`fu*2F+Q{s7j$*@K38d2YZ9O}2JF1|06o-$ zmI9Rvv=z_>^Z=vv^Z;{;^Z<(#=>gXD-}PWgnp$?9>OoK$AK=|oJxCJifo(Kdo~CwO zSjHF6_J$rw8nrQm;pAZ2j&88Bha=$8_)xc z*3$#bDbfQhQltl1SL5|S-`<~^ z(&$E(^RB(0f5h;rt{TcUVDE=V8&;7w>AEUXXYY3a91!!40<{n*1GE9mFBFwi$lc8B^M|UVW%b)eAK9=s!dQm@LmBVa- zD9>`<`Hnw3cNsu!cF&*9fN)}4&P$U0*}Nq=j5VYQxBp#cuF8TJ!OH>j9np;}=Usb$ z*;#{_E0;pK1~AVkFpT+)EQ6SL0UQwXt^!pE)Dma|m}9ga=9p82ITk6x9P4U4=KA)& zMUGnboc8m=a{lPpl}()Y3q+WoiY8ri;Jqp+xze94sx~TzQNIR#KmQ!Y7oxJu;d2dt zwgP?%U`Pm8X`KA@-Vuui*}SQ?Y*~!ag&aw0o$I zpZJ=0p1zXR)O_i>l1-t$)7BhjCPYnn%@;#pF8qWy;8(J-W)k>GcIT<%d%xxb#;s(Z zZwBn;=KUS6niWr4$);|@DZZxV+kUPO)v_w;yT0b{LoPokWEKR@d=1zKKZFO!=1va{ z*!$N@3}R29iH5KraLpk0WWj6QQKBAuE5HM>w-#uBf!Y9V0DFwq!ya>ru*V`r*kfId z$6nvw@Az0PtETeuXdgHy4H5ue^*UWolUMusdkJa&oAaO#wTjN~sR|%WMG!=ijbvK>wH3!6!Aq8-+uadu?1s&XMbNWiQ zi2AuF;9eg@&8_6E??9J73HS%!Tgm2|{W;Ruy^@#Y9?M})Jy$ypsN{=p0RF=qUYNy< z>|tuYq(B|0t_1vt#QvKC-?8^S&Qux1e{PgP`~#l6GKhaLF!nC~j(`c`KU$#ptqA@e z3$y|JFSVA3#MgF@zDmnaKx4j5| zw^*Vs1f#x^zhMtwshh8TXZT5Mp_cX` zt`2VImXPZmdq47+VLh1f%Ag)-t{T<@FKCU99{eEDe%Ij!*q|Ov73egeZ9BtPWe|o= z4{VGUfsOe@U}J&c5O3}F1N0~LFihV`JI~Ymj^}N;TGor=-KB;PNp33Me@MG2$$GjK zu|g#cjU{d0ssl}-lDzAh2h_`A- zXbEE!8LO9GYp2JN%-Sb!1a9e)=?d+6bTfdWb6053l9?&cSpxMC=xm_<2_atzbdEsh3e;1e z^90HYbiP2p7U(xXZ3rP-&9(Gf_&pGQF95oE5o|sruq-9vuO3XM`%3I@P6%f6SRSiA ze)CTVm<<8pD{J;kKyFej3=5KwzuRX;(M)aO6H4S!LX1x?UO-}cds_ zOuL&j#W6^M((V%2wmS{@3j*dr0KtDV_(#n_H(X2TUJi5M8qZJrK?wW5Na+8SK#0Ey z^dbCLz<+ZAs|TI(Bvn6Xjy;59mr*{a)LbfTAC_xiK=rI)H2Ar6nt_eO{M%!)p_R( z_tAZ)q_?ZVg$lbUf%&lw?v`s|4Rj`66i94s)3?>eFW+&(B%SM zAy7Yo`U`ZWKvxNr1G;%0A#&Pal)I>(W3;HBW4(Ia8k?@yt+ADQ-5MFu>(5-{ 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
T=m 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

aCu52zzthPCWBg4)q()Klj#Y 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�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ٛ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

0n;eUN*P` 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

b(T_GOMJ7Lw8=u#>X8dWF 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�ZL7 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

b$ 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 amFIM=uyoY}=?VniZZ{@HAW)qP1pW_4|MX`7 diff --git a/tasmota/support.ino b/tasmota/support.ino index 23b8780fa..0751b2b95 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -29,7 +29,6 @@ extern struct rst_info resetInfo; \*********************************************************************************************/ #include -#include "JsonParser.h" Ticker tickerOSWatch; @@ -1427,48 +1426,6 @@ bool GetUsedInModule(uint32_t val, uint16_t *arr) bool JsonTemplate(char* dataBuf) { -#if 0 - // {"NAME":"Generic","GPIO":[17,254,29,254,7,254,254,254,138,254,139,254,254],"FLAG":1,"BASE":255} - - if (strlen(dataBuf) < 9) { return false; } // Workaround exception if empty JSON like {} - Needs checks - -#ifdef ESP8266 - StaticJsonBuffer<400> jb; // 331 from https://arduinojson.org/v5/assistant/ -#else - StaticJsonBuffer<999> jb; // 654 from https://arduinojson.org/v5/assistant/ -#endif - JsonObject& obj = jb.parseObject(dataBuf); - if (!obj.success()) { return false; } - - // All parameters are optional allowing for partial changes - const char* name = obj[D_JSON_NAME]; - if (name != nullptr) { - SettingsUpdateText(SET_TEMPLATE_NAME, name); - } - if (obj[D_JSON_GPIO].success()) { - for (uint32_t i = 0; i < ARRAY_SIZE(Settings.user_template.gp.io); i++) { -#ifdef ESP8266 - Settings.user_template.gp.io[i] = obj[D_JSON_GPIO][i] | 0; -#else // ESP32 - uint16_t gpio = obj[D_JSON_GPIO][i] | 0; - if (gpio == (AGPIO(GPIO_NONE) +1)) { - gpio = AGPIO(GPIO_USER); - } - Settings.user_template.gp.io[i] = gpio; -#endif - } - } - if (obj[D_JSON_FLAG].success()) { - uint32_t flag = obj[D_JSON_FLAG] | 0; - memcpy(&Settings.user_template.flag, &flag, sizeof(gpio_flag)); - } - if (obj[D_JSON_BASE].success()) { - uint32_t base = obj[D_JSON_BASE]; - if ((0 == base) || !ValidTemplateModule(base -1)) { base = 18; } - Settings.user_template_base = base -1; // Default WEMOS - } - return true; -#else // {"NAME":"Generic","GPIO":[17,254,29,254,7,254,254,254,138,254,139,254,254],"FLAG":1,"BASE":255} if (strlen(dataBuf) < 9) { return false; } // Workaround exception if empty JSON like {} - Needs checks @@ -1508,7 +1465,6 @@ bool JsonTemplate(char* dataBuf) Settings.user_template_base = base -1; // Default WEMOS } return true; -#endif } void TemplateJson(void) diff --git a/tasmota/support_json.ino b/tasmota/support_json.ino deleted file mode 100644 index f1b2d1fd2..000000000 --- a/tasmota/support_json.ino +++ /dev/null @@ -1,117 +0,0 @@ -/* - support_json.ino - JSON support functions - - Copyright (C) 2020 Theo Arends and Stephan Hadinger - - 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 . -*/ - -/*********************************************************************************************\ - * JSON parsing -\*********************************************************************************************/ - -// does the character needs to be escaped, and if so with which character -char EscapeJSONChar(char c) { - if ((c == '\"') || (c == '\\')) { - return c; - } - if (c == '\n') { return 'n'; } - if (c == '\t') { return 't'; } - if (c == '\r') { return 'r'; } - if (c == '\f') { return 'f'; } - if (c == '\b') { return 'b'; } - return 0; -} - -String EscapeJSONString(const char *str) { - // As this function is used in ResponseCmndChar() and ResponseCmndIdxChar() - // it needs to be PROGMEM safe! - String r(""); - if (nullptr == str) { return r; } - - bool needs_escape = false; - size_t len_out = 1; - const char* c = str; - char ch = '.'; - while (ch != '\0') { - ch = pgm_read_byte(c++); - if (EscapeJSONChar(ch)) { - len_out++; - needs_escape = true; - } - len_out++; - } - - if (needs_escape) { - // we need to escape some chars - // allocate target buffer - r.reserve(len_out); - c = str; - char *d = r.begin(); - char ch = '.'; - while (ch != '\0') { - ch = pgm_read_byte(c++); - char c2 = EscapeJSONChar(ch); - if (c2) { - *d++ = '\\'; - *d++ = c2; - } else { - *d++ = ch; - } - } - *d = 0; // add NULL terminator - r = (char*) r.begin(); // assign the buffer to the string - } else { - r = FPSTR(str); - } - - return r; -} - -/*********************************************************************************************\ - * Find key - case insensitive -\*********************************************************************************************/ - -// Given a JsonObject, finds the value as JsonVariant for the key needle. -// The search is case-insensitive, and will find the first match in the order of keys in JSON -// -// If the key is not found, returns a nullptr -// Input: needle cannot be NULL but may be PROGMEM -#if 0 -const JsonVariant &GetCaseInsensitive(const JsonObject &json, const char *needle) { - // key can be in PROGMEM - // if needle == "?" then we return the first valid key - bool wildcard = strcmp_P("?", needle) == 0; - if ((nullptr == &json) || (nullptr == needle) || (0 == pgm_read_byte(needle)) || (!json.success())) { - return *(JsonVariant*)nullptr; - } - - for (JsonObject::const_iterator it=json.begin(); it!=json.end(); ++it) { - const char *key = it->key; - const JsonVariant &value = it->value; - - if (wildcard || (0 == strcasecmp_P(key, needle))) { - return value; - } - } - // if not found - return *(JsonVariant*)nullptr; -} - -// This function returns true if the JsonObject contains the specified key -// It's just a wrapper to the previous function but it can be tricky to test nullptr on an object ref -bool HasKeyCaseInsensitive(const JsonObject &json, const char *needle) { - return &GetCaseInsensitive(json, needle) != nullptr; -} -#endif \ No newline at end of file diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index b8d3293da..2ae32bfe6 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -50,6 +50,8 @@ #include // Ota #include // Ota #include // Webserver, Updater +#include +#include #include // WemoHue, IRremote, Domoticz #ifdef USE_ARDUINO_OTA #include // Arduino OTA diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index f1aff262b..48abbb490 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -3344,26 +3344,6 @@ bool JsonWebColor(const char* dataBuf) // Default pre v7 (Light theme) // {"WebColor":["#000","#fff","#f2f2f2","#000","#fff","#000","#fff","#f00","#008000","#fff","#1fa3ec","#0e70a4","#d43535","#931f1f","#47c266","#5aaf6f","#fff","#999","#000"]} // {"WebColor":["#000000","#ffffff","#f2f2f2","#000000","#ffffff","#000000","#ffffff","#ff0000","#008000","#ffffff","#1fa3ec","#0e70a4","#d43535","#931f1f","#47c266","#5aaf6f","#ffffff","#999999","#000000"]} -#if 0 - char dataBufLc[strlen(dataBuf) +1]; - LowerCase(dataBufLc, dataBuf); - RemoveSpace(dataBufLc); - if (strlen(dataBufLc) < 9) { return false; } // Workaround exception if empty JSON like {} - Needs checks - - StaticJsonBuffer<450> jb; // 421 from https://arduinojson.org/v5/assistant/ - JsonObject& obj = jb.parseObject(dataBufLc); - if (!obj.success()) { return false; } - - char parm_lc[10]; - if (obj[LowerCase(parm_lc, D_CMND_WEBCOLOR)].success()) { - for (uint32_t i = 0; i < COL_LAST; i++) { - const char* color = obj[parm_lc][i]; - if (color != nullptr) { - WebHexCode(i, color); - } - } - } -#else JsonParser parser((char*) dataBuf); JsonParserObject root = parser.getRootObject(); JsonParserArray arr = root[PSTR(D_CMND_WEBCOLOR)].getArray(); @@ -3378,7 +3358,6 @@ bool JsonWebColor(const char* dataBuf) i++; } } -#endif return true; } diff --git a/tasmota/xdrv_05_irremote.ino b/tasmota/xdrv_05_irremote.ino index 0c96e7d2a..690dc0c61 100644 --- a/tasmota/xdrv_05_irremote.ino +++ b/tasmota/xdrv_05_irremote.ino @@ -176,32 +176,9 @@ void IrReceiveCheck(void) uint32_t IrRemoteCmndIrSendJson(void) { - // ArduinoJSON entry used to calculate jsonBuf: JSON_OBJECT_SIZE(3) + 40 = 96 // IRsend { "protocol": "RC5", "bits": 12, "data":"0xC86" } // IRsend { "protocol": "SAMSUNG", "bits": 32, "data": 551502015 } -#if 0 - char dataBufUc[XdrvMailbox.data_len + 1]; - UpperCase(dataBufUc, XdrvMailbox.data); - RemoveSpace(dataBufUc); - if (strlen(dataBufUc) < 8) { - return IE_INVALID_JSON; - } - - StaticJsonBuffer<140> jsonBuf; - JsonObject &root = jsonBuf.parseObject(dataBufUc); - if (!root.success()) { - return IE_INVALID_JSON; - } - - // IRsend { "protocol": "SAMSUNG", "bits": 32, "data": 551502015 } - // IRsend { "protocol": "NEC", "bits": 32, "data":"0x02FDFE80", "repeat": 2 } - char parm_uc[10]; - const char *protocol = root[UpperCase_P(parm_uc, PSTR(D_JSON_IR_PROTOCOL))]; - uint16_t bits = root[UpperCase_P(parm_uc, PSTR(D_JSON_IR_BITS))]; - uint64_t data = strtoull(root[UpperCase_P(parm_uc, PSTR(D_JSON_IR_DATA))], nullptr, 0); - uint16_t repeat = root[UpperCase_P(parm_uc, PSTR(D_JSON_IR_REPEAT))]; -#else RemoveSpace(XdrvMailbox.data); // TODO is this really needed? JsonParser parser(XdrvMailbox.data); JsonParserObject root = parser.getRootObject(); @@ -213,7 +190,7 @@ uint32_t IrRemoteCmndIrSendJson(void) uint16_t bits = root.getUInt(PSTR(D_JSON_IR_BITS), 0); uint64_t data = root.getULong(PSTR(D_JSON_IR_DATA), 0); uint16_t repeat = root.getUInt(PSTR(D_JSON_IR_REPEAT), 0); -#endif + // check if the IRSend is great than repeat if (XdrvMailbox.index > repeat + 1) { repeat = XdrvMailbox.index - 1; @@ -257,7 +234,6 @@ void CmndIrSend(void) uint8_t error = IE_SYNTAX_IRSEND; if (XdrvMailbox.data_len) { -// error = (strstr(XdrvMailbox.data, "{") == nullptr) ? IrRemoteCmndIrSendRaw() : IrRemoteCmndIrSendJson(); if (strstr(XdrvMailbox.data, "{") == nullptr) { error = IE_INVALID_JSON; } else { diff --git a/tasmota/xdrv_05_irremote_full.ino b/tasmota/xdrv_05_irremote_full.ino index 275112bab..0b5f09ca3 100644 --- a/tasmota/xdrv_05_irremote_full.ino +++ b/tasmota/xdrv_05_irremote_full.ino @@ -111,38 +111,39 @@ void IrReceiveInit(void) } String sendACJsonState(const stdAc::state_t &state) { - DynamicJsonBuffer jsonBuffer; - JsonObject& json = jsonBuffer.createObject(); - json[D_JSON_IRHVAC_VENDOR] = typeToString(state.protocol); - json[D_JSON_IRHVAC_MODEL] = state.model; - json[D_JSON_IRHVAC_POWER] = IRac::boolToString(state.power); - json[D_JSON_IRHVAC_MODE] = IRac::opmodeToString(state.mode); + JsonGeneratorObject json; + json.add(PSTR(D_JSON_IRHVAC_VENDOR), typeToString(state.protocol)); + json.add(PSTR(D_JSON_IRHVAC_MODEL), state.model); + // Home Assistant wants mode to be off if power is also off & vice-versa. if (state.mode == stdAc::opmode_t::kOff || !state.power) { - json[D_JSON_IRHVAC_MODE] = IRac::opmodeToString(stdAc::opmode_t::kOff); - json[D_JSON_IRHVAC_POWER] = IRac::boolToString(false); - } - json[D_JSON_IRHVAC_CELSIUS] = IRac::boolToString(state.celsius); - if (floorf(state.degrees) == state.degrees) { - json[D_JSON_IRHVAC_TEMP] = floorf(state.degrees); // integer + json.add(PSTR(D_JSON_IRHVAC_MODE), IRac::opmodeToString(stdAc::opmode_t::kOff)); + json.add(PSTR(D_JSON_IRHVAC_POWER), IRac::boolToString(false)); } else { - json[D_JSON_IRHVAC_TEMP] = RawJson(String(state.degrees, 1)); // non-integer, limit to only 1 sub-digit + json.add(PSTR(D_JSON_IRHVAC_MODE), IRac::opmodeToString(state.mode)); + json.add(PSTR(D_JSON_IRHVAC_POWER), IRac::boolToString(state.power)); + } + json.add(PSTR(D_JSON_IRHVAC_CELSIUS), IRac::boolToString(state.celsius)); + if (floorf(state.degrees) == state.degrees) { + json.add(PSTR(D_JSON_IRHVAC_TEMP), (int32_t) floorf(state.degrees)); // integer + } else { + // TODO can do better here + json.addStrRaw(PSTR(D_JSON_IRHVAC_TEMP), String(state.degrees, 1).c_str()); // non-integer, limit to only 1 sub-digit } - json[D_JSON_IRHVAC_FANSPEED] = IRac::fanspeedToString(state.fanspeed); - json[D_JSON_IRHVAC_SWINGV] = IRac::swingvToString(state.swingv); - json[D_JSON_IRHVAC_SWINGH] = IRac::swinghToString(state.swingh); - json[D_JSON_IRHVAC_QUIET] = IRac::boolToString(state.quiet); - json[D_JSON_IRHVAC_TURBO] = IRac::boolToString(state.turbo); - json[D_JSON_IRHVAC_ECONO] = IRac::boolToString(state.econo); - json[D_JSON_IRHVAC_LIGHT] = IRac::boolToString(state.light); - json[D_JSON_IRHVAC_FILTER] = IRac::boolToString(state.filter); - json[D_JSON_IRHVAC_CLEAN] = IRac::boolToString(state.clean); - json[D_JSON_IRHVAC_BEEP] = IRac::boolToString(state.beep); - json[D_JSON_IRHVAC_SLEEP] = state.sleep; - String payload = ""; - payload.reserve(200); - json.printTo(payload); + json.add(PSTR(D_JSON_IRHVAC_FANSPEED), IRac::fanspeedToString(state.fanspeed)); + json.add(PSTR(D_JSON_IRHVAC_SWINGV), IRac::swingvToString(state.swingv)); + json.add(PSTR(D_JSON_IRHVAC_SWINGH), IRac::swinghToString(state.swingh)); + json.add(PSTR(D_JSON_IRHVAC_QUIET), IRac::boolToString(state.quiet)); + json.add(PSTR(D_JSON_IRHVAC_TURBO), IRac::boolToString(state.turbo)); + json.add(PSTR(D_JSON_IRHVAC_ECONO), IRac::boolToString(state.econo)); + json.add(PSTR(D_JSON_IRHVAC_LIGHT), IRac::boolToString(state.light)); + json.add(PSTR(D_JSON_IRHVAC_FILTER), IRac::boolToString(state.filter)); + json.add(PSTR(D_JSON_IRHVAC_CLEAN), IRac::boolToString(state.clean)); + json.add(PSTR(D_JSON_IRHVAC_BEEP), IRac::boolToString(state.beep)); + json.add(PSTR(D_JSON_IRHVAC_SLEEP), state.sleep); + + String payload = json.toString(); // copy string before returning, the original is on the stack return payload; } @@ -311,12 +312,9 @@ uint32_t IrRemoteCmndIrHvacJson(void) state.clean = false; // Turn off any Cleaning options if we can. state.clock = -1; // Don't set any current time if we can avoid it. - if (root[PSTR(D_JSON_IRHVAC_VENDOR)]) { state.protocol = strToDecodeType(root.getStr(PSTR(D_JSON_IRHVAC_VENDOR), "")); } - if (root[PSTR(D_JSON_IRHVAC_PROTOCOL)]) { state.protocol = strToDecodeType(root.getStr(PSTR(D_JSON_IRHVAC_PROTOCOL), "")); } - // UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_VENDOR)); - // if (json.containsKey(parm_uc)) { state.protocol = strToDecodeType(json[parm_uc]); } - // UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_PROTOCOL)); - // if (json.containsKey(parm_uc)) { state.protocol = strToDecodeType(json[parm_uc]); } // also support 'protocol' + JsonParserToken val; + if (val = root[PSTR(D_JSON_IRHVAC_VENDOR)]) { state.protocol = strToDecodeType(val.getStr()); } + if (val = root[PSTR(D_JSON_IRHVAC_PROTOCOL)]) { state.protocol = strToDecodeType(val.getStr()); } if (decode_type_t::UNKNOWN == state.protocol) { return IE_UNSUPPORTED_HVAC; } if (!IRac::isProtocolSupported(state.protocol)) { return IE_UNSUPPORTED_HVAC; } @@ -331,10 +329,10 @@ uint32_t IrRemoteCmndIrHvacJson(void) } } - if (root[PSTR(D_JSON_IRHVAC_MODEL)]) { state.model = IRac::strToModel(PSTR(D_JSON_IRHVAC_MODEL)); } - if (root[PSTR(D_JSON_IRHVAC_MODE)]) { state.mode = IRac::strToOpmode(PSTR(D_JSON_IRHVAC_MODE)); } - if (root[PSTR(D_JSON_IRHVAC_SWINGV)]) { state.swingv = IRac::strToSwingV(PSTR(D_JSON_IRHVAC_SWINGV)); } - if (root[PSTR(D_JSON_IRHVAC_SWINGH)]) { state.swingh = IRac::strToSwingH(PSTR(D_JSON_IRHVAC_SWINGH)); } + if (val = root[PSTR(D_JSON_IRHVAC_MODEL)]) { state.model = IRac::strToModel(val.getStr()); } + if (val = root[PSTR(D_JSON_IRHVAC_MODE)]) { state.mode = IRac::strToOpmode(val.getStr()); } + if (val = root[PSTR(D_JSON_IRHVAC_SWINGV)]) { state.swingv = IRac::strToSwingV(val.getStr()); } + if (val = root[PSTR(D_JSON_IRHVAC_SWINGH)]) { state.swingh = IRac::strToSwingH(val.getStr()); } state.degrees = root.getFloat(PSTR(D_JSON_IRHVAC_TEMP), state.degrees); // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("model %d, mode %d, fanspeed %d, swingv %d, swingh %d"), // state.model, state.mode, state.fanspeed, state.swingv, state.swingh); @@ -378,40 +376,32 @@ void CmndIrHvac(void) uint32_t IrRemoteCmndIrSendJson(void) { - char parm_uc[12]; // used to convert JSON keys to uppercase - // ArduinoJSON entry used to calculate jsonBuf: JSON_OBJECT_SIZE(3) + 40 = 96 // IRsend { "protocol": "RC5", "bits": 12, "data":"0xC86" } // IRsend { "protocol": "SAMSUNG", "bits": 32, "data": 551502015 } - char dataBufUc[XdrvMailbox.data_len + 1]; - UpperCase(dataBufUc, XdrvMailbox.data); - RemoveSpace(dataBufUc); - if (strlen(dataBufUc) < 8) { return IE_INVALID_JSON; } - - DynamicJsonBuffer jsonBuf; - JsonObject &json = jsonBuf.parseObject(dataBufUc); - if (!json.success()) { return IE_INVALID_JSON; } + RemoveSpace(XdrvMailbox.data); // TODO is this really needed? + JsonParser parser(XdrvMailbox.data); + JsonParserObject root = parser.getRootObject(); + if (!root) { return IE_INVALID_JSON; } // IRsend { "protocol": "SAMSUNG", "bits": 32, "data": 551502015 } // IRsend { "protocol": "NEC", "bits": 32, "data":"0x02FDFE80", "repeat": 2 } - decode_type_t protocol = decode_type_t::UNKNOWN; - uint16_t bits = 0; - uint64_t data; - uint8_t repeat = 0; + JsonParserToken value; - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_VENDOR)); - if (json.containsKey(parm_uc)) { protocol = strToDecodeType(json[parm_uc]); } - UpperCase_P(parm_uc, PSTR(D_JSON_IRHVAC_PROTOCOL)); - if (json.containsKey(parm_uc)) { protocol = strToDecodeType(json[parm_uc]); } // also support 'protocol' + decode_type_t protocol = decode_type_t::UNKNOWN; + value = root[PSTR(D_JSON_IRHVAC_VENDOR)]; + if (root) { protocol = strToDecodeType(value.getStr()); } + value = root[PSTR(D_JSON_IRHVAC_PROTOCOL)]; + if (root) { protocol = strToDecodeType(value.getStr()); } if (decode_type_t::UNKNOWN == protocol) { return IE_UNSUPPORTED_PROTOCOL; } - UpperCase_P(parm_uc, PSTR(D_JSON_IR_BITS)); - if (json.containsKey(parm_uc)) { bits = json[parm_uc]; } - UpperCase_P(parm_uc, PSTR(D_JSON_IR_REPEAT)); - if (json.containsKey(parm_uc)) { repeat = json[parm_uc]; } - UpperCase_P(parm_uc, PSTR(D_JSON_IR_DATALSB)); // accept LSB values - if (json.containsKey(parm_uc)) { data = reverseBitsInBytes64(strtoull(json[parm_uc], nullptr, 0)); } - UpperCase_P(parm_uc, PSTR(D_JSON_IR_DATA)); // or classical MSB (takes priority) - if (json.containsKey(parm_uc)) { data = strtoull(json[parm_uc], nullptr, 0); } + uint16_t bits = root.getUInt(PSTR(D_JSON_IR_BITS), 0); + uint16_t repeat = root.getUInt(PSTR(D_JSON_IR_REPEAT), 0); + + uint64_t data; + value = root[PSTR(D_JSON_IR_DATALSB)]; + if (root) { data = reverseBitsInBytes64(value.getULong()); } // accept LSB values + value = root[PSTR(D_JSON_IR_DATA)]; + if (value) { data = value.getULong(); } // or classical MSB (takes priority) if (0 == bits) { return IE_SYNTAX_IRSEND; } // check if the IRSend is greater than repeat, but can be overriden with JSON diff --git a/tasmota/xdrv_09_timers.ino b/tasmota/xdrv_09_timers.ino index b9d6d57c7..35503836f 100644 --- a/tasmota/xdrv_09_timers.ino +++ b/tasmota/xdrv_09_timers.ino @@ -337,90 +337,6 @@ void CmndTimer(void) Settings.timer[index -1].data = Settings.timer[XdrvMailbox.payload -1].data; // Copy timer } } else { -#if 0 -//#ifndef USE_RULES -#if defined(USE_RULES)==0 && defined(USE_SCRIPT)==0 - if (devices_present) { -#endif - char dataBufUc[XdrvMailbox.data_len + 1]; - UpperCase(dataBufUc, XdrvMailbox.data); - StaticJsonBuffer<256> jsonBuffer; - JsonObject& root = jsonBuffer.parseObject(dataBufUc); - if (!root.success()) { - Response_P(PSTR("{\"" D_CMND_TIMER "%d\":\"" D_JSON_INVALID_JSON "\"}"), index); // JSON decode failed - error = 1; - } - else { - char parm_uc[10]; - index--; - if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_ARM))].success()) { - Settings.timer[index].arm = (root[parm_uc] != 0); - } -#ifdef USE_SUNRISE - if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_MODE))].success()) { - Settings.timer[index].mode = (uint8_t)root[parm_uc] & 0x03; - } -#endif - if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_TIME))].success()) { - uint16_t itime = 0; - int8_t value = 0; - uint8_t sign = 0; - char time_str[10]; - - strlcpy(time_str, root[parm_uc], sizeof(time_str)); - const char *substr = strtok(time_str, ":"); - if (substr != nullptr) { - if (strchr(substr, '-')) { - sign = 1; - substr++; - } - value = atoi(substr); - if (sign) { value += 12; } // Allow entering timer offset from -11:59 to -00:01 converted to 12:01 to 23:59 - if (value > 23) { value = 23; } - itime = value * 60; - substr = strtok(nullptr, ":"); - if (substr != nullptr) { - value = atoi(substr); - if (value < 0) { value = 0; } - if (value > 59) { value = 59; } - itime += value; - } - } - Settings.timer[index].time = itime; - } - if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_WINDOW))].success()) { - Settings.timer[index].window = (uint8_t)root[parm_uc] & 0x0F; - TimerSetRandomWindow(index); - } - if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_DAYS))].success()) { - // SMTWTFS = 1234567 = 0011001 = 00TW00S = --TW--S - Settings.timer[index].days = 0; - const char *tday = root[parm_uc]; - uint8_t i = 0; - char ch = *tday++; - while ((ch != '\0') && (i < 7)) { - if (ch == '-') { ch = '0'; } - uint8_t mask = 1 << i++; - Settings.timer[index].days |= (ch == '0') ? 0 : mask; - ch = *tday++; - } - } - if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_REPEAT))].success()) { - Settings.timer[index].repeat = (root[parm_uc] != 0); - } - if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_OUTPUT))].success()) { - uint8_t device = ((uint8_t)root[parm_uc] -1) & 0x0F; - Settings.timer[index].device = (device < devices_present) ? device : 0; - } - if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_ACTION))].success()) { - uint8_t action = (uint8_t)root[parm_uc] & 0x03; - Settings.timer[index].power = (devices_present) ? action : 3; // If no devices than only allow rules - } - - index++; - } -//#ifndef USE_RULES -#else //#ifndef USE_RULES #if defined(USE_RULES)==0 && defined(USE_SCRIPT)==0 if (devices_present) { @@ -509,7 +425,6 @@ void CmndTimer(void) index++; } //#ifndef USE_RULES -#endif #if defined(USE_RULES)==0 && defined(USE_SCRIPT)==0 } else { Response_P(PSTR("{\"" D_CMND_TIMER "%d\":\"" D_JSON_TIMER_NO_DEVICE "\"}"), index); // No outputs defined so nothing to control diff --git a/tasmota/xdrv_10_rules.ino b/tasmota/xdrv_10_rules.ino index 7377585c5..2938e2d41 100644 --- a/tasmota/xdrv_10_rules.ino +++ b/tasmota/xdrv_10_rules.ino @@ -497,40 +497,6 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule) rule_name = rule_name.substring(0, pos); // "SUBTYPE1#CURRENT" } -#if 0 -// StaticJsonBuffer<1280> jsonBuf; // Was 1024 until 20200811 - DynamicJsonBuffer jsonBuf; // Was static until 20200812 - JsonObject &root = jsonBuf.parseObject(event); - if (!root.success()) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL: Event too long (%d)"), event.length()); - return false; - } // No valid JSON data - JsonObject *obj = &root; - String subtype; - uint32_t i = 0; - while ((pos = rule_name.indexOf("#")) > 0) { // "SUBTYPE1#SUBTYPE2#CURRENT" - subtype = rule_name.substring(0, pos); - const JsonVariant & val = GetCaseInsensitive(*obj, subtype.c_str()); - if (nullptr == &val) { return false; } // not found - obj = &(val.as()); - if (!obj->success()) { return false; } // not a JsonObject - - rule_name = rule_name.substring(pos +1); - if (i++ > 10) { return false; } // Abandon possible loop - - yield(); - } - - const JsonVariant & val = GetCaseInsensitive(*obj, rule_name.c_str()); - if (nullptr == &val) { return false; } // last level not found - const char* str_value; - if (rule_name_idx) { - str_value = (*obj)[rule_name][rule_name_idx -1]; // "CURRENT[1]" - } else { - str_value = (*obj)[rule_name]; // "CURRENT" - } -#else - String buf = event; // copy the string into a new buffer that will be modified JsonParser parser((char*)buf.c_str()); JsonParserObject obj = parser.getRootObject(); @@ -563,8 +529,6 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule) } else { str_value = val.getStr(); // "CURRENT" } -#endif - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL: Name %s, Value |%s|, TrigCnt %d, TrigSt %d, Source %s, Json %s"), // rule_name.c_str(), rule_svalue, Rules.trigger_count[rule_set], bitRead(Rules.triggers[rule_set], Rules.trigger_count[rule_set]), event.c_str(), (str_value) ? str_value : "none"); From 2b160912f550cb661875b3725adb4def8b0fd6d9 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 24 Sep 2020 12:07:23 +0200 Subject: [PATCH 025/119] Fix Shelly 2.5 higher temperature Fix Shelly 2.5 higher temperature regression from 8.2.0.1 (#7991) --- RELEASENOTES.md | 3 +++ tasmota/CHANGELOG.md | 3 +++ tasmota/xnrg_07_ade7953.ino | 3 ++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index bc53f4063..89c68c062 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -61,6 +61,9 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Fix crash in ``ZbRestore`` - Fix reset BMP sensors when executing command ``SaveData`` and define USE_DEEPSLEEP enabled (#9300) - Fix ``status 0`` message when using define USE_MQTT_TLS due to small log buffer (#9305) +- Fix ``status 13`` exception 9 when more than one shutter is configured +- Fix ``status 13`` json message +- Fix Shelly 2.5 higher temperature regression from 8.2.0.1 (#7991) - Change replace ArduinoJson with JSMN for JSON parsing - Add command ``SetOption110 1`` to disable Zigbee auto-config when pairing new devices - Add command ``SetOption111 1`` to enable frequency output for buzzer GPIO (#8994) diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index 5ee365800..93e8da613 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -8,6 +8,9 @@ - Fix crash in ``ZbRestore`` - Fix reset BMP sensors when executing command ``SaveData`` and define USE_DEEPSLEEP enabled (#9300) - Fix ``status 0`` message when using define USE_MQTT_TLS due to small log buffer (#9305) +- Fix ``status 13`` exception 9 when more than one shutter is configured +- Fix ``status 13`` json message +- Fix Shelly 2.5 higher temperature regression from 8.2.0.1 (#7991) - Change replace ArduinoJson with JSMN for JSON parsing - Add command ``SetOption110 1`` to disable Zigbee auto-config when pairing new devices - Add command ``SetOption111 1`` to enable frequency output for buzzer GPIO (#8994) diff --git a/tasmota/xnrg_07_ade7953.ino b/tasmota/xnrg_07_ade7953.ino index 3d7b405d5..beaea9635 100644 --- a/tasmota/xnrg_07_ade7953.ino +++ b/tasmota/xnrg_07_ade7953.ino @@ -199,7 +199,8 @@ void Ade7953EnergyEverySecond(void) void Ade7953DrvInit(void) { - if (PinUsed(GPIO_ADE7953_IRQ)) { // Irq on GPIO16 is not supported... + if (PinUsed(GPIO_ADE7953_IRQ)) { // Irq on GPIO16 is not supported... + pinMode(Pin(GPIO_ADE7953_IRQ), INPUT); // Related to resetPins() - Must be set to input delay(100); // Need 100mS to init ADE7953 if (I2cSetDevice(ADE7953_ADDR)) { if (HLW_PREF_PULSE == Settings.energy_power_calibration) { From 9722eba887a5f29299dd3af8524fe0971617f925 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 24 Sep 2020 14:40:43 +0200 Subject: [PATCH 026/119] Added EZSP 6.8 --- .../fw_zbbridge/ncp-uart-sw-6.8.0.1_115200.ota | Bin 0 -> 204640 bytes tools/fw_zbbridge/readme.txt | 1 + 2 files changed, 1 insertion(+) create mode 100644 tools/fw_zbbridge/ncp-uart-sw-6.8.0.1_115200.ota diff --git a/tools/fw_zbbridge/ncp-uart-sw-6.8.0.1_115200.ota b/tools/fw_zbbridge/ncp-uart-sw-6.8.0.1_115200.ota new file mode 100644 index 0000000000000000000000000000000000000000..cac52942e1d9212dc0e79e24c3e8cb6f90e415b3 GIT binary patch literal 204640 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

J0=TJ9L(n835kUo*Xpp&l*By5csN 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 Date: Thu, 24 Sep 2020 15:23:51 +0200 Subject: [PATCH 027/119] Move domoticz from ArduinoJson to JSMN --- tasmota/xdrv_07_domoticz.ino | 95 ++++++++++++------------------------ 1 file changed, 32 insertions(+), 63 deletions(-) diff --git a/tasmota/xdrv_07_domoticz.ino b/tasmota/xdrv_07_domoticz.ino index 2ea842491..0ba9f2764 100644 --- a/tasmota/xdrv_07_domoticz.ino +++ b/tasmota/xdrv_07_domoticz.ino @@ -189,33 +189,13 @@ void DomoticzMqttSubscribe(void) { } } -/* - * ArduinoJSON Domoticz Switch entry used to calculate jsonBuf: JSON_OBJECT_SIZE(11) + 129 = 313 -{ - "Battery" : 255, - "RSSI" : 12, - "dtype" : "Light/Switch", - "id" : "000140E7", - "idx" : 159, - "name" : "Sonoff1", - "nvalue" : 1, - "stype" : "Switch", - "svalue1" : "0", - "switchType" : "Dimmer", - "unit" : 1 -} - * Fail on this one -{ - "LastUpdate" : "2018-10-02 20:39:45", - "Name" : "Sfeerverlichting", - "Status" : "Off", - "Timers" : "true", - "Type" : "Group", - "idx" : "2" -} -*/ - bool DomoticzMqttData(void) { +/* + XdrvMailbox.topic = topic; + XdrvMailbox.index = strlen(topic); + XdrvMailbox.data = (char*)data; + XdrvMailbox.data_len = data_len; +*/ domoticz_update_flag = true; if (strncasecmp_P(XdrvMailbox.topic, PSTR(DOMOTICZ_OUT_TOPIC), strlen(DOMOTICZ_OUT_TOPIC)) != 0) { @@ -226,19 +206,16 @@ bool DomoticzMqttData(void) { if (XdrvMailbox.data_len < 20) { return true; // No valid data } - StaticJsonBuffer<400> jsonBuf; - JsonObject& domoticz = jsonBuf.parseObject(XdrvMailbox.data); - if (!domoticz.success()) { + JsonParser parser(XdrvMailbox.data); + JsonParserObject domoticz = parser.getRootObject(); + if (!domoticz) { return true; // To much or invalid data } // if (strcmp_P(domoticz["dtype"],PSTR("Light/Switch"))) { // return true; // } - uint32_t idx = domoticz["idx"]; - int16_t nvalue = -1; - if (domoticz.containsKey("nvalue")) { - nvalue = domoticz["nvalue"]; - } + uint32_t idx = domoticz.getUInt(PSTR("idx"), 0); + int16_t nvalue = domoticz.getInt(PSTR("nvalue"), -1); AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_DOMOTICZ "idx %d, nvalue %d"), idx, nvalue); @@ -247,19 +224,18 @@ bool DomoticzMqttData(void) { uint8_t maxdev = (devices_present > MAX_DOMOTICZ_IDX) ? MAX_DOMOTICZ_IDX : devices_present; for (uint32_t i = 0; i < maxdev; i++) { if (idx == Settings.domoticz_relay_idx[i]) { - bool iscolordimmer = strcmp_P(domoticz["dtype"],PSTR("Color Switch")) == 0; - bool isShutter = strcmp_P(domoticz["dtype"],PSTR("Light/Switch")) == 0 & strncmp_P(domoticz["switchType"],PSTR("Blinds"), 6) == 0; + bool iscolordimmer = strcmp_P(domoticz.getStr(PSTR("dtype")), PSTR("Color Switch")) == 0; + bool isShutter = strcmp_P(domoticz.getStr(PSTR("dtype")), PSTR("Light/Switch")) == 0 & strncmp_P(domoticz.getStr(PSTR("switchType")),PSTR("Blinds"), 6) == 0; char stemp1[10]; snprintf_P(stemp1, sizeof(stemp1), PSTR("%d"), i +1); #ifdef USE_SONOFF_IFAN if (IsModuleIfan() && (1 == i)) { // Idx 2 is fanspeed - uint8_t svalue = 0; - if (domoticz.containsKey("svalue1")) { - svalue = domoticz["svalue1"]; - } else { - return true; // Invalid data + JsonParserToken svalue_tok = domoticz[PSTR("svalue1")]; + if (!svalue_tok) { + return true; } + uint8_t svalue = svalue_tok.getUInt(); svalue = (nvalue == 2) ? svalue / 10 : 0; if (GetFanspeed() == svalue) { return true; // Stop loop as already set @@ -275,14 +251,10 @@ bool DomoticzMqttData(void) { #ifdef USE_SHUTTER if (isShutter) { - if (domoticz.containsKey("nvalue")) { - nvalue = domoticz["nvalue"]; - } + // TODO this code seems redundant, nvalue is already retrieved from above + nvalue = domoticz.getUInt(PSTR("nvalue", -1)); - uint8_t position = 0; - if (domoticz.containsKey("svalue1")) { - position = domoticz["svalue1"]; - } + uint8_t position = domoticz.getUInt(PSTR("svalue1"), 0); if (nvalue != 2) { position = nvalue == 0 ? 0 : 100; } @@ -297,19 +269,16 @@ bool DomoticzMqttData(void) { #ifdef USE_LIGHT if (iscolordimmer && 10 == nvalue) { // Color_SetColor // https://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s#Set_a_light_to_a_certain_color_or_color_temperature - JsonObject& color = domoticz["Color"]; - uint16_t level = nvalue = domoticz["svalue1"]; - uint16_t r = color["r"]; r = r * level / 100; - uint16_t g = color["g"]; g = g * level / 100; - uint16_t b = color["b"]; b = b * level / 100; - uint16_t cw = color["cw"]; cw = cw * level / 100; - uint16_t ww = color["ww"]; ww = ww * level / 100; - uint16_t m = 0; - uint16_t t = 0; - if (color.containsKey("m")) { - m = color["m"]; - t = color["t"]; - } + JsonParserObject color = domoticz[PSTR("Color")].getObject(); + // JsonObject& color = domoticz["Color"]; + uint16_t level = nvalue = domoticz.getUInt(PSTR("svalue1"), 0); + uint16_t r = color.getUInt(PSTR("r"), 0) * level / 100; + uint16_t g = color.getUInt(PSTR("g"), 0) * level / 100; + uint16_t b = color.getUInt(PSTR("b"), 0) * level / 100; + uint16_t cw = color.getUInt(PSTR("cw"), 0) * level / 100; + uint16_t ww = color.getUInt(PSTR("ww"), 0) * level / 100; + uint16_t m = color.getUInt(PSTR("m"), 0); + uint16_t t = color.getUInt(PSTR("t"), 0); if (2 == m) { // White with color temperature. Valid fields: t snprintf_P(XdrvMailbox.topic, XdrvMailbox.index, PSTR("/" D_CMND_BACKLOG)); snprintf_P(XdrvMailbox.data, XdrvMailbox.data_len, PSTR(D_CMND_COLORTEMPERATURE " %d;" D_CMND_DIMMER " %d"), changeUIntScale(t, 0, 255, CT_MIN, CT_MAX), level); @@ -321,8 +290,8 @@ bool DomoticzMqttData(void) { } else if ((!iscolordimmer && 2 == nvalue) || // gswitch_sSetLevel (iscolordimmer && 15 == nvalue)) { // Color_SetBrightnessLevel - if (domoticz.containsKey("svalue1")) { - nvalue = domoticz["svalue1"]; + if (domoticz[PSTR("svalue1")]) { + nvalue = domoticz.getUInt(PSTR("svalue1"), 0); } else { return true; // Invalid data } From e7db226b48e6907c09419f6617acd7a8f926bd66 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 24 Sep 2020 16:40:03 +0200 Subject: [PATCH 028/119] Move display from ArduinoJson to JSMN --- tasmota/xdrv_13_display.ino | 47 +++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/tasmota/xdrv_13_display.ino b/tasmota/xdrv_13_display.ino index 7b5b34054..1042cc463 100644 --- a/tasmota/xdrv_13_display.ino +++ b/tasmota/xdrv_13_display.ino @@ -1165,50 +1165,45 @@ void DisplayAnalyzeJson(char *topic, char *json) // tele/wemos5/SENSOR {"Time":"2017-09-20T11:53:53","SHT1X":{"Temperature":20.1,"Humidity":58.9},"HTU21":{"Temperature":20.7,"Humidity":58.5},"BMP280":{"Temperature":21.6,"Pressure":1020.3},"TempUnit":"C"} // tele/th1/SENSOR {"Time":"2017-09-20T11:54:48","DS18B20":{"Temperature":49.7},"TempUnit":"C"} - -// char jsonStr[MESSZ]; -// strlcpy(jsonStr, json, sizeof(jsonStr)); // Save original before destruction by JsonObject String jsonStr = json; // Move from stack to heap to fix watchdogs (20180626) - StaticJsonBuffer<1024> jsonBuf; - JsonObject &root = jsonBuf.parseObject(jsonStr); - if (root.success()) { + JsonParser parser((char*)jsonStr.c_str()); + JsonParserObject root = parser.getRootObject(); + if (root) { // did JSON parsing went ok? - const char *unit; - unit = root[D_JSON_TEMPERATURE_UNIT]; + const char *unit = root.getStr(PSTR(D_JSON_TEMPERATURE_UNIT), nullptr); // nullptr if not found if (unit) { snprintf_P(disp_temp, sizeof(disp_temp), PSTR("%s"), unit); // C or F } - unit = root[D_JSON_PRESSURE_UNIT]; + unit = root.getStr(PSTR(D_JSON_PRESSURE_UNIT), nullptr); // nullptr if not found if (unit) { snprintf_P(disp_pres, sizeof(disp_pres), PSTR("%s"), unit); // hPa or mmHg } - - for (JsonObject::iterator it = root.begin(); it != root.end(); ++it) { - JsonVariant value = it->value; - if (value.is()) { - JsonObject& Object2 = value; - for (JsonObject::iterator it2 = Object2.begin(); it2 != Object2.end(); ++it2) { - JsonVariant value2 = it2->value; - if (value2.is()) { - JsonObject& Object3 = value2; - for (JsonObject::iterator it3 = Object3.begin(); it3 != Object3.end(); ++it3) { - const char* value = it3->value; - if (value != nullptr) { // "DHT11":{"Temperature":null,"Humidity":null} - ignore null as it will raise exception 28 - DisplayJsonValue(topic, it->key, it3->key, value); // Sensor 56% + for (auto key1 : root) { + JsonParserToken value1 = key1.getValue(); + if (value1.isObject()) { + JsonParserObject Object2 = value1.getObject(); + for (auto key2 : Object2) { + JsonParserToken value2 = key2.getValue(); + if (value2.isObject()) { + JsonParserObject Object3 = value2.getObject(); + for (auto key3 : Object3) { + const char* value3 = key3.getValue().getStr(nullptr); + if (value3 != nullptr) { // "DHT11":{"Temperature":null,"Humidity":null} - ignore null as it will raise exception 28 + DisplayJsonValue(topic, key1.getStr(), key3.getStr(), value3); // Sensor 56% } } } else { - const char* value = it2->value; + const char* value = value2.getStr(nullptr); if (value != nullptr) { - DisplayJsonValue(topic, it->key, it2->key, value); // Sensor 56% + DisplayJsonValue(topic, key1.getStr(), key2.getStr(), value); // Sensor 56% } } } } else { - const char* value = it->value; + const char* value = value1.getStr(nullptr); if (value != nullptr) { - DisplayJsonValue(topic, it->key, it->key, value); // Topic 56% + DisplayJsonValue(topic, key1.getStr(), key1.getStr(), value); // Topic 56% } } } From cac00a7efdac97ca63759d679e6510b920244528 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 24 Sep 2020 17:13:32 +0200 Subject: [PATCH 029/119] Fix domoticz/shutter compile error --- tasmota/xdrv_07_domoticz.ino | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/tasmota/xdrv_07_domoticz.ino b/tasmota/xdrv_07_domoticz.ino index 0ba9f2764..0f4dafeb9 100644 --- a/tasmota/xdrv_07_domoticz.ino +++ b/tasmota/xdrv_07_domoticz.ino @@ -236,7 +236,7 @@ bool DomoticzMqttData(void) { return true; } uint8_t svalue = svalue_tok.getUInt(); - svalue = (nvalue == 2) ? svalue / 10 : 0; + svalue = (2 == nvalue) ? svalue / 10 : 0; if (GetFanspeed() == svalue) { return true; // Stop loop as already set } @@ -249,14 +249,10 @@ bool DomoticzMqttData(void) { } else #endif // USE_SONOFF_IFAN #ifdef USE_SHUTTER - if (isShutter) - { - // TODO this code seems redundant, nvalue is already retrieved from above - nvalue = domoticz.getUInt(PSTR("nvalue", -1)); - + if (isShutter) { uint8_t position = domoticz.getUInt(PSTR("svalue1"), 0); if (nvalue != 2) { - position = nvalue == 0 ? 0 : 100; + position = (0 == nvalue) ? 0 : 100; } snprintf_P(XdrvMailbox.topic, TOPSZ, PSTR("/" D_PRFX_SHUTTER D_CMND_SHUTTER_POSITION)); From a16b2f01aeaab9d4a1d33a17206c6c4bb2f476ed Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 24 Sep 2020 18:45:01 +0200 Subject: [PATCH 030/119] JSMN iterator fix --- lib/jsmn-shadinger-1.0/src/JsonParser.cpp | 9 ++++++--- lib/jsmn-shadinger-1.0/src/JsonParser.h | 6 +++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/jsmn-shadinger-1.0/src/JsonParser.cpp b/lib/jsmn-shadinger-1.0/src/JsonParser.cpp index 04ff03fe8..22d89424e 100644 --- a/lib/jsmn-shadinger-1.0/src/JsonParser.cpp +++ b/lib/jsmn-shadinger-1.0/src/JsonParser.cpp @@ -178,7 +178,7 @@ JsonParserArray::const_iterator::const_iterator(const JsonParserArray t): tok(t) } JsonParserArray::const_iterator JsonParserArray::const_iterator::const_iterator::operator++() { - if (remaining == 0) { tok.t = nullptr; } + if (remaining <= 1) { tok.t = nullptr; } else { remaining--; tok.skipToken(); // munch value @@ -234,7 +234,7 @@ JsonParserObject::const_iterator::const_iterator(const JsonParserObject t): tok( } JsonParserObject::const_iterator JsonParserObject::const_iterator::operator++() { - if (remaining == 0) { tok.t = nullptr; } + if (remaining <= 1) { tok.t = nullptr; } else { remaining--; tok.nextOne(); // munch key @@ -336,7 +336,7 @@ float JsonParserToken::getFloat(float val) const { const char * JsonParserToken::getStr(const char * val) const { if (t->type == JSMN_INVALID) { return val; } if (t->type == JSMN_NULL) return ""; - return (t->type >= JSMN_STRING) ? &k_current_json_buffer[t->start] : ""; + return (t->type >= JSMN_STRING) ? &k_current_json_buffer[t->start] : val; } @@ -467,6 +467,9 @@ JsonParserToken JsonParserObject::operator[](const char * needle) const { return JsonParserToken(&token_bad); } +JsonParserToken JsonParserObject::operator[](const String & needle) const { + return (*this)[needle.c_str()]; +} JsonParserToken JsonParserObject::findStartsWith(const char * needle) const { // key can be in PROGMEM diff --git a/lib/jsmn-shadinger-1.0/src/JsonParser.h b/lib/jsmn-shadinger-1.0/src/JsonParser.h index a59227ec4..85d401407 100644 --- a/lib/jsmn-shadinger-1.0/src/JsonParser.h +++ b/lib/jsmn-shadinger-1.0/src/JsonParser.h @@ -23,6 +23,7 @@ #include "jsmn.h" #include #include +#include // #define strcmp_P(x, y) strcmp(x,y) // #define strcasecmp_P(x,y) strcasecmp(x,y) @@ -146,10 +147,12 @@ public: class JsonParserObject : public JsonParserToken { public: JsonParserObject(const jsmntok_t * token); - explicit JsonParserObject(const JsonParserToken token); + JsonParserObject(const JsonParserToken token); + JsonParserObject() : JsonParserToken() { } // find key with name, case-insensitive, '?' matches any key. Returns Invalid Token if not found JsonParserToken operator[](const char * needle) const; + JsonParserToken operator[](const String & needle) const; // find a key starting with `needle`, case insensitive JsonParserToken findStartsWith(const char * needle) const; // find a key, case-insensitive, return nullptr if not found (instead of "") @@ -190,6 +193,7 @@ class JsonParserArray : public JsonParserToken { public: JsonParserArray(const jsmntok_t * token); JsonParserArray(const JsonParserToken token); + JsonParserArray() : JsonParserToken() { } // get the element if index `i` from 0 to `size() - 1` JsonParserToken operator[](int32_t i) const; From 0b064961585435c1427a1296d2d969b7fc3263e2 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 24 Sep 2020 19:15:07 +0200 Subject: [PATCH 031/119] Zigbee send message when PermitJoin expires --- tasmota/xdrv_23_zigbee_2_devices.ino | 1 + tasmota/xdrv_23_zigbee_7_statemachine.ino | 1 + tasmota/xdrv_23_zigbee_8_parsers.ino | 23 ++++++++++++----------- tasmota/xdrv_23_zigbee_A_impl.ino | 9 +++++++++ 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/tasmota/xdrv_23_zigbee_2_devices.ino b/tasmota/xdrv_23_zigbee_2_devices.ino index e68342da6..0067744d3 100644 --- a/tasmota/xdrv_23_zigbee_2_devices.ino +++ b/tasmota/xdrv_23_zigbee_2_devices.ino @@ -163,6 +163,7 @@ typedef enum Z_Def_Category { Z_CAT_READ_ATTR, // Attribute reporting, either READ_ATTRIBUTE or REPORT_ATTRIBUTE, we coalesce all attributes reported if we can Z_CAT_VIRTUAL_OCCUPANCY, // Creation of a virtual attribute, typically after a time-out. Ex: Aqara presence sensor Z_CAT_REACHABILITY, // timer set to measure reachability of device, i.e. if we don't get an answer after 1s, it is marked as unreachable (for Alexa) + Z_CAT_PERMIT_JOIN, // timer to signal the end of the PermitJoin period // Below will clear based on device + cluster pair. Z_CLEAR_DEVICE_CLUSTER, Z_CAT_READ_CLUSTER, diff --git a/tasmota/xdrv_23_zigbee_7_statemachine.ino b/tasmota/xdrv_23_zigbee_7_statemachine.ino index ee9bfd19a..8bfe785d0 100644 --- a/tasmota/xdrv_23_zigbee_7_statemachine.ino +++ b/tasmota/xdrv_23_zigbee_7_statemachine.ino @@ -28,6 +28,7 @@ const uint8_t ZIGBEE_STATUS_STARTING = 3; // Starting CC2530 as co const uint8_t ZIGBEE_STATUS_PERMITJOIN_CLOSE = 20; // Disable PermitJoin const uint8_t ZIGBEE_STATUS_PERMITJOIN_OPEN_60 = 21; // Enable PermitJoin for 60 seconds const uint8_t ZIGBEE_STATUS_PERMITJOIN_OPEN_XX = 22; // Enable PermitJoin until next boot +const uint8_t ZIGBEE_STATUS_PERMITJOIN_ERROR = 23; // Enable PermitJoin until next boot const uint8_t ZIGBEE_STATUS_DEVICE_ANNOUNCE = 30; // Device announces its address const uint8_t ZIGBEE_STATUS_NODE_DESC = 31; // Node descriptor const uint8_t ZIGBEE_STATUS_ACTIVE_EP = 32; // Endpoints descriptor diff --git a/tasmota/xdrv_23_zigbee_8_parsers.ino b/tasmota/xdrv_23_zigbee_8_parsers.ino index 27eb14801..9952ac564 100644 --- a/tasmota/xdrv_23_zigbee_8_parsers.ino +++ b/tasmota/xdrv_23_zigbee_8_parsers.ino @@ -166,21 +166,22 @@ int32_t EZ_RouteError(int32_t res, const class SBuffer &buf) { int32_t EZ_PermitJoinRsp(int32_t res, const class SBuffer &buf) { uint8_t status = buf.get8(2); - Response_P(PSTR("{\"" D_JSON_ZIGBEE_STATE "\":{" - "\"Status\":%d,\"Message\":\"%s"), - (0 == status) ? ZIGBEE_STATUS_PERMITJOIN_OPEN_60 : ZIGBEE_STATUS_PERMITJOIN_CLOSE, - (0 == status) ? PSTR("Pairing mode enabled") : PSTR("Pairing mode error") - ); - if (status) { - ResponseAppend_P("0x%02X", status); + if (status) { // only report if there is an error + Response_P(PSTR("{\"" D_JSON_ZIGBEE_STATE "\":{\"Status\":23,\"Message\":\"Pairing mode error 0x%02X\"}}"), status); + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_ZIGBEE_STATE)); } - ResponseAppend_P(PSTR("\"}}")); - - MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_ZIGBEE_STATE)); - return -1; } +// +// Special case: EZSP does not send an event for PermitJoin end, so we generate a synthetic one +// +void Z_PermitJoinDisable(uint16_t shortaddr, uint16_t groupaddr, uint16_t cluster, uint8_t endpoint, uint32_t value) { + Response_P(PSTR("{\"" D_JSON_ZIGBEE_STATE "\":{\"Status\":20,\"Message\":\"Pairing mode disabled\"}}")); + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_ZIGBEE_STATE)); +} + + // // Received MessageSentHandler // diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index 90cc4e28c..498e17c85 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -1152,6 +1152,15 @@ void CmndZbPermitJoin(void) { buf.add8(duration); buf.add8(0x01); // TC_Significance - This field shall always have a value of 1, indicating a request to change the Trust Center policy. If a frame is received with a value of 0, it shall be treated as having a value of 1. EZ_SendZDO(0xFFFC, ZDO_Mgmt_Permit_Joining_req, buf.buf(), buf.len()); + + // Set Timer after the end of the period, and reset a non-expired previous timer + if (duration > 0) { + // Log pairing mode enabled + Response_P(PSTR("{\"" D_JSON_ZIGBEE_STATE "\":{\"Status\":21,\"Message\":\"Pairing mode enabled\"}}")); + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_ZIGBEE_STATE)); + } + // always register timer for disable, might happen at next tick + zigbee_devices.setTimer(0x0000 /* coordinator */, 0 /* group addr*/, duration * 1000, 0, 0 /* endpoint */, Z_CAT_PERMIT_JOIN, 0 /* value */, &Z_PermitJoinDisable); #endif // USE_ZIGBEE_EZSP ResponseCmndDone(); From ac81a0609b1de4ce55a26b7692148327c68f7b94 Mon Sep 17 00:00:00 2001 From: Federico Leoni Date: Thu, 24 Sep 2020 19:16:26 -0300 Subject: [PATCH 032/119] JSMN and code check --- tasmota/xdrv_12_home_assistant.ino | 238 ++++++++++++++--------------- 1 file changed, 118 insertions(+), 120 deletions(-) diff --git a/tasmota/xdrv_12_home_assistant.ino b/tasmota/xdrv_12_home_assistant.ino index a9673eb38..75811b994 100644 --- a/tasmota/xdrv_12_home_assistant.ino +++ b/tasmota/xdrv_12_home_assistant.ino @@ -27,14 +27,15 @@ const char kHAssJsonSensorTypes[] PROGMEM = D_JSON_APPARENT_POWERUSAGE "|Battery|" D_JSON_CURRENT "|" D_JSON_DISTANCE "|" D_JSON_FREQUENCY "|" D_JSON_HUMIDITY "|" D_JSON_ILLUMINANCE "|" D_JSON_MOISTURE "|PB0.3|PB0.5|PB1|PB2.5|PB5|PB10|PM1|PM2.5|PM10|" D_JSON_POWERFACTOR "|" D_JSON_POWERUSAGE "|" D_JSON_TOTAL_START_TIME "|" D_JSON_REACTIVE_POWERUSAGE "|" D_JSON_TODAY "|" D_JSON_TOTAL "|" D_JSON_VOLTAGE "|" D_JSON_WEIGHT "|" D_JSON_YESTERDAY "|" - D_JSON_CO2 "|" D_JSON_ECO2 "|" D_JSON_TVOC "|" D_COLOR_RED "|" D_COLOR_GREEN "|" D_COLOR_BLUE"|" D_CCT "|" D_PROXIMITY "|Ambient|"; + D_JSON_CO2 "|" D_JSON_ECO2 "|" D_JSON_TVOC "|" D_COLOR_RED "|" D_COLOR_GREEN "|" D_COLOR_BLUE"|" D_CCT "|" D_PROXIMITY "|Ambient|" + D_JSON_TOTAL D_CMND_TARIFF "|" D_JSON_EXPORT D_CMND_TARIFF "|"; const char kHAssJsonSensorUnits[] PROGMEM = "||||" "VA|%|A|Cm|Hz|%|LX|" "%|ppd|ppd|ppd|ppd|ppd|ppd|µg/m³|µg/m³|µg/m³|Cos φ|W| |" "VAr|kWh|kWh|V|Kg|kWh|" - "ppm|ppm|ppb|R|G|B|" D_UNIT_KELVIN "| |LX|"; + "ppm|ppm|ppb|R|G|B|" D_UNIT_KELVIN "| |LX| | |"; const char kHAssJsonSensorDevCla[] PROGMEM = "dev_cla\":\"temperature|ic\":\"mdi:weather-rainy|dev_cla\":\"pressure|dev_cla\":\"pressure|" @@ -43,8 +44,8 @@ const char kHAssJsonSensorDevCla[] PROGMEM = "ic\":\"mdi:air-filter|ic\":\"mdi:air-filter|ic\":\"mdi:air-filter|ic\":\"mdi:alpha-f-circle-outline|dev_cla\":\"power|ic\":\"mdi:progress-clock|" "dev_cla\":\"power|dev_cla\":\"power|dev_cla\":\"power|ic\":\"mdi:alpha-v-circle-outline|ic\":\"mdi:scale|dev_cla\":\"power|" "ic\":\"mdi:molecule-co2|ic\":\"mdi:molecule-co2|ic\":\"mdi:air-filter|" - "ic\":\"mdi:palette|ic\":\"mdi:palette|ic\":\"mdi:palette|ic\":\"mdi:temperature-kelvin|ic\":\"mdi:ruler|dev_cla\":\"illuminance|"; - //"ic\":\"mdi:weather-windy|ic\":\"mdi:weather-windy|ic\":\"mdi:weather-windy|ic\":\"mdi:weather-windy|" + "ic\":\"mdi:palette|ic\":\"mdi:palette|ic\":\"mdi:palette|ic\":\"mdi:temperature-kelvin|ic\":\"mdi:ruler|dev_cla\":\"illuminance|" + "ic\":\"mdi:cash|ic\":\"mdi:cash-plus|"; // List of sensors ready for discovery const char HASS_DISCOVER_BASE[] PROGMEM = @@ -195,30 +196,6 @@ const char HASS_DISCOVER_DEVICE[] PROGMEM = // Basic par "\"30\":%d,\"37\":%d,\"68\":%d,\"73\":%d,\"80\":%d}," "\"lt_st\":%d,\"ver\":1}"; // Light SubType, and Discovery version -#define D_CMND_HADIS "HaDis" - -const char kHAssCommand[] PROGMEM = "|" // No prefix - D_CMND_HADIS; - -void (* const HAssCommand[])(void) PROGMEM = { &CmndHaDis }; - -void CmndHaDis(void) { // New discovery manager. Stored on E98 in settings.h - - uint8_t index = XdrvMailbox.index; - uint8_t payload1 = XdrvMailbox.payload; - if (XdrvMailbox.data_len > 0 && (XdrvMailbox.payload > 0 || XdrvMailbox.payload <= 2)) { - if (2 == XdrvMailbox.payload) { payload1 = 0; } - char scmnd[20]; - if (Settings.flag.hass_discovery != payload1) { - snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_SETOPTION "19 %d"), payload1); - ExecuteCommand(scmnd, SRC_IGNORE); - } - Settings.hass_new_discovery = XdrvMailbox.payload; - - } - Response_P(PSTR("{\"" D_CMND_HADIS "\":\"%d\"}"), Settings.hass_new_discovery); -} - void NewHAssDiscovery(void) { char stopic[TOPSZ]; @@ -239,21 +216,22 @@ void NewHAssDiscovery(void) } stemp3[0] = '\0'; - uint32_t maxrl = (devices_present > MAX_RELAYS) ? MAX_RELAYS : (!devices_present) ? 1 : devices_present; - for (uint32_t i = 0; i < MAX_RELAYS; i++) { - snprintf_P(stemp3, sizeof(stemp3), PSTR("%s%s%d"), stemp3, (i > 0 ? "," : ""), (i < maxfn) ? (Settings.flag.hass_light ? 2 : 1) : 0); + snprintf_P(stemp3, sizeof(stemp3), PSTR("%s%s%d"), stemp3, (i > 0 ? "," : ""), (i < maxrl) ? (Settings.flag.hass_light ? 2 : 1) : 0); } stemp4[0] = '\0'; - //stemp6[0] = '\0'; + // Enable Discovery for Switches only if SwitchTopic is set to a custom name + auto discover_switches = (KeyTopicActive(1) && strcmp(SettingsText(SET_MQTT_SWITCH_TOPIC), mqtt_topic)); for (uint32_t i = 0; i < MAX_SWITCHES; i++) { - snprintf_P(stemp4, sizeof(stemp4), PSTR("%s%s%d"), stemp4, (i > 0 ? "," : ""), PinUsed(GPIO_SWT1, i) ? Settings.switchmode[i] : -1); + snprintf_P(stemp4, sizeof(stemp4), PSTR("%s%s%d"), stemp4, (i > 0 ? "," : ""), (PinUsed(GPIO_SWT1, i) & discover_switches) ? Settings.switchmode[i] : -1); } + stemp5[0] = '\0'; + // Enable Discovery for Buttons only if SetOption73 is enabled for (uint32_t i = 0; i < MAX_KEYS; i++) { - snprintf_P(stemp5, sizeof(stemp5), PSTR("%s%s%d"), stemp5, (i > 0 ? "," : ""), PinUsed(GPIO_KEY1, i)); + snprintf_P(stemp5, sizeof(stemp5), PSTR("%s%s%d"), stemp5, (i > 0 ? "," : ""), (PinUsed(GPIO_KEY1, i) & Settings.flag3.mqtt_buttons)); } mqtt_data[0] = '\0'; // Clear retained message @@ -261,18 +239,31 @@ void NewHAssDiscovery(void) // Full 12 chars MAC address as ID String mac_address = WiFi.macAddress(); mac_address.replace(":", ""); - String mac_part = mac_address.substring(0); + //String mac_part = mac_address.substring(0); snprintf_P(unique_id, sizeof(unique_id), PSTR("%s"), mac_address.c_str()); - snprintf_P(stopic, sizeof(stopic), PSTR(HOME_ASSISTANT_DISCOVERY_PREFIX "/discovery/%s/config"), unique_id); + //snprintf_P(stopic, sizeof(stopic), PSTR(HOME_ASSISTANT_DISCOVERY_PREFIX "/discovery/%s/config"), unique_id); + snprintf_P(stopic, sizeof(stopic), PSTR("tasmota/discovery/%s/config"), unique_id); GetTopic_P(state_topic, TELE, mqtt_topic, PSTR(D_RSLT_HASS_STATE)); - Response_P(HASS_DISCOVER_DEVICE, WiFi.localIP().toString().c_str(), SettingsText(SET_DEVICENAME), - stemp2, my_hostname, unique_id, ModuleName().c_str(), GetStateText(0), GetStateText(1), GetStateText(2), GetStateText(3), - my_version, mqtt_topic, MQTT_FULLTOPIC, SUB_PREFIX, PUB_PREFIX, PUB_PREFIX2, stemp3, stemp4, stemp5, Settings.flag.button_swap, - Settings.flag.button_single, Settings.flag.decimal_text, Settings.flag.not_power_linked, Settings.flag.hass_light, - light_controller.isCTRGBLinked(), Settings.flag3.pwm_multi_channels, Settings.flag3.mqtt_buttons, Settings.flag3.shutter_mode, Light.subtype); + // Send empty message if new discovery is disabled + masterlog_level = 4; // Hide topic on clean and remove use weblog 4 to see it + if (!Settings.flag.hass_discovery) { + Response_P(HASS_DISCOVER_DEVICE, WiFi.localIP().toString().c_str(), SettingsText(SET_DEVICENAME), + stemp2, my_hostname, unique_id, ModuleName().c_str(), GetStateText(0), GetStateText(1), GetStateText(2), GetStateText(3), + my_version, mqtt_topic, MQTT_FULLTOPIC, SUB_PREFIX, PUB_PREFIX, PUB_PREFIX2, stemp3, stemp4, stemp5, Settings.flag.button_swap, + Settings.flag.button_single, Settings.flag.decimal_text, Settings.flag.not_power_linked, Settings.flag.hass_light, + light_controller.isCTRGBLinked(), Settings.flag3.pwm_multi_channels, Settings.flag3.mqtt_buttons, Settings.flag3.shutter_mode, Light.subtype); + } MqttPublish(stopic, true); + if (!Settings.flag.hass_discovery) { + snprintf_P(stopic, sizeof(stopic), PSTR("tasmota/discovery/%s/sensors"), unique_id); + Response_P(PSTR("{")); + MqttShowSensor(); + ResponseAppend_P(PSTR(",\"ver\":1}")); + MqttPublish(stopic, true); + } + masterlog_level =0; // Restore WebLog state } @@ -320,6 +311,7 @@ void HAssAnnounceRelayLight(void) bool TuyaMod = false; // Controls Tuya MCU modules bool PwmMod = false; // Controls PWM_DIMMER module bool FanMod = false; // Controls SONOFF_IFAN0X modules + uint8_t ShowTopic; // Used to hide/unhide a topic during Discovery to spare some cpu load uint8_t dimmer = 1; uint8_t valid_relay = 0; @@ -365,6 +357,8 @@ void HAssAnnounceRelayLight(void) TuyaDim = TuyaGetDpId((TUYA_MCU_FUNC_DIMMER) + active_device - 1); #endif //USE_TUYA_MCU + masterlog_level = ShowTopic = 4; // Hide topic on clean and remove use weblog 4 to see it + bool RelayX = PinUsed(GPIO_REL1, i-1) || (valid_relay >= i) || (TuyaRel > 0 && TuyaMod) || (TuyaRelInv > 0 && TuyaMod); // Check if the gpio is configured as Relay or force it for Sonoff DUAL R1 with MCU and Tuya MCU is_topic_light = Settings.flag.hass_light && RelayX || light_type && !RelayX || PwmMod || (TuyaDim > 0 && TuyaMod); // SetOption30 - Enforce HAss autodiscovery as light mqtt_data[0] = '\0'; // Clear retained message @@ -393,7 +387,9 @@ void HAssAnnounceRelayLight(void) char *command_topic = stemp1; char *state_topic = stemp2; char *availability_topic = stemp3; - masterlog_level = 0; + + ShowTopic = 0; + if (i > MAX_FRIENDLYNAMES) { snprintf_P(name, sizeof(name), PSTR("%s %d"), SettingsText(SET_FRIENDLYNAME1), i-1); } else { @@ -467,8 +463,8 @@ void HAssAnnounceRelayLight(void) TryResponseAppend_P(PSTR("}")); } } + masterlog_level = ShowTopic; MqttPublish(stopic, true); - masterlog_level = 4; // Restore WebLog state } } @@ -481,7 +477,7 @@ void HAssAnnouncerTriggers(uint8_t device, uint8_t present, uint8_t key, uint8_t char stemp2[TOPSZ]; char unique_id[30]; char trigger2[8]; - + uint8_t ShowTopic; // Used to hide/unhide a topic during Discovery to spare some cpu load mqtt_data[0] = '\0'; // Clear retained message for (uint8_t i = trg_start; i <= trg_end; i++) { @@ -489,6 +485,8 @@ void HAssAnnouncerTriggers(uint8_t device, uint8_t present, uint8_t key, uint8_t snprintf_P(unique_id, sizeof(unique_id), PSTR("%06X_%s_%d_%s"), ESP_getChipId(), key ? "SW" : "BTN", device + 1, key ? GetStateText(i) : trigger2); snprintf_P(stopic, sizeof(stopic), PSTR(HOME_ASSISTANT_DISCOVERY_PREFIX "/device_automation/%s/config"), unique_id); + masterlog_level = ShowTopic = 4; // Hide topic on clean and remove use weblog 4 to see it + if (Settings.flag.hass_discovery && present) { // SetOption19 - Control Home Assistantautomatic discovery (See SetOption59) char name[TOPSZ]; // friendlyname(33) + " " + "BTN" + " " + index char value_template[33]; @@ -496,7 +494,7 @@ void HAssAnnouncerTriggers(uint8_t device, uint8_t present, uint8_t key, uint8_t char *state_topic = stemp1; char *availability_topic = stemp2; char jsoname[8]; - masterlog_level = 0; + ShowTopic = 0; // Show the new generated topic GetPowerDevice(value_template, device + 1, sizeof(value_template), key + Settings.flag.device_index_enable); // Force index for Switch 1, Index on Button1 is controlled by SetOption26 - Switch between POWER or POWER1 snprintf_P(jsoname, sizeof(jsoname), PSTR("%s%d"), key ? "SWITCH" : "BUTTON", device + 1); @@ -524,8 +522,8 @@ void HAssAnnouncerTriggers(uint8_t device, uint8_t present, uint8_t key, uint8_t } } } + masterlog_level = ShowTopic; MqttPublish(stopic, true); - masterlog_level = 4; // Restore WebLog state } } @@ -535,14 +533,18 @@ void HAssAnnouncerBinSensors(uint8_t device, uint8_t present, uint8_t dual, uint char stemp1[TOPSZ]; char stemp2[TOPSZ]; char unique_id[30]; + uint8_t ShowTopic; // Used to hide/unhide a topic during Discovery to spare some cpu load + mqtt_data[0] = '\0'; // Clear retained message + masterlog_level = 4; // Hide topic on clean and remove use weblog 4 to see it + snprintf_P(unique_id, sizeof(unique_id), PSTR("%06X_SW_%d"), ESP_getChipId(), device + 1); snprintf_P(stopic, sizeof(stopic), PSTR(HOME_ASSISTANT_DISCOVERY_PREFIX "/binary_sensor/%s/config"), unique_id); + masterlog_level = ShowTopic = 4; // Hide topic on clean and remove use weblog 4 to see it if (Settings.flag.hass_discovery && present ) { // SetOption19 - Control Home Assistantautomatic discovery (See SetOption59) - masterlog_level = 0; if (!toggle || dual) { char name[TOPSZ]; // friendlyname(33) + " " + "BTN" + " " + index char value_template[33]; @@ -551,6 +553,8 @@ void HAssAnnouncerBinSensors(uint8_t device, uint8_t present, uint8_t dual, uint char *availability_topic = stemp2; char jsoname[8]; + ShowTopic = 0; + GetPowerDevice(value_template, device + 1, sizeof(value_template), 1 + Settings.flag.device_index_enable); // Force index for Switch 1, Index on Button1 is controlled by SetOption26 - Switch between POWER or POWER1 snprintf_P(jsoname, sizeof(jsoname), PSTR("SWITCH%d"), device + 1); GetTopic_P(state_topic, STAT, mqtt_topic, jsoname); @@ -575,8 +579,9 @@ void HAssAnnouncerBinSensors(uint8_t device, uint8_t present, uint8_t dual, uint TryResponseAppend_P(PSTR("}")); } } + masterlog_level = ShowTopic; MqttPublish(stopic, true); - masterlog_level = 4; // Restore WebLog state + } void HAssAnnounceSwitches(void) @@ -698,7 +703,7 @@ void HAssAnnounceButtons(void) } } -void HAssAnnounceSensor(const char *sensorname, const char *subsensortype, const char *MultiSubName, uint8_t subqty, uint8_t subidx, uint8_t nested, const char* SubKey) +void HAssAnnounceSensor(const char *sensorname, const char *subsensortype, const char *MultiSubName, uint8_t subqty, bool nested, const char* SubKey) { char stopic[TOPSZ]; char stemp1[TOPSZ]; @@ -712,21 +717,20 @@ void HAssAnnounceSensor(const char *sensorname, const char *subsensortype, const NoAlNumToUnderscore(subname, MultiSubName); //Replace all non alphaumeric characters to '_' to avoid topic name issues snprintf_P(unique_id, sizeof(unique_id), PSTR("%06X_%s_%s"), ESP_getChipId(), sensorname, subname); snprintf_P(stopic, sizeof(stopic), PSTR(HOME_ASSISTANT_DISCOVERY_PREFIX "/sensor/%s/config"), unique_id); - if (Settings.flag.hass_discovery) { // SetOption19 - Control Home Assistantautomatic discovery (See SetOption59) char name[TOPSZ]; // friendlyname(33) + " " + sensorname(20?) + " " + sensortype(20?) char prefix[TOPSZ]; char *state_topic = stemp1; char *availability_topic = stemp2; - //bool LwtSensor = MQTT_LWT_DISCOVERY; + masterlog_level = 0; // Show the new generated topic GetTopic_P(state_topic, TELE, mqtt_topic, PSTR(D_RSLT_SENSOR)); snprintf_P(name, sizeof(name), PSTR("%s %s %s"), SettingsText(SET_DEVICENAME), sensorname, MultiSubName); GetTopic_P(availability_topic, TELE, mqtt_topic, S_LWT); Response_P(HASS_DISCOVER_BASE, name, state_topic); - #ifdef DEEPSLEEP_LWT_HA_DISCOVERY +#ifdef DEEPSLEEP_LWT_HA_DISCOVERY TryResponseAppend_P(HASS_DISCOVER_SENSOR_LWT, availability_topic); #else if (Settings.deepsleep == 0) @@ -752,30 +756,19 @@ void HAssAnnounceSensor(const char *sensorname, const char *subsensortype, const case 3: snprintf_P(param1, sizeof(param1), PSTR("%s"), PressureUnit().c_str()); break; - // case 4: // Speed. Default to km/h if not set to have a graph representation under HAss - // case 5: - // case 6: - // case 7: - // if (Settings.flag2.speed_conversion == 0) { - // snprintf_P(param1, sizeof(param1), PSTR("km/h")); - // } else { - // snprintf_P(param1, sizeof(param1), PSTR("%s"), SpeedUnit().c_str()); - // } - // break; } char param2[50]; GetTextIndexed(param2, sizeof(param2), sensor_index, kHAssJsonSensorDevCla); TryResponseAppend_P(HASS_DISCOVER_SENSOR, param1, param2, sensorname, subsensortype); - if (subidx) { - TryResponseAppend_P(PSTR("[%d]"), subqty -1); - } } else { TryResponseAppend_P(HASS_DISCOVER_SENSOR, " ", "ic\":\"mdi:eye", sensorname, subsensortype); } - if (nested) { - TryResponseAppend_P(PSTR("['%s']"), SubKey); - } + + if (nested) { TryResponseAppend_P(PSTR("['%s']"), SubKey); } + + if (subqty != 0) { TryResponseAppend_P(PSTR("[%d]"), subqty -1); } + TryResponseAppend_P(PSTR("}}\"}")); } MqttPublish(stopic, true); @@ -791,57 +784,66 @@ void HAssAnnounceSensors(void) tele_period = 2; // Do not allow HA updates during next function call XsnsNextCall(FUNC_JSON_APPEND, hass_xsns_index); // ,"INA219":{"Voltage":4.494,"Current":0.020,"Power":0.089} tele_period = tele_period_save; + size_t sensordata_len = strlen(mqtt_data); + char sensordata[sensordata_len+2]; // dynamically adjust the size + strcpy(sensordata, mqtt_data); // we can use strcpy since the buffer has the right size - char sensordata[512]; // Copy because we need to write to mqtt_data - strlcpy(sensordata, mqtt_data, sizeof(sensordata)); + // ******************* JSON TEST ******************* + // char sensordata[512]; + // snprintf_P(sensordata, sizeof(sensordata), PSTR("{\"ENERGY\":{\"TotalStartTime\":\"2018-11-23T15:33:47\",\"ExportTariff\":[0.000,0.017],\"Speed\":{\"Act\":\"NE\"}}}")); + // size_t sensordata_len = strlen(sensordata); + // ******************* JSON TEST ******************* - if (strlen(sensordata)) + if (sensordata_len > 0) { + // // We replace the leader ',' with '{' sensordata[0] = '{'; - snprintf_P(sensordata, sizeof(sensordata), PSTR("%s}"), sensordata); // {"INA219":{"Voltage":4.494,"Current":0.020,"Power":0.089}} - // USE THE FOLLOWING LINE TO TEST JSON - //snprintf_P(sensordata, sizeof(sensordata), PSTR("{\"APDS9960\":{\"Red\":282,\"Green\":252,\"Blue\":196,\"Ambient\":169,\"CCT\":4217,\"Proximity\":9}}")); - //snprintf_P(sensordata, sizeof(sensordata), PSTR("{\"ENERGY\":{\"TotalStartTime\":\"2018-11-23T15:33:47\",\"Total\":0.017,\"TotalTariff\":[0.000,0.017],\"Yesterday\":0.000,\"Today\":0.002,\"ExportActive\":0.000,\"ExportTariff\":[0.000,0.000],\"Period\":0.00,\"Power\":0.00,\"ApparentPower\":7.84,\"ReactivePower\":-7.21,\"Factor\":0.39,\"Frequency\":50.0,\"Voltage\":234.31,\"Current\":0.039,\"ImportActive\":12.580,\"ImportReactive\":0.002,\"ExportReactive\":39.131,\"PhaseAngle\":290.45}}")); + // // and we add a trailing '}' after the last '}' + sensordata[sensordata_len] = '}'; + sensordata[sensordata_len+1] = '\0'; - StaticJsonBuffer<500> jsonBuffer; - JsonObject &root = jsonBuffer.parseObject(sensordata); - if (!root.success()) + JsonParser parser(sensordata); + JsonParserObject root = parser.getRootObject(); + if (!root) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR("%s '%s'"), kHAssError3, sensordata); + AddLog_P2(LOG_LEVEL_ERROR, PSTR("%s '%s' (ERR1)"), kHAssError3, sensordata); continue; } - for (auto sensor : root) + for (auto sensor_key : root) { - const char *sensorname = sensor.key; - JsonObject &sensors = sensor.value.as(); - if (!sensors.success()) + // sensor is of type JsonParserKey + const char *sensorname = sensor_key.getStr(); + JsonParserObject sensors = sensor_key.getValue().getObject(); + + if (!sensors) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR("%s '%s'"), kHAssError3, sensordata); + AddLog_P2(LOG_LEVEL_ERROR, PSTR("%s '%s' (ERR2)"), kHAssError3, sensorname); continue; } - for (auto subsensor : sensors) + for (auto subsensor_key_token : sensors) { - if (subsensor.value.is()) { + const char * subsensor_key = subsensor_key_token.getStr(); + JsonParserToken subsensor = subsensor_key_token.getValue(); + if (subsensor.isObject()) { // If there is a nested json on sensor data, second level entitites will be created - char NestedName[20]; + JsonParserObject subsensors = subsensor.getObject(); char NewSensorName[20]; - snprintf_P(NestedName, sizeof(NestedName), PSTR("%s"), subsensor.key); - JsonObject& subsensors = subsensor.value.as(); - for (auto subsensor : subsensors) { - snprintf_P(NewSensorName, sizeof(NewSensorName), PSTR("%s %s"), NestedName, subsensor.key); - HAssAnnounceSensor(sensorname, NestedName, NewSensorName, 0, 0, 1, subsensor.key); + for (auto subsensor2_key : subsensors) { + snprintf_P(NewSensorName, sizeof(NewSensorName), PSTR("%s %s"), subsensor_key, subsensor2_key.getStr()); + HAssAnnounceSensor(sensorname, subsensor_key, NewSensorName, 0, 1, subsensor2_key.getStr()); } - } else if (subsensor.value.is()) { + } else if (subsensor.isArray()) { // If there is more than a value on sensor data, 'n' entitites will be created - JsonArray& subsensors = subsensor.value.as(); + JsonParserArray subsensors = subsensor.getArray(); uint8_t subqty = subsensors.size(); char MultiSubName[20]; for (int i = 1; i <= subqty; i++) { - snprintf_P(MultiSubName, sizeof(MultiSubName), PSTR("%s %d"), subsensor.key, i); - HAssAnnounceSensor(sensorname, subsensor.key, MultiSubName, i, 1, 0, subsensor.key); + snprintf_P(MultiSubName, sizeof(MultiSubName), PSTR("%s %d"), subsensor_key, i); + HAssAnnounceSensor(sensorname, subsensor_key, MultiSubName, i, 0, subsensor_key); } - } else { HAssAnnounceSensor(sensorname, subsensor.key, subsensor.key, 0, 0, 0, subsensor.key);} + } else { + HAssAnnounceSensor(sensorname, subsensor_key, subsensor_key, 0, 0, subsensor_key);} } } } @@ -856,15 +858,18 @@ void HAssAnnounceShutters(void) char stemp1[TOPSZ]; char stemp2[TOPSZ]; char unique_id[30]; + uint8_t ShowTopic; // Used to hide/unhide a topic during Discovery to spare some cpu load for (uint32_t i = 0; i < MAX_SHUTTERS; i++) { mqtt_data[0] = '\0'; // Clear retained message + masterlog_level = ShowTopic = 4; // Hide topic on clean and remove use weblog 4 to see it + snprintf_P(unique_id, sizeof(unique_id), PSTR("%06X_SHT_%d"), ESP_getChipId(), i + 1); snprintf_P(stopic, sizeof(stopic), PSTR(HOME_ASSISTANT_DISCOVERY_PREFIX "/cover/%s/config"), unique_id); if (Settings.flag.hass_discovery && Settings.flag3.shutter_mode && Settings.shutter_startrelay[i] > 0 && Settings.shutter_startrelay[i] <= MAX_RELAYS) { - masterlog_level = 0; + ShowTopic = 0; // Show the new generated topic if (i > MAX_FRIENDLYNAMES) { snprintf_P(stemp1, sizeof(stemp1), PSTR("%s Shutter %d"), SettingsText(SET_DEVICENAME), i + 1); } else { @@ -887,8 +892,8 @@ void HAssAnnounceShutters(void) TryResponseAppend_P(PSTR("}")); } + masterlog_level = ShowTopic; MqttPublish(stopic, true); - masterlog_level = 4; // Restore WebLog state } #endif } @@ -899,9 +904,11 @@ void HAssAnnounceDeviceInfoAndStatusSensor(void) char stemp1[TOPSZ]; char stemp2[TOPSZ]; char unique_id[30]; + uint8_t ShowTopic; // Used to hide/unhide a topic during Discovery to spare some cpu load + // Announce sensor mqtt_data[0] = '\0'; // Clear retained message - + masterlog_level = ShowTopic = 4; // Hide topic on clean and remove use weblog 4 to see it // Clear or Set topic snprintf_P(unique_id, sizeof(unique_id), PSTR("%06X_status"), ESP_getChipId()); snprintf_P(stopic, sizeof(stopic), PSTR(HOME_ASSISTANT_DISCOVERY_PREFIX "/sensor/%s/config"), unique_id); @@ -912,7 +919,7 @@ void HAssAnnounceDeviceInfoAndStatusSensor(void) char prefix[TOPSZ]; char *state_topic = stemp1; char *availability_topic = stemp2; - masterlog_level = 0; + ShowTopic = 0; // Show the new generated topic snprintf_P(name, sizeof(name), PSTR("%s status"), SettingsText(SET_DEVICENAME)); GetTopic_P(state_topic, TELE, mqtt_topic, PSTR(D_RSLT_HASS_STATE)); GetTopic_P(availability_topic, TELE, mqtt_topic, S_LWT); @@ -924,10 +931,12 @@ void HAssAnnounceDeviceInfoAndStatusSensor(void) ModuleName().c_str(), my_version, my_image); TryResponseAppend_P(PSTR("}")); } + masterlog_level = ShowTopic; MqttPublish(stopic, true); + if (!Settings.flag.hass_discovery) { masterlog_level = 0; - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_LOG "Home Assistant Classic Discovery disabled.")); + AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_LOG "Home Assistant MQTT Discovery disabled.")); } } @@ -946,21 +955,18 @@ void HAssPublishStatus(void) void HAssDiscovery(void) { // Configure Tasmota for default Home Assistant parameters to keep discovery message as short as possible - if (Settings.flag.hass_discovery || Settings.hass_new_discovery > 0) + if (Settings.flag.hass_discovery) { // SetOption19 - Control Home Assistant automatic discovery (See SetOption59) Settings.flag.mqtt_response = 0; // SetOption4 - Switch between MQTT RESULT or COMMAND - Response always as RESULT and not as uppercase command Settings.flag.decimal_text = 1; // SetOption17 - Switch between decimal or hexadecimal output - Respond with decimal color values - if (Settings.hass_new_discovery == 1) { // Official Home Assistant Discovery doesn't need the /STATE topic. - Settings.flag3.hass_tele_on_power = 1; // SetOption59 - Send tele/%topic%/STATE in addition to stat/%topic%/RESULT - send tele/STATE message as stat/RESULT + Settings.flag3.hass_tele_on_power = 1; // SetOption59 - Send tele/%topic%/STATE in addition to stat/%topic%/RESULT - send tele/STATE message as stat/RESULT // the purpose of that is so that if HA is restarted, state in HA will be correct within one teleperiod otherwise state // will not be correct until the device state is changed this is why in the patterns for switch and light, we tell HA to trigger on STATE, not RESULT. - } //Settings.light_scheme = 0; // To just control color it needs to be Scheme 0 (on hold due to new light configuration) } if (Settings.flag.hass_discovery || (1 == hass_mode)) { // SetOption19 - Control Home Assistantautomatic discovery (See SetOption59) - masterlog_level = 4; // Restore WebLog state // Send info about buttons HAssAnnounceButtons(); @@ -978,8 +984,7 @@ void HAssDiscovery(void) // Send info about status sensor HAssAnnounceDeviceInfoAndStatusSensor(); - - masterlog_level = Settings.weblog_level; + masterlog_level = 0; // Restores weblog level } } @@ -987,15 +992,11 @@ void HAssDiscover(void) { hass_mode = 1; // Force discovery hass_init_step = 1; // Delayed discovery - Settings.hass_new_discovery = Settings.flag.hass_discovery; } void HAssAnyKey(void) { - if (!Settings.flag.hass_discovery || Settings.hass_new_discovery == 0) - { - return; - } // SetOption19 - Control Home Assistantautomatic discovery (See SetOption59) + if (!Settings.flag.hass_discovery) { return; } // SetOption19 - Control Home Assistantautomatic discovery (See SetOption59) uint32_t key = (XdrvMailbox.payload >> 16) & 0xFF; // 0 = Button, 1 = Switch uint32_t device = XdrvMailbox.payload & 0xFF; // Device number or 1 if more Buttons than Devices @@ -1040,14 +1041,14 @@ bool HAssMqttLWT(void) if (Settings.flag.hass_discovery && (strncasecmp_P(XdrvMailbox.data, PSTR("online"), strlen("online")) == 0) && (XdrvMailbox.data_len == 6)) { MqttPublishTeleState(); return true; - } + } else { return false; } } void HassLwtSubscribe(bool hasslwt) { char htopic[TOPSZ]; snprintf_P(htopic, sizeof(htopic), PSTR(HOME_ASSISTANT_LWT_TOPIC)); - if (hasslwt && (Settings.flag.hass_discovery || Settings.hass_new_discovery == 2)) { + if (hasslwt && (Settings.flag.hass_discovery)) { MqttSubscribe(htopic); } else { MqttUnsubscribe(htopic); } } @@ -1090,7 +1091,7 @@ bool Xdrv12(uint8_t function) case FUNC_MQTT_INIT: hass_mode = 0; // Discovery only if Settings.flag.hass_discovery is set hass_init_step = 2; // Delayed discovery - if (!Settings.flag.hass_discovery && Settings.hass_new_discovery == 0) { + if (!Settings.flag.hass_discovery) { NewHAssDiscovery(); } break; @@ -1101,9 +1102,6 @@ bool Xdrv12(uint8_t function) case FUNC_MQTT_DATA: result = HAssMqttLWT(); break; - case FUNC_COMMAND: - result = DecodeCommand(kHAssCommand, HAssCommand); - break; } } return result; From 806e18a9d7558be512d445bb4c9e532dd82545e2 Mon Sep 17 00:00:00 2001 From: Federico Leoni Date: Thu, 24 Sep 2020 20:05:36 -0300 Subject: [PATCH 033/119] Update --- tasmota/xdrv_12_home_assistant.ino | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tasmota/xdrv_12_home_assistant.ino b/tasmota/xdrv_12_home_assistant.ino index 75811b994..ea3245444 100644 --- a/tasmota/xdrv_12_home_assistant.ino +++ b/tasmota/xdrv_12_home_assistant.ino @@ -27,15 +27,15 @@ const char kHAssJsonSensorTypes[] PROGMEM = D_JSON_APPARENT_POWERUSAGE "|Battery|" D_JSON_CURRENT "|" D_JSON_DISTANCE "|" D_JSON_FREQUENCY "|" D_JSON_HUMIDITY "|" D_JSON_ILLUMINANCE "|" D_JSON_MOISTURE "|PB0.3|PB0.5|PB1|PB2.5|PB5|PB10|PM1|PM2.5|PM10|" D_JSON_POWERFACTOR "|" D_JSON_POWERUSAGE "|" D_JSON_TOTAL_START_TIME "|" D_JSON_REACTIVE_POWERUSAGE "|" D_JSON_TODAY "|" D_JSON_TOTAL "|" D_JSON_VOLTAGE "|" D_JSON_WEIGHT "|" D_JSON_YESTERDAY "|" - D_JSON_CO2 "|" D_JSON_ECO2 "|" D_JSON_TVOC "|" D_COLOR_RED "|" D_COLOR_GREEN "|" D_COLOR_BLUE"|" D_CCT "|" D_PROXIMITY "|Ambient|" - D_JSON_TOTAL D_CMND_TARIFF "|" D_JSON_EXPORT D_CMND_TARIFF "|"; + D_JSON_CO2 "|" D_JSON_ECO2 "|" D_JSON_TVOC "|" D_COLOR_RED "|" D_COLOR_GREEN "|" D_COLOR_BLUE"|" D_CCT "|" D_PROXIMITY "|Ambient|"; + const char kHAssJsonSensorUnits[] PROGMEM = "||||" "VA|%|A|Cm|Hz|%|LX|" "%|ppd|ppd|ppd|ppd|ppd|ppd|µg/m³|µg/m³|µg/m³|Cos φ|W| |" "VAr|kWh|kWh|V|Kg|kWh|" - "ppm|ppm|ppb|R|G|B|" D_UNIT_KELVIN "| |LX| | |"; + "ppm|ppm|ppb|R|G|B|" D_UNIT_KELVIN "| |LX|"; const char kHAssJsonSensorDevCla[] PROGMEM = "dev_cla\":\"temperature|ic\":\"mdi:weather-rainy|dev_cla\":\"pressure|dev_cla\":\"pressure|" @@ -44,8 +44,8 @@ const char kHAssJsonSensorDevCla[] PROGMEM = "ic\":\"mdi:air-filter|ic\":\"mdi:air-filter|ic\":\"mdi:air-filter|ic\":\"mdi:alpha-f-circle-outline|dev_cla\":\"power|ic\":\"mdi:progress-clock|" "dev_cla\":\"power|dev_cla\":\"power|dev_cla\":\"power|ic\":\"mdi:alpha-v-circle-outline|ic\":\"mdi:scale|dev_cla\":\"power|" "ic\":\"mdi:molecule-co2|ic\":\"mdi:molecule-co2|ic\":\"mdi:air-filter|" - "ic\":\"mdi:palette|ic\":\"mdi:palette|ic\":\"mdi:palette|ic\":\"mdi:temperature-kelvin|ic\":\"mdi:ruler|dev_cla\":\"illuminance|" - "ic\":\"mdi:cash|ic\":\"mdi:cash-plus|"; + "ic\":\"mdi:palette|ic\":\"mdi:palette|ic\":\"mdi:palette|ic\":\"mdi:temperature-kelvin|ic\":\"mdi:ruler|dev_cla\":\"illuminance|"; + // List of sensors ready for discovery const char HASS_DISCOVER_BASE[] PROGMEM = @@ -256,6 +256,7 @@ void NewHAssDiscovery(void) light_controller.isCTRGBLinked(), Settings.flag3.pwm_multi_channels, Settings.flag3.mqtt_buttons, Settings.flag3.shutter_mode, Light.subtype); } MqttPublish(stopic, true); + if (!Settings.flag.hass_discovery) { snprintf_P(stopic, sizeof(stopic), PSTR("tasmota/discovery/%s/sensors"), unique_id); Response_P(PSTR("{")); @@ -263,8 +264,7 @@ void NewHAssDiscovery(void) ResponseAppend_P(PSTR(",\"ver\":1}")); MqttPublish(stopic, true); } - masterlog_level =0; // Restore WebLog state - + masterlog_level = 0; // Restore WebLog state } // NEW DISCOVERY From f0f44339411390336df317301edf92a88a27fe88 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 25 Sep 2020 08:52:28 +0200 Subject: [PATCH 034/119] Move Scripter to JSMN --- tasmota/xdrv_10_scripter.ino | 118 ++++++++++++++++++++--------------- 1 file changed, 66 insertions(+), 52 deletions(-) diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index 42c634ac3..3c675f6dc 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -470,8 +470,8 @@ void f2char(float num, uint32_t dprec, uint32_t lzeros, char *nbuff) { int8_t script_button[MAX_KEYS]; #endif //USE_BUTTON_EVENT -char *GetNumericArgument(char *lp,uint8_t lastop,float *fp,JsonObject *jo); -char *GetStringArgument(char *lp,uint8_t lastop,char *cp,JsonObject *jo); +char *GetNumericArgument(char *lp,uint8_t lastop,float *fp, JsonParserObject *jo); +char *GetStringArgument(char *lp,uint8_t lastop,char *cp, JsonParserObject *jo); char *ForceStringVar(char *lp,char *dstr); void send_download(void); uint8_t reject(char *name); @@ -1155,7 +1155,7 @@ float *Get_MFAddr(uint8_t index, uint16_t *len, uint16_t *ipos) { return 0; } -char *isvar(char *lp, uint8_t *vtype, struct T_INDEX *tind, float *fp, char *sp, JsonObject *jo); +char *isvar(char *lp, uint8_t *vtype, struct T_INDEX *tind, float *fp, char *sp, JsonParserObject *jo); float *get_array_by_name(char *name, uint16_t *alen) { @@ -1515,7 +1515,7 @@ float fvar; // vtype => ff=nothing found, fe=constant number,fd = constant string else bit 7 => 80 = string, 0 = number // no flash strings here for performance reasons!!! -char *isvar(char *lp, uint8_t *vtype, struct T_INDEX *tind, float *fp, char *sp, JsonObject *jo) { +char *isvar(char *lp, uint8_t *vtype, struct T_INDEX *tind, float *fp, char *sp, JsonParserObject *jo) { uint16_t count,len = 0; uint8_t nres = 0; char vname[32]; @@ -1664,7 +1664,7 @@ char *isvar(char *lp, uint8_t *vtype, struct T_INDEX *tind, float *fp, char *sp, if (aindex<1 || aindex>6) aindex = 1; aindex--; } - if (jo->success()) { + if (jo->isValid()) { char *subtype = strchr(jvname, '#'); char *subtype2; if (subtype) { @@ -1677,23 +1677,23 @@ char *isvar(char *lp, uint8_t *vtype, struct T_INDEX *tind, float *fp, char *sp, } } vn = jvname; - str_value = (*jo)[vn]; - if ((*jo)[vn].success()) { + str_value = (*jo)[vn].getStr(); + if ((*jo)[vn].isValid()) { if (subtype) { - JsonObject &jobj1 = (*jo)[vn]; - if (jobj1.success()) { + JsonParserObject jobj1 = (*jo)[vn]; + if (jobj1.isValid()) { vn = subtype; jo = &jobj1; - str_value = (*jo)[vn]; - if ((*jo)[vn].success()) { + str_value = (*jo)[vn].getStr(); + if ((*jo)[vn].isValid()) { // 2. stage if (subtype2) { - JsonObject &jobj2 = (*jo)[vn]; - if ((*jo)[vn].success()) { + JsonParserObject jobj2 = (*jo)[vn]; + if ((*jo)[vn].isValid()) { vn = subtype2; jo = &jobj2; - str_value = (*jo)[vn]; - if ((*jo)[vn].success()) { + str_value = (*jo)[vn].getStr(); + if ((*jo)[vn].isValid()) { goto skip; } else { goto chknext; @@ -1712,10 +1712,10 @@ char *isvar(char *lp, uint8_t *vtype, struct T_INDEX *tind, float *fp, char *sp, skip: if (ja) { // json array - str_value = (*jo)[vn][aindex]; + str_value = (*jo)[vn].getArray()[aindex].getStr(); } if (str_value && *str_value) { - if ((*jo).is(vn)) { + if ((*jo)[vn].isStr()) { if (!strncmp(str_value, "ON", 2)) { if (fp) *fp = 1; goto nexit; @@ -3281,7 +3281,7 @@ uint16_t GetStack(void) { } #endif //ESP8266 -char *GetStringArgument(char *lp, uint8_t lastop, char *cp, JsonObject *jo) { +char *GetStringArgument(char *lp, uint8_t lastop, char *cp, JsonParserObject *jo) { uint8_t operand = 0; uint8_t vtype; char *slp; @@ -3327,7 +3327,7 @@ char *GetStringArgument(char *lp, uint8_t lastop, char *cp, JsonObject *jo) { return lp; } -char *GetNumericArgument(char *lp, uint8_t lastop, float *fp, JsonObject *jo) { +char *GetNumericArgument(char *lp, uint8_t lastop, float *fp, JsonParserObject *jo) { uint8_t operand = 0; float fvar1,fvar; char *slp; @@ -3552,7 +3552,7 @@ void toSLog(const char *str) { #endif } -char *Evaluate_expression(char *lp, uint8_t and_or, uint8_t *result,JsonObject *jo) { +char *Evaluate_expression(char *lp, uint8_t and_or, uint8_t *result, JsonParserObject *jo) { float fvar,*dfvar,fvar1; uint8_t numeric; struct T_INDEX ind; @@ -3715,19 +3715,17 @@ int16_t Run_Scripter(const char *type, int8_t tlen, char *js) { if (tasm_cmd_activ && tlen>0) return 0; - JsonObject *jo = 0; - DynamicJsonBuffer jsonBuffer; // on heap - JsonObject &jobj = jsonBuffer.parseObject(js); + JsonParserObject jo; if (js) { - jo = &jobj; - } else { - jo = 0; + String jss = js; // copy the string to a new buffer, not sure we can change the original buffer + JsonParser parser((char*)jss.c_str()); + jo = parser.getRootObject(); } - return Run_script_sub(type, tlen, jo); + return Run_script_sub(type, tlen, &jo); } -int16_t Run_script_sub(const char *type, int8_t tlen, JsonObject *jo) { +int16_t Run_script_sub(const char *type, int8_t tlen, JsonParserObject *jo) { uint8_t vtype=0,sindex,xflg,floop=0,globvindex,fromscriptcmd=0; char *lp_next; int16_t globaindex,saindex; @@ -5527,15 +5525,16 @@ void Script_Handle_Hue(String *path) { if (Webserver->args()) { response = "["; - StaticJsonBuffer<400> jsonBuffer; - JsonObject &hue_json = jsonBuffer.parseObject(Webserver->arg((Webserver->args()) - 1)); - if (hue_json.containsKey("on")) { + JsonParser parser((char*) Webserver->arg((Webserver->args())-1).c_str()); + JsonParserObject root = parser.getRootObject(); + JsonParserToken hue_on = root[PSTR("on")]; + if (hue_on) { response += FPSTR(sHUE_LIGHT_RESPONSE_JSON); response.replace("{id", String(EncodeLightId(device))); response.replace("{cm", "on"); - bool on = hue_json["on"]; + bool on = hue_on.getBool(); if (on==false) { glob_script_mem.fvars[hue_script[index].index[0] - 1] = 0; response.replace("{re", "false"); @@ -5546,8 +5545,11 @@ void Script_Handle_Hue(String *path) { glob_script_mem.type[hue_script[index].vindex[0]].bits.changed = 1; resp = true; } - if (hue_json.containsKey("bri")) { // Brightness is a scale from 1 (the minimum the light is capable of) to 254 (the maximum). Note: a brightness of 1 is not off. - tmp = hue_json["bri"]; + + parser.setCurrent(); + JsonParserToken hue_bri = root[PSTR("bri")]; + if (hue_bri) { // Brightness is a scale from 1 (the minimum the light is capable of) to 254 (the maximum). Note: a brightness of 1 is not off. + tmp = hue_bri.getUInt(); bri = tmp; if (254 <= bri) { bri = 255; } if (resp) { response += ","; } @@ -5559,12 +5561,17 @@ void Script_Handle_Hue(String *path) { glob_script_mem.type[hue_script[index].vindex[1]].bits.changed = 1; resp = true; } - if (hue_json.containsKey("xy")) { // Saturation of the light. 254 is the most saturated (colored) and 0 is the least saturated (white). + + JsonParserToken hue_xy = root[PSTR("xy")]; + if (hue_xy) { // Saturation of the light. 254 is the most saturated (colored) and 0 is the least saturated (white). float x, y; - x = hue_json["xy"][0]; - y = hue_json["xy"][1]; - const String &x_str = hue_json["xy"][0]; - const String &y_str = hue_json["xy"][1]; + JsonParserArray arr_xy = JsonParserArray(hue_xy); + JsonParserToken tok_x = arr_xy[0]; + JsonParserToken tok_y = arr_xy[1]; + x = tok_x.getFloat(); + y = tok_y.getFloat(); + const char * x_str = tok_x.getStr(); + const char * y_str = tok_y.getStr(); uint8_t rr,gg,bb; LightStateClass::XyToRgb(x, y, &rr, &gg, &bb); LightStateClass::RgbToHsb(rr, gg, bb, &hue, &sat, nullptr); @@ -5580,8 +5587,9 @@ void Script_Handle_Hue(String *path) { resp = true; } - if (hue_json.containsKey("hue")) { // The hue value is a wrapping value between 0 and 65535. Both 0 and 65535 are red, 25500 is green and 46920 is blue. - tmp = hue_json["hue"]; + JsonParserToken hue_hue = root[PSTR("hue")]; + if (hue_hue) { // The hue value is a wrapping value between 0 and 65535. Both 0 and 65535 are red, 25500 is green and 46920 is blue. + tmp = hue_hue.getUInt(); //hue = changeUIntScale(tmp, 0, 65535, 0, 359); //tmp = changeUIntScale(hue, 0, 359, 0, 65535); hue = tmp; @@ -5594,8 +5602,10 @@ void Script_Handle_Hue(String *path) { glob_script_mem.type[hue_script[index].vindex[2]].bits.changed = 1; resp = true; } - if (hue_json.containsKey("sat")) { // Saturation of the light. 254 is the most saturated (colored) and 0 is the least saturated (white). - tmp = hue_json["sat"]; + + JsonParserToken hue_sat = root[PSTR("sat")]; + if (hue_sat) { // Saturation of the light. 254 is the most saturated (colored) and 0 is the least saturated (white). + tmp = hue_sat.getUInt(); sat = tmp; if (254 <= sat) { sat = 255; } if (resp) { response += ","; } @@ -5607,8 +5617,10 @@ void Script_Handle_Hue(String *path) { glob_script_mem.type[hue_script[index].vindex[3]].bits.changed = 1; resp = true; } - if (hue_json.containsKey("ct")) { // Color temperature 153 (Cold) to 500 (Warm) - ct = hue_json["ct"]; + + JsonParserToken hue_ct = root[PSTR("ct")]; + if (hue_ct) { // Color temperature 153 (Cold) to 500 (Warm) + ct = hue_ct.getUInt(); if (resp) { response += ","; } response += FPSTR(sHUE_LIGHT_RESPONSE_JSON); response.replace("{id", String(EncodeLightId(device))); @@ -5826,21 +5838,23 @@ bool ScriptMqttData(void) if (event_item.Key.length() == 0) { //If did not specify Key value = sData; } else { //If specified Key, need to parse Key/Value from JSON data - StaticJsonBuffer jsonBuf; - JsonObject& jsonData = jsonBuf.parseObject(sData); + JsonParser parser((char*)sData.c_str()); + JsonParserObject jsonData = parser.getRootObject(); String key1 = event_item.Key; String key2; - if (!jsonData.success()) break; //Failed to parse JSON data, ignore this message. + if (!jsonData) break; //Failed to parse JSON data, ignore this message. int dot; if ((dot = key1.indexOf('.')) > 0) { key2 = key1.substring(dot+1); key1 = key1.substring(0, dot); lkey = key2; - if (!jsonData[key1][key2].success()) break; //Failed to get the key/value, ignore this message. - value = (const char *)jsonData[key1][key2]; + JsonParserToken val = jsonData[key1.c_str()].getObject()[key2.c_str()]; + if (!val) break; //Failed to get the key/value, ignore this message. + value = val.getStr(); } else { - if (!jsonData[key1].success()) break; - value = (const char *)jsonData[key1]; + JsonParserToken val = jsonData[key1.c_str()]; + if (!val) break; + value = val.getStr(); lkey = key1; } } From c8fbac9c329d0a5716146f8a3fdfe19a62288bcf Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 25 Sep 2020 11:04:22 +0200 Subject: [PATCH 035/119] Fix compilation --- tasmota/xdrv_10_scripter.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index 3c675f6dc..8f5181914 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -5570,8 +5570,8 @@ void Script_Handle_Hue(String *path) { JsonParserToken tok_y = arr_xy[1]; x = tok_x.getFloat(); y = tok_y.getFloat(); - const char * x_str = tok_x.getStr(); - const char * y_str = tok_y.getStr(); + String x_str = tok_x.getStr(); + String y_str = tok_y.getStr(); uint8_t rr,gg,bb; LightStateClass::XyToRgb(x, y, &rr, &gg, &bb); LightStateClass::RgbToHsb(rr, gg, bb, &hue, &sat, nullptr); From 27caccf7a062cf1c9772a21ee71f7a8c0cbee619 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 25 Sep 2020 11:33:12 +0200 Subject: [PATCH 036/119] Remove ArduinoJson in favour of JSMN Remove ArduinoJson library in favour of JSMN library --- lib/ArduinoJson-5.13.4/ArduinoJson.h | 5 - lib/ArduinoJson-5.13.4/CHANGELOG.md | 483 ------------------ lib/ArduinoJson-5.13.4/LICENSE.md | 10 - lib/ArduinoJson-5.13.4/README.md | 110 ---- .../JsonConfigFile/JsonConfigFile.ino | 144 ------ .../JsonGeneratorExample.ino | 81 --- .../JsonHttpClient/JsonHttpClient.ino | 112 ---- .../JsonParserExample/JsonParserExample.ino | 78 --- .../examples/JsonServer/JsonServer.ino | 109 ---- .../examples/JsonUdpBeacon/JsonUdpBeacon.ino | 101 ---- .../ProgmemExample/ProgmemExample.ino | 70 --- .../examples/StringExample/StringExample.ino | 74 --- lib/ArduinoJson-5.13.4/keywords.txt | 15 - lib/ArduinoJson-5.13.4/library.properties | 11 - lib/ArduinoJson-5.13.4/src/ArduinoJson.h | 17 - lib/ArduinoJson-5.13.4/src/ArduinoJson.hpp | 19 - .../src/ArduinoJson/Configuration.hpp | 151 ------ .../src/ArduinoJson/Data/Encoding.hpp | 37 -- .../ArduinoJson/Data/JsonBufferAllocated.hpp | 22 - .../src/ArduinoJson/Data/JsonFloat.hpp | 18 - .../src/ArduinoJson/Data/JsonInteger.hpp | 23 - .../src/ArduinoJson/Data/JsonVariantAs.hpp | 42 -- .../ArduinoJson/Data/JsonVariantContent.hpp | 27 - .../ArduinoJson/Data/JsonVariantDefault.hpp | 23 - .../src/ArduinoJson/Data/JsonVariantType.hpp | 27 - .../src/ArduinoJson/Data/List.hpp | 94 ---- .../ArduinoJson/Data/ListConstIterator.hpp | 50 -- .../src/ArduinoJson/Data/ListIterator.hpp | 60 --- .../src/ArduinoJson/Data/ListNode.hpp | 24 - .../src/ArduinoJson/Data/NonCopyable.hpp | 23 - .../src/ArduinoJson/Data/ReferenceType.hpp | 24 - .../src/ArduinoJson/Data/ValueSaver.hpp | 52 -- .../ArduinoJson/Deserialization/Comments.hpp | 61 --- .../Deserialization/JsonParser.hpp | 102 ---- .../Deserialization/JsonParserImpl.hpp | 189 ------- .../Deserialization/StringWriter.hpp | 41 -- .../src/ArduinoJson/DynamicJsonBuffer.hpp | 170 ------ .../src/ArduinoJson/JsonArray.hpp | 227 -------- .../src/ArduinoJson/JsonArrayImpl.hpp | 26 - .../src/ArduinoJson/JsonArraySubscript.hpp | 122 ----- .../src/ArduinoJson/JsonBuffer.hpp | 78 --- .../src/ArduinoJson/JsonBufferBase.hpp | 127 ----- .../src/ArduinoJson/JsonBufferImpl.hpp | 17 - .../src/ArduinoJson/JsonObject.hpp | 328 ------------ .../src/ArduinoJson/JsonObjectImpl.hpp | 28 - .../src/ArduinoJson/JsonObjectSubscript.hpp | 110 ---- .../src/ArduinoJson/JsonPair.hpp | 16 - .../src/ArduinoJson/JsonVariant.hpp | 357 ------------- .../src/ArduinoJson/JsonVariantBase.hpp | 24 - .../src/ArduinoJson/JsonVariantCasts.hpp | 59 --- .../ArduinoJson/JsonVariantComparisons.hpp | 139 ----- .../src/ArduinoJson/JsonVariantImpl.hpp | 126 ----- .../src/ArduinoJson/JsonVariantOr.hpp | 52 -- .../src/ArduinoJson/JsonVariantSubscripts.hpp | 86 ---- .../src/ArduinoJson/Polyfills/attributes.hpp | 29 -- .../src/ArduinoJson/Polyfills/ctype.hpp | 18 - .../src/ArduinoJson/Polyfills/isFloat.hpp | 38 -- .../src/ArduinoJson/Polyfills/isInteger.hpp | 19 - .../src/ArduinoJson/Polyfills/math.hpp | 19 - .../src/ArduinoJson/Polyfills/parseFloat.hpp | 90 ---- .../ArduinoJson/Polyfills/parseInteger.hpp | 41 -- .../src/ArduinoJson/RawJson.hpp | 46 -- .../ArduinoJson/Serialization/DummyPrint.hpp | 22 - .../Serialization/DynamicStringBuilder.hpp | 35 -- .../ArduinoJson/Serialization/FloatParts.hpp | 89 ---- .../Serialization/IndentedPrint.hpp | 68 --- .../Serialization/JsonPrintable.hpp | 117 ----- .../Serialization/JsonSerializer.hpp | 32 -- .../Serialization/JsonSerializerImpl.hpp | 103 ---- .../ArduinoJson/Serialization/JsonWriter.hpp | 155 ------ .../ArduinoJson/Serialization/Prettyfier.hpp | 133 ----- .../Serialization/StaticStringBuilder.hpp | 36 -- .../Serialization/StreamPrintAdapter.hpp | 39 -- .../src/ArduinoJson/StaticJsonBuffer.hpp | 126 ----- .../StringTraits/ArduinoStream.hpp | 61 --- .../ArduinoJson/StringTraits/CharPointer.hpp | 64 --- .../ArduinoJson/StringTraits/FlashString.hpp | 61 --- .../ArduinoJson/StringTraits/StdStream.hpp | 60 --- .../ArduinoJson/StringTraits/StdString.hpp | 77 --- .../ArduinoJson/StringTraits/StringTraits.hpp | 36 -- .../src/ArduinoJson/TypeTraits/EnableIf.hpp | 19 - .../ArduinoJson/TypeTraits/FloatTraits.hpp | 171 ------- .../src/ArduinoJson/TypeTraits/IsArray.hpp | 24 - .../src/ArduinoJson/TypeTraits/IsBaseOf.hpp | 27 - .../src/ArduinoJson/TypeTraits/IsChar.hpp | 23 - .../src/ArduinoJson/TypeTraits/IsConst.hpp | 21 - .../TypeTraits/IsFloatingPoint.hpp | 18 - .../src/ArduinoJson/TypeTraits/IsIntegral.hpp | 26 - .../src/ArduinoJson/TypeTraits/IsSame.hpp | 21 - .../TypeTraits/IsSignedIntegral.hpp | 28 - .../TypeTraits/IsUnsignedIntegral.hpp | 28 - .../src/ArduinoJson/TypeTraits/IsVariant.hpp | 17 - .../ArduinoJson/TypeTraits/RemoveConst.hpp | 20 - .../TypeTraits/RemoveReference.hpp | 20 - .../src/ArduinoJson/version.hpp | 10 - tasmota/tasmota.ino | 1 - 96 files changed, 6709 deletions(-) delete mode 100644 lib/ArduinoJson-5.13.4/ArduinoJson.h delete mode 100644 lib/ArduinoJson-5.13.4/CHANGELOG.md delete mode 100644 lib/ArduinoJson-5.13.4/LICENSE.md delete mode 100644 lib/ArduinoJson-5.13.4/README.md delete mode 100644 lib/ArduinoJson-5.13.4/examples/JsonConfigFile/JsonConfigFile.ino delete mode 100644 lib/ArduinoJson-5.13.4/examples/JsonGeneratorExample/JsonGeneratorExample.ino delete mode 100644 lib/ArduinoJson-5.13.4/examples/JsonHttpClient/JsonHttpClient.ino delete mode 100644 lib/ArduinoJson-5.13.4/examples/JsonParserExample/JsonParserExample.ino delete mode 100644 lib/ArduinoJson-5.13.4/examples/JsonServer/JsonServer.ino delete mode 100644 lib/ArduinoJson-5.13.4/examples/JsonUdpBeacon/JsonUdpBeacon.ino delete mode 100644 lib/ArduinoJson-5.13.4/examples/ProgmemExample/ProgmemExample.ino delete mode 100644 lib/ArduinoJson-5.13.4/examples/StringExample/StringExample.ino delete mode 100644 lib/ArduinoJson-5.13.4/keywords.txt delete mode 100644 lib/ArduinoJson-5.13.4/library.properties delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson.h delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Configuration.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/Encoding.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonBufferAllocated.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonFloat.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonInteger.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantAs.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantContent.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantDefault.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantType.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/List.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ListConstIterator.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ListIterator.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ListNode.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/NonCopyable.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ReferenceType.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ValueSaver.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/Comments.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/JsonParser.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/JsonParserImpl.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/StringWriter.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/DynamicJsonBuffer.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonArray.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonArrayImpl.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonArraySubscript.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonBuffer.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonBufferBase.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonBufferImpl.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonObject.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonObjectImpl.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonObjectSubscript.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonPair.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariant.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantBase.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantCasts.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantComparisons.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantImpl.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantOr.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantSubscripts.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/attributes.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/ctype.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/isFloat.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/isInteger.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/math.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/parseFloat.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/parseInteger.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/RawJson.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/DummyPrint.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/DynamicStringBuilder.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/FloatParts.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/IndentedPrint.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonPrintable.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonSerializer.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonSerializerImpl.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonWriter.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/Prettyfier.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/StaticStringBuilder.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/StreamPrintAdapter.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/StaticJsonBuffer.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/ArduinoStream.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/CharPointer.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/FlashString.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/StdStream.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/StdString.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/StringTraits.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/EnableIf.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/FloatTraits.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsArray.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsBaseOf.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsChar.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsConst.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsFloatingPoint.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsIntegral.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsSame.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsSignedIntegral.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsUnsignedIntegral.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsVariant.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/RemoveConst.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/RemoveReference.hpp delete mode 100644 lib/ArduinoJson-5.13.4/src/ArduinoJson/version.hpp diff --git a/lib/ArduinoJson-5.13.4/ArduinoJson.h b/lib/ArduinoJson-5.13.4/ArduinoJson.h deleted file mode 100644 index 9f78b9f18..000000000 --- a/lib/ArduinoJson-5.13.4/ArduinoJson.h +++ /dev/null @@ -1,5 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#include "src/ArduinoJson.h" diff --git a/lib/ArduinoJson-5.13.4/CHANGELOG.md b/lib/ArduinoJson-5.13.4/CHANGELOG.md deleted file mode 100644 index 3616b176a..000000000 --- a/lib/ArduinoJson-5.13.4/CHANGELOG.md +++ /dev/null @@ -1,483 +0,0 @@ -ArduinoJson: change log -======================= - -v5.13.4 -------- - -* Removed spurious files in the Particle library - -v5.13.3 -------- - -* Improved float serialization when `-fsingle-precision-constant` is used -* Fixed `JsonVariant::is()` that returned true for empty strings -* Fixed `JsonVariant::is()` (closes #763) - -v5.13.2 -------- - -* Fixed `JsonBuffer::parse()` not respecting nesting limit correctly (issue #693) -* Fixed inconsistencies in nesting level counting (PR #695 from Zhenyu Wu) -* Fixed null values that could be pass to `strcmp()` (PR #745 from Mike Karlesky) -* Added macros `ARDUINOJSON_VERSION`, `ARDUINOJSON_VERSION_MAJOR`... - -v5.13.1 -------- - -* Fixed `JsonVariant::operator|(int)` that returned the default value if the variant contained a double (issue #675) -* Allowed non-quoted key to contain underscores (issue #665) - -v5.13.0 -------- - -* Changed the rules of string duplication (issue #658) -* `RawJson()` accepts any kind of string and obeys to the same rules for duplication -* Changed the return type of `strdup()` to `const char*` to prevent double duplication -* Marked `strdup()` as deprecated - -> ### New rules for string duplication -> -> | type | duplication | -> |:---------------------------|:------------| -> | const char* | no | -> | char* | ~~no~~ yes | -> | String | yes | -> | std::string | yes | -> | const __FlashStringHelper* | yes | -> -> These new rules make `JsonBuffer::strdup()` useless. - -v5.12.0 -------- - -* Added `JsonVariant::operator|` to return a default value (see below) -* Added a clear error message when compiled as C instead of C++ (issue #629) -* Added detection of MPLAB XC compiler (issue #629) -* Added detection of Keil ARM Compiler (issue #629) -* Added an example that shows how to save and load a configuration file -* Reworked all other examples - -> ### How to use the new feature? -> -> If you have a block like this: -> -> ```c++ -> const char* ssid = root["ssid"]; -> if (!ssid) -> ssid = "default ssid"; -> ``` -> -> You can simplify like that: -> -> ```c++ -> const char* ssid = root["ssid"] | "default ssid"; -> ``` - -v5.11.2 -------- - -* Fixed `DynamicJsonBuffer::clear()` not resetting allocation size (issue #561) -* Fixed incorrect rounding for float values (issue #588) - -v5.11.1 -------- - -* Removed dependency on `PGM_P` as Particle 0.6.2 doesn't define it (issue #546) -* Fixed warning "dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]" -* Fixed warning "floating constant exceeds range of 'float' [-Woverflow]" (issue #544) -* Fixed warning "this statement may fall through" [-Wimplicit-fallthrough=] (issue #539) -* Removed `ARDUINOJSON_DOUBLE_IS_64BITS` as it became useless. -* Fixed too many decimals places in float serialization (issue #543) - -v5.11.0 -------- - -* Made `JsonBuffer` non-copyable (PR #524 by @luisrayas3) -* Added `StaticJsonBuffer::clear()` -* Added `DynamicJsonBuffer::clear()` - -v5.10.1 -------- - -* Fixed IntelliSense errors in Visual Micro (issue #483) -* Fixed compilation in IAR Embedded Workbench (issue #515) -* Fixed reading "true" as a float (issue #516) -* Added `ARDUINOJSON_DOUBLE_IS_64BITS` -* Added `ARDUINOJSON_EMBEDDED_MODE` - -v5.10.0 -------- - -* Removed configurable number of decimal places (issues #288, #427 and #506) -* Changed exponentiation thresholds to `1e7` and `1e-5` (issues #288, #427 and #506) -* `JsonVariant::is()` now returns `true` for integers -* Fixed error `IsBaseOf is not a member of ArduinoJson::TypeTraits` (issue #495) -* Fixed error `forming reference to reference` (issue #495) - -> ### BREAKING CHANGES :warning: -> -> | Old syntax | New syntax | -> |:--------------------------------|:--------------------| -> | `double_with_n_digits(3.14, 2)` | `3.14` | -> | `float_with_n_digits(3.14, 2)` | `3.14f` | -> | `obj.set("key", 3.14, 2)` | `obj["key"] = 3.14` | -> | `arr.add(3.14, 2)` | `arr.add(3.14)` | -> -> | Input | Old output | New output | -> |:----------|:-----------|:-----------| -> | `3.14159` | `3.14` | `3.14159` | -> | `42.0` | `42.00` | `42` | -> | `0.0` | `0.00` | `0` | -> -> | Expression | Old result | New result | -> |:-------------------------------|:-----------|:-----------| -> | `JsonVariant(42).is()` | `true` | `true` | -> | `JsonVariant(42).is()` | `false` | `true` | -> | `JsonVariant(42).is()` | `false` | `true` | - -v5.9.0 ------- - -* Added `JsonArray::remove(iterator)` (issue #479) -* Added `JsonObject::remove(iterator)` -* Renamed `JsonArray::removeAt(size_t)` into `remove(size_t)` -* Renamed folder `include/` to `src/` -* Fixed warnings `floating constant exceeds range of float`and `floating constant truncated to zero` (issue #483) -* Removed `Print` class and converted `printTo()` to a template method (issue #276) -* Removed example `IndentedPrintExample.ino` -* Now compatible with Particle 0.6.1, thanks to Jacob Nite (issue #294 and PR #461 by @foodbag) - -v5.8.4 ------- - -* Added custom implementation of `strtod()` (issue #453) -* Added custom implementation of `strtol()` (issue #465) -* `char` is now treated as an integral type (issue #337, #370) - -v5.8.3 ------- - -* Fixed an access violation in `DynamicJsonBuffer` when memory allocation fails (issue #433) -* Added operators `==` and `!=` for two `JsonVariant`s (issue #436) -* Fixed `JsonVariant::operator[const FlashStringHelper*]` (issue #441) - -v5.8.2 ------- - -* Fixed parsing of comments (issue #421) -* Fixed ignored `Stream` timeout (issue #422) -* Made sure we don't read more that necessary (issue #422) -* Fixed error when the key of a `JsonObject` is a `char[]` (issue #423) -* Reduced code size when using `const` references -* Fixed error with string of type `unsigned char*` (issue #428) -* Added `deprecated` attribute on `asArray()`, `asObject()` and `asString()` (issue #420) - -v5.8.1 ------- - -* Fixed error when assigning a `volatile int` to a `JsonVariant` (issue #415) -* Fixed errors with Variable Length Arrays (issue #416) -* Fixed error when both `ARDUINOJSON_ENABLE_STD_STREAM` and `ARDUINOJSON_ENABLE_ARDUINO_STREAM` are set to `1` -* Fixed error "Stream does not name a type" (issue #412) - -v5.8.0 ------- - -* Added operator `==` to compare `JsonVariant` and strings (issue #402) -* Added support for `Stream` (issue #300) -* Reduced memory consumption by not duplicating spaces and comments - -> ### BREAKING CHANGES :warning: -> -> `JsonBuffer::parseObject()` and `JsonBuffer::parseArray()` have been pulled down to the derived classes `DynamicJsonBuffer` and `StaticJsonBufferBase`. -> -> This means that if you have code like: -> -> ```c++ -> void myFunction(JsonBuffer& jsonBuffer); -> ``` -> -> you need to replace it with one of the following: -> -> ```c++ -> void myFunction(DynamicJsonBuffer& jsonBuffer); -> void myFunction(StaticJsonBufferBase& jsonBuffer); -> template void myFunction(TJsonBuffer& jsonBuffer); -> ``` - -v5.7.3 ------- - -* Added an `printTo(char[N])` and `prettyPrintTo(char[N])` (issue #292) -* Added ability to set a nested value like this: `root["A"]["B"] = "C"` (issue #352) -* Renamed `*.ipp` to `*Impl.hpp` because they were ignored by Arduino IDE (issue #396) - -v5.7.2 ------- - -* Made PROGMEM available on more platforms (issue #381) -* Fixed PROGMEM causing an exception on ESP8266 (issue #383) - -v5.7.1 ------- - -* Added support for PROGMEM (issue #76) -* Fixed compilation error when index is not an `int` (issue #381) - -v5.7.0 ------- - -* Templatized all functions using `String` or `std::string` -* Removed `ArduinoJson::String` -* Removed `JsonVariant::defaultValue()` -* Removed non-template `JsonObject::get()` and `JsonArray.get()` -* Fixed support for `StringSumHelper` (issue #184) -* Replaced `ARDUINOJSON_USE_ARDUINO_STRING` by `ARDUINOJSON_ENABLE_STD_STRING` and `ARDUINOJSON_ENABLE_ARDUINO_STRING` (issue #378) -* Added example `StringExample.ino` to show where `String` can be used -* Increased default nesting limit to 50 when compiled for a computer (issue #349) - -> ### BREAKING CHANGES :warning: -> -> The non-template functions `JsonObject::get()` and `JsonArray.get()` have been removed. This means that you need to explicitely tell the type you expect in return. -> -> Old code: -> -> ```c++ -> #define ARDUINOJSON_USE_ARDUINO_STRING 0 -> JsonVariant value1 = myObject.get("myKey"); -> JsonVariant value2 = myArray.get(0); -> ``` -> -> New code: -> -> ```c++ -> #define ARDUINOJSON_ENABLE_ARDUINO_STRING 0 -> #define ARDUINOJSON_ENABLE_STD_STRING 1 -> JsonVariant value1 = myObject.get("myKey"); -> JsonVariant value2 = myArray.get(0); -> ``` - -v5.6.7 ------- - -* Fixed `array[idx].as()` and `object[key].as()` -* Fixed return value of `JsonObject::set()` (issue #350) -* Fixed undefined behavior in `Prettyfier` and `Print` (issue #354) -* Fixed parser that incorrectly rejected floats containing a `+` (issue #349) - -v5.6.6 ------- - -* Fixed `-Wparentheses` warning introduced in v5.6.5 (PR #335 by @nuket) -* Added `.mbedignore` for ARM mbdeb (PR #334 by @nuket) -* Fixed `JsonVariant::success()` which didn't propagate `JsonArray::success()` nor `JsonObject::success()` (issue #342). - -v5.6.5 ------- - -* `as()` now returns `true` when input is `null` (issue #330) - -v5.6.4 ------- - -* Fixed error in float serialization (issue #324) - -v5.6.3 ------- - -* Improved speed of float serialization (about twice faster) -* Added `as()` as a synonym for `as()`... (issue #291) -* Fixed `call of overloaded isinf(double&) is ambiguous` (issue #284) - -v5.6.2 ------- - -* Fixed build when another lib does `#undef isnan` (issue #284) - -v5.6.1 ------- - -* Added missing `#pragma once` (issue #310) - -v5.6.0 ------- - -* ArduinoJson is now a header-only library (issue #199) - -v5.5.1 ------- - -* Fixed compilation error with Intel Galileo (issue #299) - -v5.5.0 ------- - -* Added `JsonVariant::success()` (issue #279) -* Renamed `JsonVariant::invalid()` to `JsonVariant::defaultValue()` - -v5.4.0 ------- - -* Changed `::String` to `ArduinoJson::String` (issue #275) -* Changed `::Print` to `ArduinoJson::Print` too - -v5.3.0 ------- - -* Added custom implementation of `ftoa` (issues #266, #267, #269 and #270) -* Added `JsonVariant JsonBuffer::parse()` (issue #265) -* Fixed `unsigned long` printed as `signed long` (issue #170) - -v5.2.0 ------- - -* Added `JsonVariant::as()` as a synonym for `JsonVariant::as()` (issue #257) -* Added example `JsonHttpClient` (issue #256) -* Added `JsonArray::copyTo()` and `JsonArray::copyFrom()` (issue #254) -* Added `RawJson()` to insert pregenerated JSON portions (issue #259) - -v5.1.1 ------- - -* Removed `String` duplication when one replaces a value in a `JsonObject` (PR #232 by @ulion) - -v5.1.0 ------- - -* Added support of `long long` (issue #171) -* Moved all build settings to `ArduinoJson/Configuration.hpp` - -> ### BREAKING CHANGE :warning: -> -> If you defined `ARDUINOJSON_ENABLE_STD_STREAM`, you now need to define it to `1`. - -v5.0.8 ------- - -* Made the library compatible with [PlatformIO](http://platformio.org/) (issue #181) -* Fixed `JsonVariant::is()` that was incorrectly returning false (issue #214) - -v5.0.7 ------- - -* Made library easier to use from a CMake project: simply `add_subdirectory(ArduinoJson/src)` -* Changed `String` to be a `typedef` of `std::string` (issues #142 and #161) - -> ### BREAKING CHANGES :warning: -> -> - `JsonVariant(true).as()` now returns `"true"` instead of `"1"` -> - `JsonVariant(false).as()` now returns `"false"` instead of `"0"` - -v5.0.6 ------- - -* Added parameter to `DynamicJsonBuffer` constructor to set initial size (issue #152) -* Fixed warning about library category in Arduino 1.6.6 (issue #147) -* Examples: Added a loop to wait for serial port to be ready (issue #156) - -v5.0.5 ------- - -* Added overload `JsonObjectSuscript::set(value, decimals)` (issue #143) -* Use `float` instead of `double` to reduce the size of `JsonVariant` (issue #134) - -v5.0.4 ------- - -* Fixed ambiguous overload with `JsonArraySubscript` and `JsonObjectSubscript` (issue #122) - -v5.0.3 ------- - -* Fixed `printTo(String)` which wrote numbers instead of strings (issue #120) -* Fixed return type of `JsonArray::is()` and some others (issue #121) - -v5.0.2 ------- - -* Fixed segmentation fault in `parseObject(String)` and `parseArray(String)`, when the - `StaticJsonBuffer` is too small to hold a copy of the string -* Fixed Clang warning "register specifier is deprecated" (issue #102) -* Fixed GCC warning "declaration shadows a member" (issue #103) -* Fixed memory alignment, which made ESP8266 crash (issue #104) -* Fixed compilation on Visual Studio 2010 and 2012 (issue #107) - -v5.0.1 ------- - -* Fixed compilation with Arduino 1.0.6 (issue #99) - -v5.0.0 ------- - -* Added support of `String` class (issues #55, #56, #70, #77) -* Added `JsonBuffer::strdup()` to make a copy of a string (issues #10, #57) -* Implicitly call `strdup()` for `String` but not for `char*` (issues #84, #87) -* Added support of non standard JSON input (issue #44) -* Added support of comments in JSON input (issue #88) -* Added implicit cast between numerical types (issues #64, #69, #93) -* Added ability to read number values as string (issue #90) -* Redesigned `JsonVariant` to leverage converting constructors instead of assignment operators (issue #66) -* Switched to new the library layout (requires Arduino 1.0.6 or above) - -> ### BREAKING CHANGES :warning: -> -> - `JsonObject::add()` was renamed to `set()` -> - `JsonArray::at()` and `JsonObject::at()` were renamed to `get()` -> - Number of digits of floating point value are now set with `double_with_n_digits()` - -**Personal note about the `String` class**: -Support of the `String` class has been added to the library because many people use it in their programs. -However, you should not see this as an invitation to use the `String` class. -The `String` class is **bad** because it uses dynamic memory allocation. -Compared to static allocation, it compiles to a bigger, slower program, and is less predictable. -You certainly don't want that in an embedded environment! - -v4.6 ----- - -* Fixed segmentation fault in `DynamicJsonBuffer` when memory allocation fails (issue #92) - -v4.5 ----- - -* Fixed buffer overflow when input contains a backslash followed by a terminator (issue #81) - -**Upgrading is recommended** since previous versions contain a potential security risk. - -Special thanks to [Giancarlo Canales Barreto](https://github.com/gcanalesb) for finding this nasty bug. - -v4.4 ----- - -* Added `JsonArray::measureLength()` and `JsonObject::measureLength()` (issue #75) - -v4.3 ----- - -* Added `JsonArray::removeAt()` to remove an element of an array (issue #58) -* Fixed stack-overflow in `DynamicJsonBuffer` when parsing huge JSON files (issue #65) -* Fixed wrong return value of `parseArray()` and `parseObject()` when allocation fails (issue #68) - -v4.2 ----- - -* Switched back to old library layout (issues #39, #43 and #45) -* Removed global new operator overload (issue #40, #45 and #46) -* Added an example with EthernetServer - -v4.1 ----- - -* Added DynamicJsonBuffer (issue #19) - -v4.0 ----- - -* Unified parser and generator API (issue #23) -* Updated library layout, now requires Arduino 1.0.6 or newer - -> ### BREAKING CHANGES :warning: -> -> API changed significantly since v3, see [Migrating code to the new API](https://arduinojson.org/doc/migration/). - diff --git a/lib/ArduinoJson-5.13.4/LICENSE.md b/lib/ArduinoJson-5.13.4/LICENSE.md deleted file mode 100644 index f0c4b5ae7..000000000 --- a/lib/ArduinoJson-5.13.4/LICENSE.md +++ /dev/null @@ -1,10 +0,0 @@ -The MIT License (MIT) ---------------------- - -Copyright © 2014-2018 Benoit BLANCHON - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/lib/ArduinoJson-5.13.4/README.md b/lib/ArduinoJson-5.13.4/README.md deleted file mode 100644 index 8ddc698fc..000000000 --- a/lib/ArduinoJson-5.13.4/README.md +++ /dev/null @@ -1,110 +0,0 @@ -![ArduinoJson](banner.svg) - ---- - -[![Build status](https://ci.appveyor.com/api/projects/status/m7s53wav1l0abssg/branch/master?svg=true)](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/master) [![Build Status](https://travis-ci.org/bblanchon/ArduinoJson.svg?branch=master)](https://travis-ci.org/bblanchon/ArduinoJson) [![Coverage Status](https://img.shields.io/coveralls/bblanchon/ArduinoJson.svg)](https://coveralls.io/r/bblanchon/ArduinoJson?branch=master) [![Star this project](http://githubbadges.com/star.svg?user=bblanchon&repo=ArduinoJson&style=flat&color=fff&background=007ec6)](https://github.com/bblanchon/ArduinoJson) - -ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things). - -## Features - -* JSON decoding (comments are supported) -* JSON encoding (with optional indentation) -* Elegant API, easy to use -* Fixed memory allocation (zero malloc) -* No data duplication (zero copy) -* Portable (written in C++98, can be used in any C++ project) -* Self-contained (no external dependency) -* Small footprint -* Input and output streams -* [100% code coverage](https://coveralls.io/github/bblanchon/ArduinoJson) -* [Header-only library](https://en.wikipedia.org/wiki/Header-only) -* [MIT License](https://en.wikipedia.org/wiki/MIT_License) -* [Comprehensive documentation](https://arduinojson.org?utm_source=github&utm_medium=readme) - -## Compatibility - -ArduinoJson works on the following hardware: - -* Arduino boards: [Uno](https://www.arduino.cc/en/Main/ArduinoBoardUno), [Due](https://www.arduino.cc/en/Main/ArduinoBoardDue), [Mini](https://www.arduino.cc/en/Main/ArduinoBoardMini), [Micro](https://www.arduino.cc/en/Main/ArduinoBoardMicro), [Yun](https://www.arduino.cc/en/Main/ArduinoBoardYun)... -* Espressif chips: [ESP8266](https://en.wikipedia.org/wiki/ESP8266), [ESP32](https://en.wikipedia.org/wiki/ESP32) -* WeMos boards: [D1](https://wiki.wemos.cc/products:d1:d1), [D1 mini](https://wiki.wemos.cc/products:d1:d1_mini), ... -* RedBearLab boards: [BLE Nano](http://redbearlab.com/blenano/), [BLE Mini](http://redbearlab.com/blemini/), [WiFi Micro](https://redbear.cc/product/wifi/wifi-micro.html), [LOLIN32](https://wiki.wemos.cc/products:lolin32:lolin32)... -* [Teensy](https://www.pjrc.com/teensy/) boards -* Intel boards: Edison, Galileo... -* Particle boards: [Photon](https://www.particle.io/products/hardware/photon-wifi-dev-kit), [Electron](https://www.particle.io/products/hardware/electron-cellular-dev-kit)... -* Texas Instruments boards: [MSP430](http://www.ti.com/microcontrollers/msp430-ultra-low-power-mcus/overview/overview.html)... - -ArduinoJson compiles with zero warning on the following compilers, IDEs, and platforms: - -* [Arduino IDE](https://www.arduino.cc/en/Main/Software) -* [PlatformIO](http://platformio.org/) -* [Energia](http://energia.nu/) -* [Visual Micro](http://www.visualmicro.com/) -* [Atmel Studio](http://www.atmel.com/microsite/atmel-studio/) -* [IAR Embedded Workbench](https://www.iar.com/iar-embedded-workbench/) -* [Atollic TrueSTUDIO](https://atollic.com/truestudio/) -* [Keil uVision](http://www.keil.com/) -* [MPLAB X IDE](http://www.microchip.com/mplab/mplab-x-ide) -* [GCC](https://gcc.gnu.org/) -* [Clang](https://clang.llvm.org/) -* [Visual Studio](https://www.visualstudio.com/) - -## Quickstart - -### Deserialization - -Here is a program that parses a JSON document with ArduinoJson. - -```c++ -char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}"; - -StaticJsonBuffer<200> jsonBuffer; - -JsonObject& root = jsonBuffer.parseObject(json); - -const char* sensor = root["sensor"]; -long time = root["time"]; -double latitude = root["data"][0]; -double longitude = root["data"][1]; -``` - -See the [tutorial on arduinojson.org](https://arduinojson.org/doc/decoding/?utm_source=github&utm_medium=readme) - -### Serialization - -Here is a program that generates a JSON document with ArduinoJson: - -```c++ -StaticJsonBuffer<200> jsonBuffer; - -JsonObject& root = jsonBuffer.createObject(); -root["sensor"] = "gps"; -root["time"] = 1351824120; - -JsonArray& data = root.createNestedArray("data"); -data.add(48.756080); -data.add(2.302038); - -root.printTo(Serial); -// This prints: -// {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]} -``` - -See the [tutorial on arduinojson.org](https://arduinojson.org/doc/encoding/?utm_source=github&utm_medium=readme) - -## Documentation - -The documentation is available on [arduinojson.org](https://arduinojson.org/?utm_source=github&utm_medium=readme), here are some shortcuts: - -* The [Examples](https://arduinojson.org/example/?utm_source=github&utm_medium=readme) show how to use the library in various situations. -* The [API Reference](https://arduinojson.org/api/?utm_source=github&utm_medium=readme) contains the description of each class and function. -* The [FAQ](https://arduinojson.org/faq/?utm_source=github&utm_medium=readme) has the answer to virtually every question. -* The [ArduinoJson Assistant](https://arduinojson.org/assistant/?utm_source=github&utm_medium=readme) writes programs for you! - ---- - -Do you like this library? Please [star this project on GitHub](https://github.com/bblanchon/ArduinoJson/stargazers)! - -What? You don't like it but you *love* it? -We don't take donations anymore, but [we sell a book](https://arduinojson.org/book/?utm_source=github&utm_medium=readme), so you can help and learn at the same time! \ No newline at end of file diff --git a/lib/ArduinoJson-5.13.4/examples/JsonConfigFile/JsonConfigFile.ino b/lib/ArduinoJson-5.13.4/examples/JsonConfigFile/JsonConfigFile.ino deleted file mode 100644 index 2ccf7d673..000000000 --- a/lib/ArduinoJson-5.13.4/examples/JsonConfigFile/JsonConfigFile.ino +++ /dev/null @@ -1,144 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License -// -// This example shows how to store your project configuration in a file. -// It uses the SD library but can be easily modified for any other file-system. -// -// The file contains a JSON document with the following content: -// { -// "hostname": "examples.com", -// "port": 2731 -// } - -#include -#include -#include - -// Configuration that we'll store on disk -struct Config { - char hostname[64]; - int port; -}; - -const char *filename = "/config.txt"; // <- SD library uses 8.3 filenames -Config config; // <- global configuration object - -// Loads the configuration from a file -void loadConfiguration(const char *filename, Config &config) { - // Open file for reading - File file = SD.open(filename); - - // Allocate the memory pool on the stack. - // Don't forget to change the capacity to match your JSON document. - // Use arduinojson.org/assistant to compute the capacity. - StaticJsonBuffer<512> jsonBuffer; - - // Parse the root object - JsonObject &root = jsonBuffer.parseObject(file); - - if (!root.success()) - Serial.println(F("Failed to read file, using default configuration")); - - // Copy values from the JsonObject to the Config - config.port = root["port"] | 2731; - strlcpy(config.hostname, // <- destination - root["hostname"] | "example.com", // <- source - sizeof(config.hostname)); // <- destination's capacity - - // Close the file (File's destructor doesn't close the file) - file.close(); -} - -// Saves the configuration to a file -void saveConfiguration(const char *filename, const Config &config) { - // Delete existing file, otherwise the configuration is appended to the file - SD.remove(filename); - - // Open file for writing - File file = SD.open(filename, FILE_WRITE); - if (!file) { - Serial.println(F("Failed to create file")); - return; - } - - // Allocate the memory pool on the stack - // Don't forget to change the capacity to match your JSON document. - // Use https://arduinojson.org/assistant/ to compute the capacity. - StaticJsonBuffer<256> jsonBuffer; - - // Parse the root object - JsonObject &root = jsonBuffer.createObject(); - - // Set the values - root["hostname"] = config.hostname; - root["port"] = config.port; - - // Serialize JSON to file - if (root.printTo(file) == 0) { - Serial.println(F("Failed to write to file")); - } - - // Close the file (File's destructor doesn't close the file) - file.close(); -} - -// Prints the content of a file to the Serial -void printFile(const char *filename) { - // Open file for reading - File file = SD.open(filename); - if (!file) { - Serial.println(F("Failed to read file")); - return; - } - - // Extract each characters by one by one - while (file.available()) { - Serial.print((char)file.read()); - } - Serial.println(); - - // Close the file (File's destructor doesn't close the file) - file.close(); -} - -void setup() { - // Initialize serial port - Serial.begin(9600); - while (!Serial) continue; - - // Initialize SD library - while (!SD.begin()) { - Serial.println(F("Failed to initialize SD library")); - delay(1000); - } - - // Should load default config if run for the first time - Serial.println(F("Loading configuration...")); - loadConfiguration(filename, config); - - // Create configuration file - Serial.println(F("Saving configuration...")); - saveConfiguration(filename, config); - - // Dump config file - Serial.println(F("Print config file...")); - printFile(filename); -} - -void loop() { - // not used in this example -} - -// See also -// -------- -// -// https://arduinojson.org/ contains the documentation for all the functions -// used above. It also includes an FAQ that will help you solve any -// serialization or deserialization problem. -// -// The book "Mastering ArduinoJson" contains a case study of a project that has -// a complex configuration with nested members. -// Contrary to this example, the project in the book uses the SPIFFS filesystem. -// Learn more at https://arduinojson.org/book/ -// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/lib/ArduinoJson-5.13.4/examples/JsonGeneratorExample/JsonGeneratorExample.ino b/lib/ArduinoJson-5.13.4/examples/JsonGeneratorExample/JsonGeneratorExample.ino deleted file mode 100644 index 7b38227b3..000000000 --- a/lib/ArduinoJson-5.13.4/examples/JsonGeneratorExample/JsonGeneratorExample.ino +++ /dev/null @@ -1,81 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License -// -// This example shows how to generate a JSON document with ArduinoJson. - -#include - -void setup() { - // Initialize Serial port - Serial.begin(9600); - while (!Serial) continue; - - // Memory pool for JSON object tree. - // - // Inside the brackets, 200 is the size of the pool in bytes. - // Don't forget to change this value to match your JSON document. - // Use arduinojson.org/assistant to compute the capacity. - StaticJsonBuffer<200> jsonBuffer; - - // StaticJsonBuffer allocates memory on the stack, it can be - // replaced by DynamicJsonBuffer which allocates in the heap. - // - // DynamicJsonBuffer jsonBuffer(200); - - // Create the root of the object tree. - // - // It's a reference to the JsonObject, the actual bytes are inside the - // JsonBuffer with all the other nodes of the object tree. - // Memory is freed when jsonBuffer goes out of scope. - JsonObject& root = jsonBuffer.createObject(); - - // Add values in the object - // - // Most of the time, you can rely on the implicit casts. - // In other case, you can do root.set("time", 1351824120); - root["sensor"] = "gps"; - root["time"] = 1351824120; - - // Add a nested array. - // - // It's also possible to create the array separately and add it to the - // JsonObject but it's less efficient. - JsonArray& data = root.createNestedArray("data"); - data.add(48.756080); - data.add(2.302038); - - root.printTo(Serial); - // This prints: - // {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]} - - Serial.println(); - - root.prettyPrintTo(Serial); - // This prints: - // { - // "sensor": "gps", - // "time": 1351824120, - // "data": [ - // 48.756080, - // 2.302038 - // ] - // } -} - -void loop() { - // not used in this example -} - -// See also -// -------- -// -// https://arduinojson.org/ contains the documentation for all the functions -// used above. It also includes an FAQ that will help you solve any -// serialization problem. -// -// The book "Mastering ArduinoJson" contains a tutorial on serialization. -// It begins with a simple example, like the one above, and then adds more -// features like serializing directly to a file or an HTTP request. -// Learn more at https://arduinojson.org/book/ -// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/lib/ArduinoJson-5.13.4/examples/JsonHttpClient/JsonHttpClient.ino b/lib/ArduinoJson-5.13.4/examples/JsonHttpClient/JsonHttpClient.ino deleted file mode 100644 index 4ce1c20d1..000000000 --- a/lib/ArduinoJson-5.13.4/examples/JsonHttpClient/JsonHttpClient.ino +++ /dev/null @@ -1,112 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License -// -// This example shows how to parse a JSON document in an HTTP response. -// It uses the Ethernet library, but can be easily adapted for Wifi. -// -// It performs a GET resquest on arduinojson.org/example.json -// Here is the expected response: -// { -// "sensor": "gps", -// "time": 1351824120, -// "data": [ -// 48.756080, -// 2.302038 -// ] -// } - -#include -#include -#include - -void setup() { - // Initialize Serial port - Serial.begin(9600); - while (!Serial) continue; - - // Initialize Ethernet library - byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; - if (!Ethernet.begin(mac)) { - Serial.println(F("Failed to configure Ethernet")); - return; - } - delay(1000); - - Serial.println(F("Connecting...")); - - // Connect to HTTP server - EthernetClient client; - client.setTimeout(10000); - if (!client.connect("arduinojson.org", 80)) { - Serial.println(F("Connection failed")); - return; - } - - Serial.println(F("Connected!")); - - // Send HTTP request - client.println(F("GET /example.json HTTP/1.0")); - client.println(F("Host: arduinojson.org")); - client.println(F("Connection: close")); - if (client.println() == 0) { - Serial.println(F("Failed to send request")); - return; - } - - // Check HTTP status - char status[32] = {0}; - client.readBytesUntil('\r', status, sizeof(status)); - if (strcmp(status, "HTTP/1.1 200 OK") != 0) { - Serial.print(F("Unexpected response: ")); - Serial.println(status); - return; - } - - // Skip HTTP headers - char endOfHeaders[] = "\r\n\r\n"; - if (!client.find(endOfHeaders)) { - Serial.println(F("Invalid response")); - return; - } - - // Allocate JsonBuffer - // Use arduinojson.org/assistant to compute the capacity. - const size_t capacity = JSON_OBJECT_SIZE(3) + JSON_ARRAY_SIZE(2) + 60; - DynamicJsonBuffer jsonBuffer(capacity); - - // Parse JSON object - JsonObject& root = jsonBuffer.parseObject(client); - if (!root.success()) { - Serial.println(F("Parsing failed!")); - return; - } - - // Extract values - Serial.println(F("Response:")); - Serial.println(root["sensor"].as()); - Serial.println(root["time"].as()); - Serial.println(root["data"][0].as()); - Serial.println(root["data"][1].as()); - - // Disconnect - client.stop(); -} - -void loop() { - // not used in this example -} - -// See also -// -------- -// -// https://arduinojson.org/ contains the documentation for all the functions -// used above. It also includes an FAQ that will help you solve any -// serialization problem. -// -// The book "Mastering ArduinoJson" contains a tutorial on deserialization -// showing how to parse the response from Yahoo Weather. In the last chapter, -// it shows how to parse the huge documents from OpenWeatherMap -// and Weather Underground. -// Learn more at https://arduinojson.org/book/ -// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/lib/ArduinoJson-5.13.4/examples/JsonParserExample/JsonParserExample.ino b/lib/ArduinoJson-5.13.4/examples/JsonParserExample/JsonParserExample.ino deleted file mode 100644 index 6c16211b5..000000000 --- a/lib/ArduinoJson-5.13.4/examples/JsonParserExample/JsonParserExample.ino +++ /dev/null @@ -1,78 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License -// -// This example shows how to deserialize a JSON document with ArduinoJson. - -#include - -void setup() { - // Initialize serial port - Serial.begin(9600); - while (!Serial) continue; - - // Memory pool for JSON object tree. - // - // Inside the brackets, 200 is the size of the pool in bytes. - // Don't forget to change this value to match your JSON document. - // Use arduinojson.org/assistant to compute the capacity. - StaticJsonBuffer<200> jsonBuffer; - - // StaticJsonBuffer allocates memory on the stack, it can be - // replaced by DynamicJsonBuffer which allocates in the heap. - // - // DynamicJsonBuffer jsonBuffer(200); - - // JSON input string. - // - // It's better to use a char[] as shown here. - // If you use a const char* or a String, ArduinoJson will - // have to make a copy of the input in the JsonBuffer. - char json[] = - "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}"; - - // Root of the object tree. - // - // It's a reference to the JsonObject, the actual bytes are inside the - // JsonBuffer with all the other nodes of the object tree. - // Memory is freed when jsonBuffer goes out of scope. - JsonObject& root = jsonBuffer.parseObject(json); - - // Test if parsing succeeds. - if (!root.success()) { - Serial.println("parseObject() failed"); - return; - } - - // Fetch values. - // - // Most of the time, you can rely on the implicit casts. - // In other case, you can do root["time"].as(); - const char* sensor = root["sensor"]; - long time = root["time"]; - double latitude = root["data"][0]; - double longitude = root["data"][1]; - - // Print values. - Serial.println(sensor); - Serial.println(time); - Serial.println(latitude, 6); - Serial.println(longitude, 6); -} - -void loop() { - // not used in this example -} - -// See also -// -------- -// -// https://arduinojson.org/ contains the documentation for all the functions -// used above. It also includes an FAQ that will help you solve any -// deserialization problem. -// -// The book "Mastering ArduinoJson" contains a tutorial on deserialization. -// It begins with a simple example, like the one above, and then adds more -// features like deserializing directly from a file or an HTTP request. -// Learn more at https://arduinojson.org/book/ -// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/lib/ArduinoJson-5.13.4/examples/JsonServer/JsonServer.ino b/lib/ArduinoJson-5.13.4/examples/JsonServer/JsonServer.ino deleted file mode 100644 index e693ae176..000000000 --- a/lib/ArduinoJson-5.13.4/examples/JsonServer/JsonServer.ino +++ /dev/null @@ -1,109 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License -// -// This example shows how to implement an HTTP server that sends JSON document -// in the responses. -// It uses the Ethernet library but can be easily adapted for Wifi. -// -// It sends the value of the analog and digital pins. -// The JSON document looks like the following: -// { -// "analog": [ 0, 1, 2, 3, 4, 5 ], -// "digital": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ] -// } - -#include -#include -#include - -byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; -EthernetServer server(80); - -void setup() { - // Initialize serial port - Serial.begin(9600); - while (!Serial) continue; - - // Initialize Ethernet libary - if (!Ethernet.begin(mac)) { - Serial.println(F("Failed to initialize Ethernet library")); - return; - } - - // Start to listen - server.begin(); - - Serial.println(F("Server is ready.")); - Serial.print(F("Please connect to http://")); - Serial.println(Ethernet.localIP()); -} - -void loop() { - // Wait for an incomming connection - EthernetClient client = server.available(); - - // Do we have a client? - if (!client) return; - - Serial.println(F("New client")); - - // Read the request (we ignore the content in this example) - while (client.available()) client.read(); - - // Allocate JsonBuffer - // Use arduinojson.org/assistant to compute the capacity. - StaticJsonBuffer<500> jsonBuffer; - - // Create the root object - JsonObject& root = jsonBuffer.createObject(); - - // Create the "analog" array - JsonArray& analogValues = root.createNestedArray("analog"); - for (int pin = 0; pin < 6; pin++) { - // Read the analog input - int value = analogRead(pin); - - // Add the value at the end of the array - analogValues.add(value); - } - - // Create the "digital" array - JsonArray& digitalValues = root.createNestedArray("digital"); - for (int pin = 0; pin < 14; pin++) { - // Read the digital input - int value = digitalRead(pin); - - // Add the value at the end of the array - digitalValues.add(value); - } - - Serial.print(F("Sending: ")); - root.printTo(Serial); - Serial.println(); - - // Write response headers - client.println("HTTP/1.0 200 OK"); - client.println("Content-Type: application/json"); - client.println("Connection: close"); - client.println(); - - // Write JSON document - root.prettyPrintTo(client); - - // Disconnect - client.stop(); -} - -// See also -// -------- -// -// https://arduinojson.org/ contains the documentation for all the functions -// used above. It also includes an FAQ that will help you solve any -// serialization problem. -// -// The book "Mastering ArduinoJson" contains a tutorial on serialization. -// It begins with a simple example, then adds more features like serializing -// directly to a file or an HTTP client. -// Learn more at https://arduinojson.org/book/ -// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/lib/ArduinoJson-5.13.4/examples/JsonUdpBeacon/JsonUdpBeacon.ino b/lib/ArduinoJson-5.13.4/examples/JsonUdpBeacon/JsonUdpBeacon.ino deleted file mode 100644 index b2328a62d..000000000 --- a/lib/ArduinoJson-5.13.4/examples/JsonUdpBeacon/JsonUdpBeacon.ino +++ /dev/null @@ -1,101 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License -// -// This example shows how to send a JSON document to a UDP socket. -// At regular interval, it sends a UDP packet that contains the status of -// analog and digital pins. -// The JSON document looks like the following: -// { -// "analog": [ 0, 1, 2, 3, 4, 5 ], -// "digital": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ] -// } -// -// If you want to test this program, you need to be able to receive the UDP -// packets. -// For example, you can run netcat on your computer -// $ ncat -ulp 8888 -// See https://nmap.org/ncat/ - -#include -#include -#include - -byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; -IPAddress remoteIp(192, 168, 0, 108); // <- EDIT!!!! -unsigned short remotePort = 8888; -unsigned short localPort = 8888; -EthernetUDP udp; - -void setup() { - // Initialize serial port - Serial.begin(9600); - while (!Serial) continue; - - // Initialize Ethernet libary - if (!Ethernet.begin(mac)) { - Serial.println(F("Failed to initialize Ethernet library")); - return; - } - - // Enable UDP - udp.begin(localPort); -} - -void loop() { - // Allocate JsonBuffer - // Use arduinojson.org/assistant to compute the capacity. - StaticJsonBuffer<500> jsonBuffer; - - // Create the root object - JsonObject& root = jsonBuffer.createObject(); - - // Create the "analog" array - JsonArray& analogValues = root.createNestedArray("analog"); - for (int pin = 0; pin < 6; pin++) { - // Read the analog input - int value = analogRead(pin); - - // Add the value at the end of the array - analogValues.add(value); - } - - // Create the "digital" array - JsonArray& digitalValues = root.createNestedArray("digital"); - for (int pin = 0; pin < 14; pin++) { - // Read the digital input - int value = digitalRead(pin); - - // Add the value at the end of the array - digitalValues.add(value); - } - - // Log - Serial.print(F("Sending to ")); - Serial.print(remoteIp); - Serial.print(F(" on port ")); - Serial.println(remotePort); - root.printTo(Serial); - - // Send UDP packet - udp.beginPacket(remoteIp, remotePort); - root.printTo(udp); - udp.println(); - udp.endPacket(); - - // Wait - delay(10000); -} - -// See also -// -------- -// -// https://arduinojson.org/ contains the documentation for all the functions -// used above. It also includes an FAQ that will help you solve any -// serialization problem. -// -// The book "Mastering ArduinoJson" contains a tutorial on serialization. -// It begins with a simple example, then adds more features like serializing -// directly to a file or any stream. -// Learn more at https://arduinojson.org/book/ -// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/lib/ArduinoJson-5.13.4/examples/ProgmemExample/ProgmemExample.ino b/lib/ArduinoJson-5.13.4/examples/ProgmemExample/ProgmemExample.ino deleted file mode 100644 index ddde8fd1d..000000000 --- a/lib/ArduinoJson-5.13.4/examples/ProgmemExample/ProgmemExample.ino +++ /dev/null @@ -1,70 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License -// -// This example shows the different ways you can use Flash strings with -// ArduinoJson. -// -// Use Flash strings sparingly, because ArduinoJson duplicates them in the -// JsonBuffer. Prefer plain old char*, as they are more efficient in term of -// code size, speed, and memory usage. - -#include - -void setup() { -#ifdef PROGMEM // <- check that Flash strings are supported - - DynamicJsonBuffer jsonBuffer; - - // You can use a Flash String as your JSON input. - // WARNING: the content of the Flash String will be duplicated in the - // JsonBuffer. - JsonObject& root = - jsonBuffer.parseObject(F("{\"sensor\":\"gps\",\"time\":1351824120," - "\"data\":[48.756080,2.302038]}")); - - // You can use a Flash String to get an element of a JsonObject - // No duplication is done. - long time = root[F("time")]; - - // You can use a Flash String to set an element of a JsonObject - // WARNING: the content of the Flash String will be duplicated in the - // JsonBuffer. - root[F("time")] = time; - - // You can set a Flash String to a JsonObject or JsonArray: - // WARNING: the content of the Flash String will be duplicated in the - // JsonBuffer. - root["sensor"] = F("gps"); - - // It works with RawJson too: - root["sensor"] = RawJson(F("\"gps\"")); - - // You can compare the content of a JsonVariant to a Flash String - if (root["sensor"] == F("gps")) { - // ... - } - -#else - -#warning PROGMEM is not supported on this platform - -#endif -} - -void loop() { - // not used in this example -} - -// See also -// -------- -// -// https://arduinojson.org/ contains the documentation for all the functions -// used above. It also includes an FAQ that will help you solve any memory -// problem. -// -// The book "Mastering ArduinoJson" contains a quick C++ course that explains -// how your microcontroller stores strings in memory. It also tells why you -// should not abuse Flash strings with ArduinoJson. -// Learn more at https://arduinojson.org/book/ -// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/lib/ArduinoJson-5.13.4/examples/StringExample/StringExample.ino b/lib/ArduinoJson-5.13.4/examples/StringExample/StringExample.ino deleted file mode 100644 index fc7503d0e..000000000 --- a/lib/ArduinoJson-5.13.4/examples/StringExample/StringExample.ino +++ /dev/null @@ -1,74 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License -// -// This example shows the different ways you can use String with ArduinoJson. -// -// Use String objects sparingly, because ArduinoJson duplicates them in the -// JsonBuffer. Prefer plain old char[], as they are more efficient in term of -// code size, speed, and memory usage. - -#include - -void setup() { - DynamicJsonBuffer jsonBuffer; - - // You can use a String as your JSON input. - // WARNING: the content of the String will be duplicated in the JsonBuffer. - String input = - "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}"; - JsonObject& root = jsonBuffer.parseObject(input); - - // You can use a String to get an element of a JsonObject - // No duplication is done. - long time = root[String("time")]; - - // You can use a String to set an element of a JsonObject - // WARNING: the content of the String will be duplicated in the JsonBuffer. - root[String("time")] = time; - - // You can get a String from a JsonObject or JsonArray: - // No duplication is done, at least not in the JsonBuffer. - String sensor = root["sensor"]; - - // Unfortunately, the following doesn't work (issue #118): - // sensor = root["sensor"]; // <- error "ambiguous overload for 'operator='" - // As a workaround, you need to replace by: - sensor = root["sensor"].as(); - - // You can set a String to a JsonObject or JsonArray: - // WARNING: the content of the String will be duplicated in the JsonBuffer. - root["sensor"] = sensor; - - // It works with RawJson too: - root["sensor"] = RawJson(sensor); - - // You can also concatenate strings - // WARNING: the content of the String will be duplicated in the JsonBuffer. - root[String("sen") + "sor"] = String("gp") + "s"; - - // You can compare the content of a JsonObject with a String - if (root["sensor"] == sensor) { - // ... - } - - // Lastly, you can print the resulting JSON to a String - String output; - root.printTo(output); -} - -void loop() { - // not used in this example -} - -// See also -// -------- -// -// https://arduinojson.org/ contains the documentation for all the functions -// used above. It also includes an FAQ that will help you solve any problem. -// -// The book "Mastering ArduinoJson" contains a quick C++ course that explains -// how your microcontroller stores strings in memory. On several occasions, it -// shows how you can avoid String in your program. -// Learn more at https://arduinojson.org/book/ -// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/lib/ArduinoJson-5.13.4/keywords.txt b/lib/ArduinoJson-5.13.4/keywords.txt deleted file mode 100644 index 833cddb73..000000000 --- a/lib/ArduinoJson-5.13.4/keywords.txt +++ /dev/null @@ -1,15 +0,0 @@ -JsonArray KEYWORD1 -JsonObject KEYWORD1 -JsonVariant KEYWORD1 -StaticJsonBuffer KEYWORD1 -DynamicJsonBuffer KEYWORD1 -add KEYWORD2 -createArray KEYWORD2 -createNestedArray KEYWORD2 -createNestedObject KEYWORD2 -createObject KEYWORD2 -parseArray KEYWORD2 -parseObject KEYWORD2 -prettyPrintTo KEYWORD2 -printTo KEYWORD2 -success KEYWORD2 diff --git a/lib/ArduinoJson-5.13.4/library.properties b/lib/ArduinoJson-5.13.4/library.properties deleted file mode 100644 index 0829de12e..000000000 --- a/lib/ArduinoJson-5.13.4/library.properties +++ /dev/null @@ -1,11 +0,0 @@ -name=ArduinoJson -version=5.13.4 -author=Benoit Blanchon -maintainer=Benoit Blanchon -sentence=An efficient and elegant JSON library for Arduino. -paragraph=ArduinoJson supports serialization, deserialization, fixed allocation, zero-copy, streams, and more. It is the most popular Arduino library on GitHub. Check out arduinojson.org for a comprehensive documentation. -category=Data Processing -url=https://arduinojson.org/?utm_source=meta&utm_medium=library.properties -architectures=* -repository=https://github.com/bblanchon/ArduinoJson.git -license=MIT diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson.h b/lib/ArduinoJson-5.13.4/src/ArduinoJson.h deleted file mode 100644 index 3782aeabc..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson.h +++ /dev/null @@ -1,17 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#ifdef __cplusplus - -#include "ArduinoJson.hpp" - -using namespace ArduinoJson; - -#else - -#error ArduinoJson requires a C++ compiler, please change file extension to .cc or .cpp - -#endif diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson.hpp deleted file mode 100644 index c493c06a9..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "ArduinoJson/version.hpp" - -#include "ArduinoJson/DynamicJsonBuffer.hpp" -#include "ArduinoJson/JsonArray.hpp" -#include "ArduinoJson/JsonObject.hpp" -#include "ArduinoJson/StaticJsonBuffer.hpp" - -#include "ArduinoJson/Deserialization/JsonParserImpl.hpp" -#include "ArduinoJson/JsonArrayImpl.hpp" -#include "ArduinoJson/JsonBufferImpl.hpp" -#include "ArduinoJson/JsonObjectImpl.hpp" -#include "ArduinoJson/JsonVariantImpl.hpp" -#include "ArduinoJson/Serialization/JsonSerializerImpl.hpp" diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Configuration.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Configuration.hpp deleted file mode 100644 index 82483adfa..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Configuration.hpp +++ /dev/null @@ -1,151 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -// Small or big machine? -#ifndef ARDUINOJSON_EMBEDDED_MODE -#if defined(ARDUINO) || defined(__IAR_SYSTEMS_ICC__) || defined(__XC) || \ - defined(__ARMCC_VERSION) -#define ARDUINOJSON_EMBEDDED_MODE 1 -#else -#define ARDUINOJSON_EMBEDDED_MODE 0 -#endif -#endif - -#if ARDUINOJSON_EMBEDDED_MODE - -// Store floats by default to reduce the memory usage (issue #134) -#ifndef ARDUINOJSON_USE_DOUBLE -#define ARDUINOJSON_USE_DOUBLE 0 -#endif - -// Store longs by default, because they usually match the size of a float. -#ifndef ARDUINOJSON_USE_LONG_LONG -#define ARDUINOJSON_USE_LONG_LONG 0 -#endif -#ifndef ARDUINOJSON_USE_INT64 -#define ARDUINOJSON_USE_INT64 0 -#endif - -// Embedded systems usually don't have std::string -#ifndef ARDUINOJSON_ENABLE_STD_STRING -#define ARDUINOJSON_ENABLE_STD_STRING 0 -#endif - -// Embedded systems usually don't have std::stream -#ifndef ARDUINOJSON_ENABLE_STD_STREAM -#define ARDUINOJSON_ENABLE_STD_STREAM 0 -#endif - -// Limit nesting as the stack is likely to be small -#ifndef ARDUINOJSON_DEFAULT_NESTING_LIMIT -#define ARDUINOJSON_DEFAULT_NESTING_LIMIT 10 -#endif - -#else // ARDUINOJSON_EMBEDDED_MODE - -// On a computer we have plenty of memory so we can use doubles -#ifndef ARDUINOJSON_USE_DOUBLE -#define ARDUINOJSON_USE_DOUBLE 1 -#endif - -// Use long long when available -#ifndef ARDUINOJSON_USE_LONG_LONG -#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800) -#define ARDUINOJSON_USE_LONG_LONG 1 -#else -#define ARDUINOJSON_USE_LONG_LONG 0 -#endif -#endif - -// Use _int64 on old versions of Visual Studio -#ifndef ARDUINOJSON_USE_INT64 -#if defined(_MSC_VER) && _MSC_VER <= 1700 -#define ARDUINOJSON_USE_INT64 1 -#else -#define ARDUINOJSON_USE_INT64 0 -#endif -#endif - -// On a computer, we can use std::string -#ifndef ARDUINOJSON_ENABLE_STD_STRING -#define ARDUINOJSON_ENABLE_STD_STRING 1 -#endif - -// On a computer, we can assume std::stream -#ifndef ARDUINOJSON_ENABLE_STD_STREAM -#define ARDUINOJSON_ENABLE_STD_STREAM 1 -#endif - -// On a computer, the stack is large so we can increase nesting limit -#ifndef ARDUINOJSON_DEFAULT_NESTING_LIMIT -#define ARDUINOJSON_DEFAULT_NESTING_LIMIT 50 -#endif - -#endif // ARDUINOJSON_EMBEDDED_MODE - -#ifdef ARDUINO - -// Enable support for Arduino String -#ifndef ARDUINOJSON_ENABLE_ARDUINO_STRING -#define ARDUINOJSON_ENABLE_ARDUINO_STRING 1 -#endif - -// Enable support for Arduino Stream -#ifndef ARDUINOJSON_ENABLE_ARDUINO_STREAM -#define ARDUINOJSON_ENABLE_ARDUINO_STREAM 1 -#endif - -#else // ARDUINO - -// Disable support for Arduino String -#ifndef ARDUINOJSON_ENABLE_ARDUINO_STRING -#define ARDUINOJSON_ENABLE_ARDUINO_STRING 0 -#endif - -// Disable support for Arduino Stream -#ifndef ARDUINOJSON_ENABLE_ARDUINO_STREAM -#define ARDUINOJSON_ENABLE_ARDUINO_STREAM 0 -#endif - -#endif // ARDUINO - -#ifndef ARDUINOJSON_ENABLE_PROGMEM -#ifdef PROGMEM -#define ARDUINOJSON_ENABLE_PROGMEM 1 -#else -#define ARDUINOJSON_ENABLE_PROGMEM 0 -#endif -#endif - -#ifndef ARDUINOJSON_ENABLE_ALIGNMENT -#ifdef ARDUINO_ARCH_AVR -// alignment isn't needed for 8-bit AVR -#define ARDUINOJSON_ENABLE_ALIGNMENT 0 -#else -// but most processors need pointers to be align on word size -#define ARDUINOJSON_ENABLE_ALIGNMENT 1 -#endif -#endif - -// Enable deprecated functions by default -#ifndef ARDUINOJSON_ENABLE_DEPRECATED -#define ARDUINOJSON_ENABLE_DEPRECATED 1 -#endif - -// Control the exponentiation threshold for big numbers -// CAUTION: cannot be more that 1e9 !!!! -#ifndef ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD -#define ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD 1e7 -#endif - -// Control the exponentiation threshold for small numbers -#ifndef ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD -#define ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD 1e-5 -#endif - -#if ARDUINOJSON_USE_LONG_LONG && ARDUINOJSON_USE_INT64 -#error ARDUINOJSON_USE_LONG_LONG and ARDUINOJSON_USE_INT64 cannot be set together -#endif diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/Encoding.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/Encoding.hpp deleted file mode 100644 index a0efa2c74..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/Encoding.hpp +++ /dev/null @@ -1,37 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -class Encoding { - public: - // Optimized for code size on a 8-bit AVR - static char escapeChar(char c) { - const char *p = escapeTable(false); - while (p[0] && p[1] != c) { - p += 2; - } - return p[0]; - } - - // Optimized for code size on a 8-bit AVR - static char unescapeChar(char c) { - const char *p = escapeTable(true); - for (;;) { - if (p[0] == '\0') return c; - if (p[0] == c) return p[1]; - p += 2; - } - } - - private: - static const char *escapeTable(bool excludeIdenticals) { - return &"\"\"\\\\b\bf\fn\nr\rt\t"[excludeIdenticals ? 4 : 0]; - } -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonBufferAllocated.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonBufferAllocated.hpp deleted file mode 100644 index 443aae4df..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonBufferAllocated.hpp +++ /dev/null @@ -1,22 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "../JsonBuffer.hpp" - -namespace ArduinoJson { -namespace Internals { - -class JsonBufferAllocated { - public: - void *operator new(size_t n, JsonBuffer *jsonBuffer) throw() { - if (!jsonBuffer) return NULL; - return jsonBuffer->alloc(n); - } - - void operator delete(void *, JsonBuffer *)throw(); -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonFloat.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonFloat.hpp deleted file mode 100644 index 0ed42140f..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonFloat.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "../Configuration.hpp" - -namespace ArduinoJson { -namespace Internals { - -#if ARDUINOJSON_USE_DOUBLE -typedef double JsonFloat; -#else -typedef float JsonFloat; -#endif -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonInteger.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonInteger.hpp deleted file mode 100644 index c8ddd00b4..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonInteger.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "../Configuration.hpp" - -namespace ArduinoJson { -namespace Internals { - -#if ARDUINOJSON_USE_LONG_LONG -typedef long long JsonInteger; -typedef unsigned long long JsonUInt; -#elif ARDUINOJSON_USE_INT64 -typedef __int64 JsonInteger; -typedef unsigned _int64 JsonUInt; -#else -typedef long JsonInteger; -typedef unsigned long JsonUInt; -#endif -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantAs.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantAs.hpp deleted file mode 100644 index 8f202c5eb..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantAs.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -// A metafunction that returns the type of the value returned by -// JsonVariant::as() -template -struct JsonVariantAs { - typedef T type; -}; - -template <> -struct JsonVariantAs { - typedef const char* type; -}; - -template <> -struct JsonVariantAs { - typedef JsonArray& type; -}; - -template <> -struct JsonVariantAs { - typedef const JsonArray& type; -}; - -template <> -struct JsonVariantAs { - typedef JsonObject& type; -}; - -template <> -struct JsonVariantAs { - typedef const JsonObject& type; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantContent.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantContent.hpp deleted file mode 100644 index c525a6060..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantContent.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "JsonFloat.hpp" -#include "JsonInteger.hpp" - -namespace ArduinoJson { - -// Forward declarations -class JsonArray; -class JsonObject; - -namespace Internals { -// A union that defines the actual content of a JsonVariant. -// The enum JsonVariantType determines which member is in use. -union JsonVariantContent { - JsonFloat asFloat; // used for double and float - JsonUInt asInteger; // used for bool, char, short, int and longs - const char* asString; // asString can be null - JsonArray* asArray; // asArray cannot be null - JsonObject* asObject; // asObject cannot be null -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantDefault.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantDefault.hpp deleted file mode 100644 index 57ecc83ee..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantDefault.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -template -struct JsonVariantDefault { - static T get() { - return T(); - } -}; - -template -struct JsonVariantDefault : JsonVariantDefault {}; - -template -struct JsonVariantDefault : JsonVariantDefault {}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantType.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantType.hpp deleted file mode 100644 index 21f890e52..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/JsonVariantType.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -class JsonArray; -class JsonObject; - -namespace Internals { - -// Enumerated type to know the current type of a JsonVariant. -// The value determines which member of JsonVariantContent is used. -enum JsonVariantType { - JSON_UNDEFINED, // JsonVariant has not been initialized - JSON_UNPARSED, // JsonVariant contains an unparsed string - JSON_STRING, // JsonVariant stores a const char* - JSON_BOOLEAN, // JsonVariant stores a bool - JSON_POSITIVE_INTEGER, // JsonVariant stores an JsonUInt - JSON_NEGATIVE_INTEGER, // JsonVariant stores an JsonUInt that must be negated - JSON_ARRAY, // JsonVariant stores a pointer to a JsonArray - JSON_OBJECT, // JsonVariant stores a pointer to a JsonObject - JSON_FLOAT // JsonVariant stores a JsonFloat -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/List.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/List.hpp deleted file mode 100644 index 506308cc3..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/List.hpp +++ /dev/null @@ -1,94 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "../JsonBuffer.hpp" -#include "ListConstIterator.hpp" -#include "ListIterator.hpp" - -namespace ArduinoJson { -namespace Internals { - -// A singly linked list of T. -// The linked list is composed of ListNode. -// It is derived by JsonArray and JsonObject -template -class List { - public: - typedef T value_type; - typedef ListNode node_type; - typedef ListIterator iterator; - typedef ListConstIterator const_iterator; - - // Creates an empty List attached to a JsonBuffer. - // The JsonBuffer allows to allocate new nodes. - // When buffer is NULL, the List is not able to grow and success() returns - // false. This is used to identify bad memory allocations and parsing - // failures. - explicit List(JsonBuffer *buffer) : _buffer(buffer), _firstNode(NULL) {} - - // Returns true if the object is valid - // Would return false in the following situation: - // - the memory allocation failed (StaticJsonBuffer was too small) - // - the JSON parsing failed - bool success() const { - return _buffer != NULL; - } - - // Returns the numbers of elements in the list. - // For a JsonObject, it would return the number of key-value pairs - size_t size() const { - size_t nodeCount = 0; - for (node_type *node = _firstNode; node; node = node->next) nodeCount++; - return nodeCount; - } - - iterator add() { - node_type *newNode = new (_buffer) node_type(); - - if (_firstNode) { - node_type *lastNode = _firstNode; - while (lastNode->next) lastNode = lastNode->next; - lastNode->next = newNode; - } else { - _firstNode = newNode; - } - - return iterator(newNode); - } - - iterator begin() { - return iterator(_firstNode); - } - iterator end() { - return iterator(NULL); - } - - const_iterator begin() const { - return const_iterator(_firstNode); - } - const_iterator end() const { - return const_iterator(NULL); - } - - void remove(iterator it) { - node_type *nodeToRemove = it._node; - if (!nodeToRemove) return; - if (nodeToRemove == _firstNode) { - _firstNode = nodeToRemove->next; - } else { - for (node_type *node = _firstNode; node; node = node->next) - if (node->next == nodeToRemove) node->next = nodeToRemove->next; - } - } - - protected: - JsonBuffer *_buffer; - - private: - node_type *_firstNode; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ListConstIterator.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ListConstIterator.hpp deleted file mode 100644 index a6af685e5..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ListConstIterator.hpp +++ /dev/null @@ -1,50 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "ListNode.hpp" - -namespace ArduinoJson { -namespace Internals { - -// A read-only forward itertor for List -template -class ListConstIterator { - public: - explicit ListConstIterator(const ListNode *node = NULL) : _node(node) {} - - const T &operator*() const { - return _node->content; - } - const T *operator->() { - return &_node->content; - } - - bool operator==(const ListConstIterator &other) const { - return _node == other._node; - } - - bool operator!=(const ListConstIterator &other) const { - return _node != other._node; - } - - ListConstIterator &operator++() { - if (_node) _node = _node->next; - return *this; - } - - ListConstIterator &operator+=(size_t distance) { - while (_node && distance) { - _node = _node->next; - --distance; - } - return *this; - } - - private: - const ListNode *_node; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ListIterator.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ListIterator.hpp deleted file mode 100644 index 01fa287f7..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ListIterator.hpp +++ /dev/null @@ -1,60 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "ListConstIterator.hpp" -#include "ListNode.hpp" - -namespace ArduinoJson { -namespace Internals { - -template -class List; - -// A read-write forward iterator for List -template -class ListIterator { - friend class List; - - public: - explicit ListIterator(ListNode *node = NULL) : _node(node) {} - - T &operator*() const { - return _node->content; - } - T *operator->() { - return &_node->content; - } - - bool operator==(const ListIterator &other) const { - return _node == other._node; - } - - bool operator!=(const ListIterator &other) const { - return _node != other._node; - } - - ListIterator &operator++() { - if (_node) _node = _node->next; - return *this; - } - - ListIterator &operator+=(size_t distance) { - while (_node && distance) { - _node = _node->next; - --distance; - } - return *this; - } - - operator ListConstIterator() const { - return ListConstIterator(_node); - } - - private: - ListNode *_node; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ListNode.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ListNode.hpp deleted file mode 100644 index c0907120e..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ListNode.hpp +++ /dev/null @@ -1,24 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include // for NULL - -#include "JsonBufferAllocated.hpp" - -namespace ArduinoJson { -namespace Internals { - -// A node for a singly-linked list. -// Used by List and its iterators. -template -struct ListNode : public Internals::JsonBufferAllocated { - ListNode() throw() : next(NULL) {} - - ListNode *next; - T content; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/NonCopyable.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/NonCopyable.hpp deleted file mode 100644 index 73f3d8edb..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/NonCopyable.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -// A type that cannot be copied -class NonCopyable { - protected: - NonCopyable() {} - - private: - // copy constructor is private - NonCopyable(const NonCopyable&); - - // copy operator is private - NonCopyable& operator=(const NonCopyable&); -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ReferenceType.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ReferenceType.hpp deleted file mode 100644 index 1e491172f..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ReferenceType.hpp +++ /dev/null @@ -1,24 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -// A type that is meant to be used by reference only (JsonArray and JsonObject) -class ReferenceType { - public: - bool operator==(const ReferenceType& other) const { - // two JsonArray are equal if they are the same instance - // (we don't compare the content) - return this == &other; - } - - bool operator!=(const ReferenceType& other) const { - return this != &other; - } -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ValueSaver.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ValueSaver.hpp deleted file mode 100644 index 9750f1ac5..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Data/ValueSaver.hpp +++ /dev/null @@ -1,52 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "../JsonBuffer.hpp" -#include "../JsonVariant.hpp" -#include "../StringTraits/StringTraits.hpp" -#include "../TypeTraits/EnableIf.hpp" - -namespace ArduinoJson { -namespace Internals { - -template -struct ValueSaver { - template - static bool save(JsonBuffer*, Destination& destination, Source source) { - destination = source; - return true; - } -}; - -template -struct ValueSaver< - Source, typename EnableIf::should_duplicate>::type> { - template - static bool save(JsonBuffer* buffer, Destination& dest, Source source) { - if (!StringTraits::is_null(source)) { - typename StringTraits::duplicate_t dup = - StringTraits::duplicate(source, buffer); - if (!dup) return false; - dest = dup; - } else { - dest = reinterpret_cast(0); - } - return true; - } -}; - -// const char*, const signed char*, const unsigned char* -template -struct ValueSaver< - Char*, typename EnableIf::should_duplicate>::type> { - template - static bool save(JsonBuffer*, Destination& dest, Char* source) { - dest = reinterpret_cast(source); - return true; - } -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/Comments.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/Comments.hpp deleted file mode 100644 index c2c48ebcc..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/Comments.hpp +++ /dev/null @@ -1,61 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { -template -void skipSpacesAndComments(TInput& input) { - for (;;) { - switch (input.current()) { - // spaces - case ' ': - case '\t': - case '\r': - case '\n': - input.move(); - continue; - - // comments - case '/': - switch (input.next()) { - // C-style block comment - case '*': - input.move(); // skip '/' - // no need to skip '*' - for (;;) { - input.move(); - if (input.current() == '\0') return; - if (input.current() == '*' && input.next() == '/') { - input.move(); // skip '*' - input.move(); // skip '/' - break; - } - } - break; - - // C++-style line comment - case '/': - // not need to skip "//" - for (;;) { - input.move(); - if (input.current() == '\0') return; - if (input.current() == '\n') break; - } - break; - - // not a comment, just a '/' - default: - return; - } - break; - - default: - return; - } - } -} -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/JsonParser.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/JsonParser.hpp deleted file mode 100644 index 4cbaf454c..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/JsonParser.hpp +++ /dev/null @@ -1,102 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "../JsonBuffer.hpp" -#include "../JsonVariant.hpp" -#include "../TypeTraits/IsConst.hpp" -#include "StringWriter.hpp" - -namespace ArduinoJson { -namespace Internals { - -// Parse JSON string to create JsonArrays and JsonObjects -// This internal class is not indended to be used directly. -// Instead, use JsonBuffer.parseArray() or .parseObject() -template -class JsonParser { - public: - JsonParser(JsonBuffer *buffer, TReader reader, TWriter writer, - uint8_t nestingLimit) - : _buffer(buffer), - _reader(reader), - _writer(writer), - _nestingLimit(nestingLimit) {} - - JsonArray &parseArray(); - JsonObject &parseObject(); - - JsonVariant parseVariant() { - JsonVariant result; - parseAnythingTo(&result); - return result; - } - - private: - JsonParser &operator=(const JsonParser &); // non-copiable - - static bool eat(TReader &, char charToSkip); - FORCE_INLINE bool eat(char charToSkip) { - return eat(_reader, charToSkip); - } - - const char *parseString(); - bool parseAnythingTo(JsonVariant *destination); - - inline bool parseArrayTo(JsonVariant *destination); - inline bool parseObjectTo(JsonVariant *destination); - inline bool parseStringTo(JsonVariant *destination); - - static inline bool isBetween(char c, char min, char max) { - return min <= c && c <= max; - } - - static inline bool canBeInNonQuotedString(char c) { - return isBetween(c, '0', '9') || isBetween(c, '_', 'z') || - isBetween(c, 'A', 'Z') || c == '+' || c == '-' || c == '.'; - } - - static inline bool isQuote(char c) { - return c == '\'' || c == '\"'; - } - - JsonBuffer *_buffer; - TReader _reader; - TWriter _writer; - uint8_t _nestingLimit; -}; - -template -struct JsonParserBuilder { - typedef typename StringTraits::Reader InputReader; - typedef JsonParser TParser; - - static TParser makeParser(TJsonBuffer *buffer, TString &json, - uint8_t nestingLimit) { - return TParser(buffer, InputReader(json), *buffer, nestingLimit); - } -}; - -template -struct JsonParserBuilder::value>::type> { - typedef typename StringTraits::Reader TReader; - typedef StringWriter TWriter; - typedef JsonParser TParser; - - static TParser makeParser(TJsonBuffer *buffer, TChar *json, - uint8_t nestingLimit) { - return TParser(buffer, TReader(json), TWriter(json), nestingLimit); - } -}; - -template -inline typename JsonParserBuilder::TParser makeParser( - TJsonBuffer *buffer, TString &json, uint8_t nestingLimit) { - return JsonParserBuilder::makeParser(buffer, json, - nestingLimit); -} -} // namespace Internals -} // namespace ArduinoJson diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/JsonParserImpl.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/JsonParserImpl.hpp deleted file mode 100644 index 504267355..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/JsonParserImpl.hpp +++ /dev/null @@ -1,189 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "Comments.hpp" -#include "JsonParser.hpp" - -template -inline bool ArduinoJson::Internals::JsonParser::eat( - TReader &reader, char charToSkip) { - skipSpacesAndComments(reader); - if (reader.current() != charToSkip) return false; - reader.move(); - return true; -} - -template -inline bool -ArduinoJson::Internals::JsonParser::parseAnythingTo( - JsonVariant *destination) { - skipSpacesAndComments(_reader); - - switch (_reader.current()) { - case '[': - return parseArrayTo(destination); - - case '{': - return parseObjectTo(destination); - - default: - return parseStringTo(destination); - } -} - -template -inline ArduinoJson::JsonArray & -ArduinoJson::Internals::JsonParser::parseArray() { - if (_nestingLimit == 0) return JsonArray::invalid(); - _nestingLimit--; - - // Create an empty array - JsonArray &array = _buffer->createArray(); - - // Check opening braket - if (!eat('[')) goto ERROR_MISSING_BRACKET; - if (eat(']')) goto SUCCESS_EMPTY_ARRAY; - - // Read each value - for (;;) { - // 1 - Parse value - JsonVariant value; - if (!parseAnythingTo(&value)) goto ERROR_INVALID_VALUE; - if (!array.add(value)) goto ERROR_NO_MEMORY; - - // 2 - More values? - if (eat(']')) goto SUCCES_NON_EMPTY_ARRAY; - if (!eat(',')) goto ERROR_MISSING_COMMA; - } - -SUCCESS_EMPTY_ARRAY: -SUCCES_NON_EMPTY_ARRAY: - _nestingLimit++; - return array; - -ERROR_INVALID_VALUE: -ERROR_MISSING_BRACKET: -ERROR_MISSING_COMMA: -ERROR_NO_MEMORY: - return JsonArray::invalid(); -} - -template -inline bool ArduinoJson::Internals::JsonParser::parseArrayTo( - JsonVariant *destination) { - JsonArray &array = parseArray(); - if (!array.success()) return false; - - *destination = array; - return true; -} - -template -inline ArduinoJson::JsonObject & -ArduinoJson::Internals::JsonParser::parseObject() { - if (_nestingLimit == 0) return JsonObject::invalid(); - _nestingLimit--; - - // Create an empty object - JsonObject &object = _buffer->createObject(); - - // Check opening brace - if (!eat('{')) goto ERROR_MISSING_BRACE; - if (eat('}')) goto SUCCESS_EMPTY_OBJECT; - - // Read each key value pair - for (;;) { - // 1 - Parse key - const char *key = parseString(); - if (!key) goto ERROR_INVALID_KEY; - if (!eat(':')) goto ERROR_MISSING_COLON; - - // 2 - Parse value - JsonVariant value; - if (!parseAnythingTo(&value)) goto ERROR_INVALID_VALUE; - if (!object.set(key, value)) goto ERROR_NO_MEMORY; - - // 3 - More keys/values? - if (eat('}')) goto SUCCESS_NON_EMPTY_OBJECT; - if (!eat(',')) goto ERROR_MISSING_COMMA; - } - -SUCCESS_EMPTY_OBJECT: -SUCCESS_NON_EMPTY_OBJECT: - _nestingLimit++; - return object; - -ERROR_INVALID_KEY: -ERROR_INVALID_VALUE: -ERROR_MISSING_BRACE: -ERROR_MISSING_COLON: -ERROR_MISSING_COMMA: -ERROR_NO_MEMORY: - return JsonObject::invalid(); -} - -template -inline bool ArduinoJson::Internals::JsonParser::parseObjectTo( - JsonVariant *destination) { - JsonObject &object = parseObject(); - if (!object.success()) return false; - - *destination = object; - return true; -} - -template -inline const char * -ArduinoJson::Internals::JsonParser::parseString() { - typename RemoveReference::type::String str = _writer.startString(); - - skipSpacesAndComments(_reader); - char c = _reader.current(); - - if (isQuote(c)) { // quotes - _reader.move(); - char stopChar = c; - for (;;) { - c = _reader.current(); - if (c == '\0') break; - _reader.move(); - - if (c == stopChar) break; - - if (c == '\\') { - // replace char - c = Encoding::unescapeChar(_reader.current()); - if (c == '\0') break; - _reader.move(); - } - - str.append(c); - } - } else { // no quotes - for (;;) { - if (!canBeInNonQuotedString(c)) break; - _reader.move(); - str.append(c); - c = _reader.current(); - } - } - - return str.c_str(); -} - -template -inline bool ArduinoJson::Internals::JsonParser::parseStringTo( - JsonVariant *destination) { - bool hasQuotes = isQuote(_reader.current()); - const char *value = parseString(); - if (value == NULL) return false; - if (hasQuotes) { - *destination = value; - } else { - *destination = RawJson(value); - } - return true; -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/StringWriter.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/StringWriter.hpp deleted file mode 100644 index fd5507ea5..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Deserialization/StringWriter.hpp +++ /dev/null @@ -1,41 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -template -class StringWriter { - public: - class String { - public: - String(TChar** ptr) : _writePtr(ptr), _startPtr(*ptr) {} - - void append(char c) { - *(*_writePtr)++ = TChar(c); - } - - const char* c_str() const { - *(*_writePtr)++ = 0; - return reinterpret_cast(_startPtr); - } - - private: - TChar** _writePtr; - TChar* _startPtr; - }; - - StringWriter(TChar* buffer) : _ptr(buffer) {} - - String startString() { - return String(&_ptr); - } - - private: - TChar* _ptr; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/DynamicJsonBuffer.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/DynamicJsonBuffer.hpp deleted file mode 100644 index bdbd5dd90..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/DynamicJsonBuffer.hpp +++ /dev/null @@ -1,170 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "JsonBufferBase.hpp" - -#include - -#if defined(__clang__) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wnon-virtual-dtor" -#elif defined(__GNUC__) -#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) -#pragma GCC diagnostic push -#endif -#pragma GCC diagnostic ignored "-Wnon-virtual-dtor" -#endif - -namespace ArduinoJson { -namespace Internals { -class DefaultAllocator { - public: - void* allocate(size_t size) { - return malloc(size); - } - void deallocate(void* pointer) { - free(pointer); - } -}; - -template -class DynamicJsonBufferBase - : public JsonBufferBase > { - struct Block; - struct EmptyBlock { - Block* next; - size_t capacity; - size_t size; - }; - struct Block : EmptyBlock { - uint8_t data[1]; - }; - - public: - enum { EmptyBlockSize = sizeof(EmptyBlock) }; - - DynamicJsonBufferBase(size_t initialSize = 256) - : _head(NULL), _nextBlockCapacity(initialSize) {} - - ~DynamicJsonBufferBase() { - clear(); - } - - // Gets the number of bytes occupied in the buffer - size_t size() const { - size_t total = 0; - for (const Block* b = _head; b; b = b->next) total += b->size; - return total; - } - - // Allocates the specified amount of bytes in the buffer - virtual void* alloc(size_t bytes) { - alignNextAlloc(); - return canAllocInHead(bytes) ? allocInHead(bytes) : allocInNewBlock(bytes); - } - - // Resets the buffer. - // USE WITH CAUTION: this invalidates all previously allocated data - void clear() { - Block* currentBlock = _head; - while (currentBlock != NULL) { - _nextBlockCapacity = currentBlock->capacity; - Block* nextBlock = currentBlock->next; - _allocator.deallocate(currentBlock); - currentBlock = nextBlock; - } - _head = 0; - } - - class String { - public: - String(DynamicJsonBufferBase* parent) - : _parent(parent), _start(NULL), _length(0) {} - - void append(char c) { - if (_parent->canAllocInHead(1)) { - char* end = static_cast(_parent->allocInHead(1)); - *end = c; - if (_length == 0) _start = end; - } else { - char* newStart = - static_cast(_parent->allocInNewBlock(_length + 1)); - if (_start && newStart) memcpy(newStart, _start, _length); - if (newStart) newStart[_length] = c; - _start = newStart; - } - _length++; - } - - const char* c_str() { - append(0); - return _start; - } - - private: - DynamicJsonBufferBase* _parent; - char* _start; - size_t _length; - }; - - String startString() { - return String(this); - } - - private: - void alignNextAlloc() { - if (_head) _head->size = this->round_size_up(_head->size); - } - - bool canAllocInHead(size_t bytes) const { - return _head != NULL && _head->size + bytes <= _head->capacity; - } - - void* allocInHead(size_t bytes) { - void* p = _head->data + _head->size; - _head->size += bytes; - return p; - } - - void* allocInNewBlock(size_t bytes) { - size_t capacity = _nextBlockCapacity; - if (bytes > capacity) capacity = bytes; - if (!addNewBlock(capacity)) return NULL; - _nextBlockCapacity *= 2; - return allocInHead(bytes); - } - - bool addNewBlock(size_t capacity) { - size_t bytes = EmptyBlockSize + capacity; - Block* block = static_cast(_allocator.allocate(bytes)); - if (block == NULL) return false; - block->capacity = capacity; - block->size = 0; - block->next = _head; - _head = block; - return true; - } - - TAllocator _allocator; - Block* _head; - size_t _nextBlockCapacity; -}; -} - -#if defined(__clang__) -#pragma clang diagnostic pop -#elif defined(__GNUC__) -#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) -#pragma GCC diagnostic pop -#endif -#endif - -// Implements a JsonBuffer with dynamic memory allocation. -// You are strongly encouraged to consider using StaticJsonBuffer which is much -// more suitable for embedded systems. -typedef Internals::DynamicJsonBufferBase - DynamicJsonBuffer; -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonArray.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonArray.hpp deleted file mode 100644 index 2acd2a1a5..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonArray.hpp +++ /dev/null @@ -1,227 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "Data/JsonBufferAllocated.hpp" -#include "Data/List.hpp" -#include "Data/ReferenceType.hpp" -#include "Data/ValueSaver.hpp" -#include "JsonVariant.hpp" -#include "Serialization/JsonPrintable.hpp" -#include "StringTraits/StringTraits.hpp" -#include "TypeTraits/EnableIf.hpp" -#include "TypeTraits/IsArray.hpp" -#include "TypeTraits/IsFloatingPoint.hpp" -#include "TypeTraits/IsSame.hpp" - -// Returns the size (in bytes) of an array with n elements. -// Can be very handy to determine the size of a StaticJsonBuffer. -#define JSON_ARRAY_SIZE(NUMBER_OF_ELEMENTS) \ - (sizeof(JsonArray) + (NUMBER_OF_ELEMENTS) * sizeof(JsonArray::node_type)) - -namespace ArduinoJson { - -// Forward declarations -class JsonObject; -class JsonBuffer; -namespace Internals { -class JsonArraySubscript; -} - -// An array of JsonVariant. -// -// The constructor is private, instances must be created via -// JsonBuffer::createArray() or JsonBuffer::parseArray(). -// A JsonArray can be serialized to a JSON string via JsonArray::printTo(). -// It can also be deserialized from a JSON string via JsonBuffer::parseArray(). -class JsonArray : public Internals::JsonPrintable, - public Internals::ReferenceType, - public Internals::NonCopyable, - public Internals::List, - public Internals::JsonBufferAllocated { - public: - // Create an empty JsonArray attached to the specified JsonBuffer. - // You should not call this constructor directly. - // Instead, use JsonBuffer::createArray() or JsonBuffer::parseArray(). - explicit JsonArray(JsonBuffer *buffer) throw() - : Internals::List(buffer) {} - - // Gets the value at the specified index - const Internals::JsonArraySubscript operator[](size_t index) const; - - // Gets or sets the value at specified index - Internals::JsonArraySubscript operator[](size_t index); - - // Adds the specified value at the end of the array. - // - // bool add(TValue); - // TValue = bool, long, int, short, float, double, RawJson, JsonVariant, - // std::string, String, JsonArray, JsonObject - template - bool add(const T &value) { - return add_impl(value); - } - // - // bool add(TValue); - // TValue = char*, const char*, const FlashStringHelper* - template - bool add(T *value) { - return add_impl(value); - } - // - // bool add(TValue value, uint8_t decimals); - // TValue = float, double - template - DEPRECATED("Second argument is not supported anymore") - bool add(T value, uint8_t) { - return add_impl(JsonVariant(value)); - } - - // Sets the value at specified index. - // - // bool add(size_t index, const TValue&); - // TValue = bool, long, int, short, float, double, RawJson, JsonVariant, - // std::string, String, JsonArray, JsonObject - template - bool set(size_t index, const T &value) { - return set_impl(index, value); - } - // - // bool add(size_t index, TValue); - // TValue = char*, const char*, const FlashStringHelper* - template - bool set(size_t index, T *value) { - return set_impl(index, value); - } - // - // bool set(size_t index, TValue value, uint8_t decimals); - // TValue = float, double - template - typename Internals::EnableIf::value, bool>::type - set(size_t index, T value, uint8_t decimals) { - return set_impl(index, JsonVariant(value, decimals)); - } - - // Gets the value at the specified index. - template - typename Internals::JsonVariantAs::type get(size_t index) const { - const_iterator it = begin() += index; - return it != end() ? it->as() : Internals::JsonVariantDefault::get(); - } - - // Check the type of the value at specified index. - template - bool is(size_t index) const { - const_iterator it = begin() += index; - return it != end() ? it->is() : false; - } - - // Creates a JsonArray and adds a reference at the end of the array. - // It's a shortcut for JsonBuffer::createArray() and JsonArray::add() - JsonArray &createNestedArray(); - - // Creates a JsonObject and adds a reference at the end of the array. - // It's a shortcut for JsonBuffer::createObject() and JsonArray::add() - JsonObject &createNestedObject(); - - // Removes element at specified index. - void remove(size_t index) { - remove(begin() += index); - } - using Internals::List::remove; - - // Returns a reference an invalid JsonArray. - // This object is meant to replace a NULL pointer. - // This is used when memory allocation or JSON parsing fail. - static JsonArray &invalid() { - static JsonArray instance(NULL); - return instance; - } - - // Imports a 1D array - template - bool copyFrom(T (&array)[N]) { - return copyFrom(array, N); - } - - // Imports a 1D array - template - bool copyFrom(T *array, size_t len) { - bool ok = true; - for (size_t i = 0; i < len; i++) { - ok &= add(array[i]); - } - return ok; - } - - // Imports a 2D array - template - bool copyFrom(T (&array)[N1][N2]) { - bool ok = true; - for (size_t i = 0; i < N1; i++) { - JsonArray &nestedArray = createNestedArray(); - for (size_t j = 0; j < N2; j++) { - ok &= nestedArray.add(array[i][j]); - } - } - return ok; - } - - // Exports a 1D array - template - size_t copyTo(T (&array)[N]) const { - return copyTo(array, N); - } - - // Exports a 1D array - template - size_t copyTo(T *array, size_t len) const { - size_t i = 0; - for (const_iterator it = begin(); it != end() && i < len; ++it) - array[i++] = *it; - return i; - } - - // Exports a 2D array - template - void copyTo(T (&array)[N1][N2]) const { - size_t i = 0; - for (const_iterator it = begin(); it != end() && i < N1; ++it) { - it->as().copyTo(array[i++]); - } - } - -#if ARDUINOJSON_ENABLE_DEPRECATED - DEPRECATED("use remove() instead") - FORCE_INLINE void removeAt(size_t index) { - return remove(index); - } -#endif - - private: - template - bool set_impl(size_t index, TValueRef value) { - iterator it = begin() += index; - if (it == end()) return false; - return Internals::ValueSaver::save(_buffer, *it, value); - } - - template - bool add_impl(TValueRef value) { - iterator it = Internals::List::add(); - if (it == end()) return false; - return Internals::ValueSaver::save(_buffer, *it, value); - } -}; - -namespace Internals { -template <> -struct JsonVariantDefault { - static JsonArray &get() { - return JsonArray::invalid(); - } -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonArrayImpl.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonArrayImpl.hpp deleted file mode 100644 index 924b7ea7a..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonArrayImpl.hpp +++ /dev/null @@ -1,26 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "JsonArray.hpp" -#include "JsonArraySubscript.hpp" -#include "JsonObject.hpp" - -namespace ArduinoJson { - -inline JsonArray &JsonArray::createNestedArray() { - if (!_buffer) return JsonArray::invalid(); - JsonArray &array = _buffer->createArray(); - add(array); - return array; -} - -inline JsonObject &JsonArray::createNestedObject() { - if (!_buffer) return JsonObject::invalid(); - JsonObject &object = _buffer->createObject(); - add(object); - return object; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonArraySubscript.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonArraySubscript.hpp deleted file mode 100644 index afb4dc1ec..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonArraySubscript.hpp +++ /dev/null @@ -1,122 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "Configuration.hpp" -#include "JsonVariantBase.hpp" - -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable : 4522) -#endif - -namespace ArduinoJson { -namespace Internals { -class JsonArraySubscript : public JsonVariantBase { - public: - FORCE_INLINE JsonArraySubscript(JsonArray& array, size_t index) - : _array(array), _index(index) {} - - FORCE_INLINE JsonArraySubscript& operator=(const JsonArraySubscript& src) { - _array.set(_index, src); - return *this; - } - - // Replaces the value - // - // operator=(const TValue&) - // TValue = bool, long, int, short, float, double, RawJson, JsonVariant, - // std::string, String, JsonArray, JsonObject - template - FORCE_INLINE JsonArraySubscript& operator=(const T& src) { - _array.set(_index, src); - return *this; - } - // - // operator=(TValue) - // TValue = char*, const char*, const FlashStringHelper* - template - FORCE_INLINE JsonArraySubscript& operator=(T* src) { - _array.set(_index, src); - return *this; - } - - FORCE_INLINE bool success() const { - return _index < _array.size(); - } - - template - FORCE_INLINE typename JsonVariantAs::type as() const { - return _array.get(_index); - } - - template - FORCE_INLINE bool is() const { - return _array.is(_index); - } - - // Replaces the value - // - // bool set(const TValue&) - // TValue = bool, long, int, short, float, double, RawJson, JsonVariant, - // std::string, String, JsonArray, JsonObject - template - FORCE_INLINE bool set(const TValue& value) { - return _array.set(_index, value); - } - // - // bool set(TValue) - // TValue = char*, const char*, const FlashStringHelper* - template - FORCE_INLINE bool set(TValue* value) { - return _array.set(_index, value); - } - // - // bool set(TValue, uint8_t decimals); - // TValue = float, double - template - DEPRECATED("Second argument is not supported anymore") - FORCE_INLINE bool set(const TValue& value, uint8_t) { - return _array.set(_index, value); - } - - private: - JsonArray& _array; - const size_t _index; -}; - -template -inline JsonArraySubscript JsonVariantSubscripts::operator[]( - size_t index) { - return impl()->template as()[index]; -} - -template -inline const JsonArraySubscript JsonVariantSubscripts::operator[]( - size_t index) const { - return impl()->template as()[index]; -} - -#if ARDUINOJSON_ENABLE_STD_STREAM -inline std::ostream& operator<<(std::ostream& os, - const JsonArraySubscript& source) { - return source.printTo(os); -} -#endif -} - -inline Internals::JsonArraySubscript JsonArray::operator[](size_t index) { - return Internals::JsonArraySubscript(*this, index); -} - -inline const Internals::JsonArraySubscript JsonArray::operator[]( - size_t index) const { - return Internals::JsonArraySubscript(*const_cast(this), index); -} -} - -#ifdef _MSC_VER -#pragma warning(pop) -#endif diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonBuffer.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonBuffer.hpp deleted file mode 100644 index 26101e086..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonBuffer.hpp +++ /dev/null @@ -1,78 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include // for size_t -#include // for uint8_t -#include - -#include "Data/NonCopyable.hpp" -#include "JsonVariant.hpp" -#include "TypeTraits/EnableIf.hpp" -#include "TypeTraits/IsArray.hpp" - -namespace ArduinoJson { -class JsonArray; -class JsonObject; - -// Entry point for using the library. -// -// Handle the memory management (done in derived classes) and calls the parser. -// This abstract class is implemented by StaticJsonBuffer which implements a -// fixed memory allocation. -class JsonBuffer : Internals::NonCopyable { - public: - // Allocates an empty JsonArray. - // - // Returns a reference to the new JsonArray or JsonArray::invalid() if the - // allocation fails. - JsonArray &createArray(); - - // Allocates an empty JsonObject. - // - // Returns a reference to the new JsonObject or JsonObject::invalid() if the - // allocation fails. - JsonObject &createObject(); - - // Duplicates a string - // - // const char* strdup(TValue); - // TValue = const std::string&, const String&, - template - DEPRECATED("char* are duplicated, you don't need strdup() anymore") - typename Internals::EnableIf::value, - const char *>::type strdup(const TString &src) { - return Internals::StringTraits::duplicate(src, this); - } - // - // const char* strdup(TValue); - // TValue = char*, const char*, const FlashStringHelper* - template - DEPRECATED("char* are duplicated, you don't need strdup() anymore") - const char *strdup(TString *src) { - return Internals::StringTraits::duplicate(src, this); - } - - // Allocates n bytes in the JsonBuffer. - // Return a pointer to the allocated memory or NULL if allocation fails. - virtual void *alloc(size_t size) = 0; - - protected: - // CAUTION: NO VIRTUAL DESTRUCTOR! - // If we add a virtual constructor the Arduino compiler will add malloc() - // and free() to the binary, adding 706 useless bytes. - ~JsonBuffer() {} - - // Preserve aligment if necessary - static FORCE_INLINE size_t round_size_up(size_t bytes) { -#if ARDUINOJSON_ENABLE_ALIGNMENT - const size_t x = sizeof(void *) - 1; - return (bytes + x) & ~x; -#else - return bytes; -#endif - } -}; -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonBufferBase.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonBufferBase.hpp deleted file mode 100644 index 1e771bfdb..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonBufferBase.hpp +++ /dev/null @@ -1,127 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "Deserialization/JsonParser.hpp" - -namespace ArduinoJson { -namespace Internals { -template -class JsonBufferBase : public JsonBuffer { - public: - // Allocates and populate a JsonArray from a JSON string. - // - // The First argument is a pointer to the JSON string, the memory must be - // writable - // because the parser will insert null-terminators and replace escaped chars. - // - // The second argument set the nesting limit - // - // Returns a reference to the new JsonObject or JsonObject::invalid() if the - // allocation fails. - // With this overload, the JsonBuffer will make a copy of the string - // - // JsonArray& parseArray(TString); - // TString = const std::string&, const String& - template - typename Internals::EnableIf::value, - JsonArray &>::type - parseArray(const TString &json, - uint8_t nestingLimit = ARDUINOJSON_DEFAULT_NESTING_LIMIT) { - return Internals::makeParser(that(), json, nestingLimit).parseArray(); - } - // - // JsonArray& parseArray(TString); - // TString = const char*, const char[N], const FlashStringHelper* - template - JsonArray &parseArray( - TString *json, uint8_t nestingLimit = ARDUINOJSON_DEFAULT_NESTING_LIMIT) { - return Internals::makeParser(that(), json, nestingLimit).parseArray(); - } - // - // JsonArray& parseArray(TString); - // TString = std::istream&, Stream& - template - JsonArray &parseArray( - TString &json, uint8_t nestingLimit = ARDUINOJSON_DEFAULT_NESTING_LIMIT) { - return Internals::makeParser(that(), json, nestingLimit).parseArray(); - } - - // Allocates and populate a JsonObject from a JSON string. - // - // The First argument is a pointer to the JSON string, the memory must be - // writable - // because the parser will insert null-terminators and replace escaped chars. - // - // The second argument set the nesting limit - // - // Returns a reference to the new JsonObject or JsonObject::invalid() if the - // allocation fails. - // - // JsonObject& parseObject(TString); - // TString = const std::string&, const String& - template - typename Internals::EnableIf::value, - JsonObject &>::type - parseObject(const TString &json, - uint8_t nestingLimit = ARDUINOJSON_DEFAULT_NESTING_LIMIT) { - return Internals::makeParser(that(), json, nestingLimit).parseObject(); - } - // - // JsonObject& parseObject(TString); - // TString = const char*, const char[N], const FlashStringHelper* - template - JsonObject &parseObject( - TString *json, uint8_t nestingLimit = ARDUINOJSON_DEFAULT_NESTING_LIMIT) { - return Internals::makeParser(that(), json, nestingLimit).parseObject(); - } - // - // JsonObject& parseObject(TString); - // TString = std::istream&, Stream& - template - JsonObject &parseObject( - TString &json, uint8_t nestingLimit = ARDUINOJSON_DEFAULT_NESTING_LIMIT) { - return Internals::makeParser(that(), json, nestingLimit).parseObject(); - } - - // Generalized version of parseArray() and parseObject(), also works for - // integral types. - // - // JsonVariant parse(TString); - // TString = const std::string&, const String& - template - typename Internals::EnableIf::value, - JsonVariant>::type - parse(const TString &json, - uint8_t nestingLimit = ARDUINOJSON_DEFAULT_NESTING_LIMIT) { - return Internals::makeParser(that(), json, nestingLimit).parseVariant(); - } - // - // JsonVariant parse(TString); - // TString = const char*, const char[N], const FlashStringHelper* - template - JsonVariant parse(TString *json, - uint8_t nestingLimit = ARDUINOJSON_DEFAULT_NESTING_LIMIT) { - return Internals::makeParser(that(), json, nestingLimit).parseVariant(); - } - // - // JsonVariant parse(TString); - // TString = std::istream&, Stream& - template - JsonVariant parse(TString &json, - uint8_t nestingLimit = ARDUINOJSON_DEFAULT_NESTING_LIMIT) { - return Internals::makeParser(that(), json, nestingLimit).parseVariant(); - } - - protected: - ~JsonBufferBase() {} - - private: - TDerived *that() { - return static_cast(this); - } -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonBufferImpl.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonBufferImpl.hpp deleted file mode 100644 index cdea374bb..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonBufferImpl.hpp +++ /dev/null @@ -1,17 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "Deserialization/JsonParser.hpp" - -inline ArduinoJson::JsonArray &ArduinoJson::JsonBuffer::createArray() { - JsonArray *ptr = new (this) JsonArray(this); - return ptr ? *ptr : JsonArray::invalid(); -} - -inline ArduinoJson::JsonObject &ArduinoJson::JsonBuffer::createObject() { - JsonObject *ptr = new (this) JsonObject(this); - return ptr ? *ptr : JsonObject::invalid(); -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonObject.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonObject.hpp deleted file mode 100644 index caf698a3e..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonObject.hpp +++ /dev/null @@ -1,328 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "Data/JsonBufferAllocated.hpp" -#include "Data/List.hpp" -#include "Data/ReferenceType.hpp" -#include "Data/ValueSaver.hpp" -#include "JsonPair.hpp" -#include "Serialization/JsonPrintable.hpp" -#include "StringTraits/StringTraits.hpp" -#include "TypeTraits/EnableIf.hpp" -#include "TypeTraits/IsArray.hpp" -#include "TypeTraits/IsFloatingPoint.hpp" -#include "TypeTraits/IsSame.hpp" - -// Returns the size (in bytes) of an object with n elements. -// Can be very handy to determine the size of a StaticJsonBuffer. -#define JSON_OBJECT_SIZE(NUMBER_OF_ELEMENTS) \ - (sizeof(JsonObject) + (NUMBER_OF_ELEMENTS) * sizeof(JsonObject::node_type)) - -namespace ArduinoJson { - -// Forward declarations -class JsonArray; -class JsonBuffer; -namespace Internals { -template -class JsonObjectSubscript; -} - -// A dictionary of JsonVariant indexed by string (char*) -// -// The constructor is private, instances must be created via -// JsonBuffer::createObject() or JsonBuffer::parseObject(). -// A JsonObject can be serialized to a JSON string via JsonObject::printTo(). -// It can also be deserialized from a JSON string via JsonBuffer::parseObject(). -class JsonObject : public Internals::JsonPrintable, - public Internals::ReferenceType, - public Internals::NonCopyable, - public Internals::List, - public Internals::JsonBufferAllocated { - public: - // Create an empty JsonArray attached to the specified JsonBuffer. - // You should not use this constructor directly. - // Instead, use JsonBuffer::createObject() or JsonBuffer.parseObject(). - explicit JsonObject(JsonBuffer* buffer) throw() - : Internals::List(buffer) {} - - // Gets or sets the value associated with the specified key. - // - // JsonObjectSubscript operator[](TKey) - // TKey = const std::string&, const String& - template - Internals::JsonObjectSubscript operator[]( - const TString& key) { - return Internals::JsonObjectSubscript(*this, key); - } - // - // JsonObjectSubscript operator[](TKey) - // TKey = char*, const char*, char[], const char[N], const FlashStringHelper* - template - Internals::JsonObjectSubscript operator[](TString* key) { - return Internals::JsonObjectSubscript(*this, key); - } - - // Gets the value associated with the specified key. - // - // const JsonObjectSubscript operator[](TKey) const; - // TKey = const std::string&, const String& - template - const Internals::JsonObjectSubscript operator[]( - const TString& key) const { - return Internals::JsonObjectSubscript( - *const_cast(this), key); - } - // - // const JsonObjectSubscript operator[](TKey) const; - // TKey = const char*, const char[N], const FlashStringHelper* - template - const Internals::JsonObjectSubscript operator[]( - TString* key) const { - return Internals::JsonObjectSubscript( - *const_cast(this), key); - } - - // Sets the specified key with the specified value. - // - // bool set(TKey, TValue); - // TKey = const std::string&, const String& - // TValue = bool, long, int, short, float, double, RawJson, JsonVariant, - // std::string, String, JsonArray, JsonObject - template - bool set(const TString& key, const TValue& value) { - return set_impl(key, value); - } - // - // bool set(TKey, TValue); - // TKey = const std::string&, const String& - // TValue = char*, const char*, const FlashStringHelper* - template - bool set(const TString& key, TValue* value) { - return set_impl(key, value); - } - // - // bool set(TKey, const TValue&); - // TKey = char*, const char*, const FlashStringHelper* - // TValue = bool, long, int, short, float, double, RawJson, JsonVariant, - // std::string, String, JsonArray, JsonObject - template - bool set(TString* key, const TValue& value) { - return set_impl(key, value); - } - // - // bool set(TKey, TValue); - // TKey = char*, const char*, const FlashStringHelper* - // TValue = char*, const char*, const FlashStringHelper* - template - bool set(TString* key, TValue* value) { - return set_impl(key, value); - } - // - // bool set(TKey, TValue, uint8_t decimals); - // TKey = const std::string&, const String& - // TValue = float, double - template - DEPRECATED("Second argument is not supported anymore") - typename Internals::EnableIf::value, - bool>::type - set(const TString& key, TValue value, uint8_t) { - return set_impl(key, - JsonVariant(value)); - } - // - // bool set(TKey, TValue, uint8_t decimals); - // TKey = char*, const char*, const FlashStringHelper* - // TValue = float, double - template - DEPRECATED("Second argument is not supported anymore") - typename Internals::EnableIf::value, - bool>::type - set(TString* key, TValue value, uint8_t) { - return set_impl(key, JsonVariant(value)); - } - - // Gets the value associated with the specified key. - // - // TValue get(TKey) const; - // TKey = const std::string&, const String& - // TValue = bool, char, long, int, short, float, double, - // std::string, String, JsonArray, JsonObject - template - typename Internals::JsonVariantAs::type get( - const TString& key) const { - return get_impl(key); - } - // - // TValue get(TKey) const; - // TKey = char*, const char*, const FlashStringHelper* - // TValue = bool, char, long, int, short, float, double, - // std::string, String, JsonArray, JsonObject - template - typename Internals::JsonVariantAs::type get(TString* key) const { - return get_impl(key); - } - - // Checks the type of the value associated with the specified key. - // - // - // bool is(TKey) const; - // TKey = const std::string&, const String& - // TValue = bool, char, long, int, short, float, double, - // std::string, String, JsonArray, JsonObject - template - bool is(const TString& key) const { - return is_impl(key); - } - // - // bool is(TKey) const; - // TKey = char*, const char*, const FlashStringHelper* - // TValue = bool, char, long, int, short, float, double, - // std::string, String, JsonArray, JsonObject - template - bool is(TString* key) const { - return is_impl(key); - } - - // Creates and adds a JsonArray. - // - // JsonArray& createNestedArray(TKey); - // TKey = const std::string&, const String& - template - JsonArray& createNestedArray(const TString& key) { - return createNestedArray_impl(key); - } - // JsonArray& createNestedArray(TKey); - // TKey = char*, const char*, char[], const char[], const FlashStringHelper* - template - JsonArray& createNestedArray(TString* key) { - return createNestedArray_impl(key); - } - - // Creates and adds a JsonObject. - // - // JsonObject& createNestedObject(TKey); - // TKey = const std::string&, const String& - template - JsonObject& createNestedObject(const TString& key) { - return createNestedObject_impl(key); - } - // - // JsonObject& createNestedObject(TKey); - // TKey = char*, const char*, char[], const char[], const FlashStringHelper* - template - JsonObject& createNestedObject(TString* key) { - return createNestedObject_impl(key); - } - - // Tells weither the specified key is present and associated with a value. - // - // bool containsKey(TKey); - // TKey = const std::string&, const String& - template - bool containsKey(const TString& key) const { - return findKey(key) != end(); - } - // - // bool containsKey(TKey); - // TKey = char*, const char*, char[], const char[], const FlashStringHelper* - template - bool containsKey(TString* key) const { - return findKey(key) != end(); - } - - // Removes the specified key and the associated value. - // - // void remove(TKey); - // TKey = const std::string&, const String& - template - void remove(const TString& key) { - remove(findKey(key)); - } - // - // void remove(TKey); - // TKey = char*, const char*, char[], const char[], const FlashStringHelper* - template - void remove(TString* key) { - remove(findKey(key)); - } - // - // void remove(iterator) - using Internals::List::remove; - - // Returns a reference an invalid JsonObject. - // This object is meant to replace a NULL pointer. - // This is used when memory allocation or JSON parsing fail. - static JsonObject& invalid() { - static JsonObject instance(NULL); - return instance; - } - - private: - // Returns the list node that matches the specified key. - template - iterator findKey(TStringRef key) { - iterator it; - for (it = begin(); it != end(); ++it) { - if (Internals::StringTraits::equals(key, it->key)) break; - } - return it; - } - template - const_iterator findKey(TStringRef key) const { - return const_cast(this)->findKey(key); - } - - template - typename Internals::JsonVariantAs::type get_impl( - TStringRef key) const { - const_iterator it = findKey(key); - return it != end() ? it->value.as() - : Internals::JsonVariantDefault::get(); - } - - template - bool set_impl(TStringRef key, TValueRef value) { - // ignore null key - if (Internals::StringTraits::is_null(key)) return false; - - // search a matching key - iterator it = findKey(key); - if (it == end()) { - // add the key - it = Internals::List::add(); - if (it == end()) return false; - bool key_ok = - Internals::ValueSaver::save(_buffer, it->key, key); - if (!key_ok) return false; - } - - // save the value - return Internals::ValueSaver::save(_buffer, it->value, value); - } - - template - bool is_impl(TStringRef key) const { - const_iterator it = findKey(key); - return it != end() ? it->value.is() : false; - } - - template - JsonArray& createNestedArray_impl(TStringRef key); - - template - JsonObject& createNestedObject_impl(TStringRef key); -}; - -namespace Internals { -template <> -struct JsonVariantDefault { - static JsonObject& get() { - return JsonObject::invalid(); - } -}; -} // namespace Internals -} // namespace ArduinoJson diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonObjectImpl.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonObjectImpl.hpp deleted file mode 100644 index e7689b507..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonObjectImpl.hpp +++ /dev/null @@ -1,28 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "JsonArray.hpp" -#include "JsonObject.hpp" -#include "JsonObjectSubscript.hpp" - -namespace ArduinoJson { - -template -inline JsonArray &JsonObject::createNestedArray_impl(TStringRef key) { - if (!_buffer) return JsonArray::invalid(); - JsonArray &array = _buffer->createArray(); - set(key, array); - return array; -} - -template -inline JsonObject &JsonObject::createNestedObject_impl(TStringRef key) { - if (!_buffer) return JsonObject::invalid(); - JsonObject &object = _buffer->createObject(); - set(key, object); - return object; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonObjectSubscript.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonObjectSubscript.hpp deleted file mode 100644 index 6ac476370..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonObjectSubscript.hpp +++ /dev/null @@ -1,110 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "Configuration.hpp" -#include "JsonVariantBase.hpp" -#include "TypeTraits/EnableIf.hpp" - -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable : 4522) -#endif - -namespace ArduinoJson { -namespace Internals { - -template -class JsonObjectSubscript - : public JsonVariantBase > { - typedef JsonObjectSubscript this_type; - - public: - FORCE_INLINE JsonObjectSubscript(JsonObject& object, TStringRef key) - : _object(object), _key(key) {} - - FORCE_INLINE this_type& operator=(const this_type& src) { - _object.set(_key, src); - return *this; - } - - // Set the specified value - // - // operator=(const TValue&); - // TValue = bool, char, long, int, short, float, double, - // std::string, String, JsonArray, JsonObject - template - FORCE_INLINE typename EnableIf::value, this_type&>::type - operator=(const TValue& src) { - _object.set(_key, src); - return *this; - } - // - // operator=(TValue); - // TValue = char*, const char*, const FlashStringHelper* - template - FORCE_INLINE this_type& operator=(TValue* src) { - _object.set(_key, src); - return *this; - } - - FORCE_INLINE bool success() const { - return _object.containsKey(_key); - } - - template - FORCE_INLINE typename JsonVariantAs::type as() const { - return _object.get(_key); - } - - template - FORCE_INLINE bool is() const { - return _object.is(_key); - } - - // Sets the specified value. - // - // bool set(const TValue&); - // TValue = bool, char, long, int, short, float, double, RawJson, JsonVariant, - // std::string, String, JsonArray, JsonObject - template - FORCE_INLINE typename EnableIf::value, bool>::type set( - const TValue& value) { - return _object.set(_key, value); - } - // - // bool set(TValue); - // TValue = char*, const char, const FlashStringHelper* - template - FORCE_INLINE bool set(const TValue* value) { - return _object.set(_key, value); - } - // - // bool set(TValue, uint8_t decimals); - // TValue = float, double - template - DEPRECATED("Second argument is not supported anymore") - FORCE_INLINE bool set(const TValue& value, uint8_t) { - return _object.set(_key, value); - } - - private: - JsonObject& _object; - TStringRef _key; -}; - -#if ARDUINOJSON_ENABLE_STD_STREAM -template -inline std::ostream& operator<<(std::ostream& os, - const JsonObjectSubscript& source) { - return source.printTo(os); -} -#endif -} -} - -#ifdef _MSC_VER -#pragma warning(pop) -#endif diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonPair.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonPair.hpp deleted file mode 100644 index 417243045..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonPair.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "JsonVariant.hpp" - -namespace ArduinoJson { - -// A key value pair for JsonObject. -struct JsonPair { - const char* key; - JsonVariant value; -}; -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariant.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariant.hpp deleted file mode 100644 index 43c51b770..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariant.hpp +++ /dev/null @@ -1,357 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include -#include // for uint8_t - -#include "Data/JsonVariantContent.hpp" -#include "Data/JsonVariantDefault.hpp" -#include "Data/JsonVariantType.hpp" -#include "JsonVariantBase.hpp" -#include "RawJson.hpp" -#include "Serialization/JsonPrintable.hpp" -#include "TypeTraits/EnableIf.hpp" -#include "TypeTraits/IsChar.hpp" -#include "TypeTraits/IsFloatingPoint.hpp" -#include "TypeTraits/IsIntegral.hpp" -#include "TypeTraits/IsSame.hpp" -#include "TypeTraits/IsSignedIntegral.hpp" -#include "TypeTraits/IsUnsignedIntegral.hpp" -#include "TypeTraits/RemoveConst.hpp" -#include "TypeTraits/RemoveReference.hpp" - -namespace ArduinoJson { - -// Forward declarations. -class JsonArray; -class JsonObject; - -// A variant that can be a any value serializable to a JSON value. -// -// It can be set to: -// - a boolean -// - a char, short, int or a long (signed or unsigned) -// - a string (const char*) -// - a reference to a JsonArray or JsonObject -class JsonVariant : public Internals::JsonVariantBase { - template - friend class Internals::JsonSerializer; - - public: - // Creates an uninitialized JsonVariant - JsonVariant() : _type(Internals::JSON_UNDEFINED) {} - - // Create a JsonVariant containing a boolean value. - // It will be serialized as "true" or "false" in JSON. - JsonVariant(bool value) { - using namespace Internals; - _type = JSON_BOOLEAN; - _content.asInteger = static_cast(value); - } - - // Create a JsonVariant containing a floating point value. - // JsonVariant(double value); - // JsonVariant(float value); - template - JsonVariant(T value, typename Internals::EnableIf< - Internals::IsFloatingPoint::value>::type * = 0) { - using namespace Internals; - _type = JSON_FLOAT; - _content.asFloat = static_cast(value); - } - template - DEPRECATED("Second argument is not supported anymore") - JsonVariant(T value, uint8_t, - typename Internals::EnableIf< - Internals::IsFloatingPoint::value>::type * = 0) { - using namespace Internals; - _type = JSON_FLOAT; - _content.asFloat = static_cast(value); - } - - // Create a JsonVariant containing an integer value. - // JsonVariant(char) - // JsonVariant(signed short) - // JsonVariant(signed int) - // JsonVariant(signed long) - // JsonVariant(signed char) - template - JsonVariant( - T value, - typename Internals::EnableIf::value || - Internals::IsSame::value>::type * = - 0) { - using namespace Internals; - if (value >= 0) { - _type = JSON_POSITIVE_INTEGER; - _content.asInteger = static_cast(value); - } else { - _type = JSON_NEGATIVE_INTEGER; - _content.asInteger = static_cast(-value); - } - } - // JsonVariant(unsigned short) - // JsonVariant(unsigned int) - // JsonVariant(unsigned long) - template - JsonVariant(T value, - typename Internals::EnableIf< - Internals::IsUnsignedIntegral::value>::type * = 0) { - using namespace Internals; - _type = JSON_POSITIVE_INTEGER; - _content.asInteger = static_cast(value); - } - - // Create a JsonVariant containing a string. - // JsonVariant(const char*); - // JsonVariant(const signed char*); - // JsonVariant(const unsigned char*); - template - JsonVariant( - const TChar *value, - typename Internals::EnableIf::value>::type * = - 0) { - _type = Internals::JSON_STRING; - _content.asString = reinterpret_cast(value); - } - - // Create a JsonVariant containing an unparsed string - JsonVariant(Internals::RawJsonString value) { - _type = Internals::JSON_UNPARSED; - _content.asString = value; - } - - // Create a JsonVariant containing a reference to an array. - // CAUTION: we are lying about constness, because the array can be modified if - // the variant is converted back to a JsonArray& - JsonVariant(const JsonArray &array); - - // Create a JsonVariant containing a reference to an object. - // CAUTION: we are lying about constness, because the object can be modified - // if the variant is converted back to a JsonObject& - JsonVariant(const JsonObject &object); - - // Get the variant as the specified type. - // - // char as() const; - // signed char as() const; - // signed short as() const; - // signed int as() const; - // signed long as() const; - // unsigned char as() const; - // unsigned short as() const; - // unsigned int as() const; - // unsigned long as() const; - template - const typename Internals::EnableIf::value, T>::type - as() const { - return variantAsInteger(); - } - // bool as() const - template - const typename Internals::EnableIf::value, T>::type - as() const { - return variantAsInteger() != 0; - } - // - // double as() const; - // float as() const; - template - const typename Internals::EnableIf::value, - T>::type - as() const { - return variantAsFloat(); - } - // - // const char* as() const; - // const char* as() const; - template - typename Internals::EnableIf::value || - Internals::IsSame::value, - const char *>::type - as() const { - return variantAsString(); - } - // - // std::string as() const; - // String as() const; - template - typename Internals::EnableIf::has_append, T>::type - as() const { - const char *cstr = variantAsString(); - if (cstr) return T(cstr); - T s; - printTo(s); - return s; - } - // - // JsonArray& as const; - // JsonArray& as const; - template - typename Internals::EnableIf< - Internals::IsSame::type, - JsonArray>::value, - JsonArray &>::type - as() const { - return variantAsArray(); - } - // - // const JsonArray& as const; - template - typename Internals::EnableIf< - Internals::IsSame::type, - const JsonArray>::value, - const JsonArray &>::type - as() const { - return variantAsArray(); - } - // - // JsonObject& as const; - // JsonObject& as const; - template - typename Internals::EnableIf< - Internals::IsSame::type, - JsonObject>::value, - JsonObject &>::type - as() const { - return variantAsObject(); - } - // - // JsonObject& as const; - // JsonObject& as const; - template - typename Internals::EnableIf< - Internals::IsSame::type, - const JsonObject>::value, - const JsonObject &>::type - as() const { - return variantAsObject(); - } - // - // JsonVariant as const; - template - typename Internals::EnableIf::value, - T>::type - as() const { - return *this; - } - - // Tells weither the variant has the specified type. - // Returns true if the variant has type type T, false otherwise. - // - // bool is() const; - // bool is() const; - // bool is() const; - // bool is() const; - // bool is() const; - // bool is() const; - // bool is() const; - // bool is() const; - // bool is() const; - template - typename Internals::EnableIf::value, bool>::type is() - const { - return variantIsInteger(); - } - // - // bool is() const; - // bool is() const; - template - typename Internals::EnableIf::value, bool>::type - is() const { - return variantIsFloat(); - } - // - // bool is() const - template - typename Internals::EnableIf::value, bool>::type - is() const { - return variantIsBoolean(); - } - // - // bool is() const; - // bool is() const; - // bool is() const; - template - typename Internals::EnableIf::value || - Internals::IsSame::value || - Internals::StringTraits::has_append, - bool>::type - is() const { - return variantIsString(); - } - // - // bool is const; - // bool is const; - // bool is const; - template - typename Internals::EnableIf< - Internals::IsSame::type>::type, - JsonArray>::value, - bool>::type - is() const { - return variantIsArray(); - } - // - // bool is const; - // bool is const; - // bool is const; - template - typename Internals::EnableIf< - Internals::IsSame::type>::type, - JsonObject>::value, - bool>::type - is() const { - return variantIsObject(); - } - - // Returns true if the variant has a value - bool success() const { - return _type != Internals::JSON_UNDEFINED; - } - - private: - JsonArray &variantAsArray() const; - JsonObject &variantAsObject() const; - const char *variantAsString() const; - template - T variantAsFloat() const; - template - T variantAsInteger() const; - bool variantIsBoolean() const; - bool variantIsFloat() const; - bool variantIsInteger() const; - bool variantIsArray() const { - return _type == Internals::JSON_ARRAY; - } - bool variantIsObject() const { - return _type == Internals::JSON_OBJECT; - } - bool variantIsString() const { - return _type == Internals::JSON_STRING || - (_type == Internals::JSON_UNPARSED && _content.asString && - !strcmp("null", _content.asString)); - } - - // The current type of the variant - Internals::JsonVariantType _type; - - // The various alternatives for the value of the variant. - Internals::JsonVariantContent _content; -}; - -DEPRECATED("Decimal places are ignored, use the float value instead") -inline JsonVariant float_with_n_digits(float value, uint8_t) { - return JsonVariant(value); -} - -DEPRECATED("Decimal places are ignored, use the double value instead") -inline JsonVariant double_with_n_digits(double value, uint8_t) { - return JsonVariant(value); -} -} // namespace ArduinoJson diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantBase.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantBase.hpp deleted file mode 100644 index 44acf2e14..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantBase.hpp +++ /dev/null @@ -1,24 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "JsonVariantCasts.hpp" -#include "JsonVariantComparisons.hpp" -#include "JsonVariantOr.hpp" -#include "JsonVariantSubscripts.hpp" -#include "Serialization/JsonPrintable.hpp" - -namespace ArduinoJson { -namespace Internals { - -template -class JsonVariantBase : public JsonPrintable, - public JsonVariantCasts, - public JsonVariantComparisons, - public JsonVariantOr, - public JsonVariantSubscripts, - public JsonVariantTag {}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantCasts.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantCasts.hpp deleted file mode 100644 index 68f5bd7dd..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantCasts.hpp +++ /dev/null @@ -1,59 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "Data/JsonVariantAs.hpp" -#include "Polyfills/attributes.hpp" - -namespace ArduinoJson { -namespace Internals { - -template -class JsonVariantCasts { - public: -#if ARDUINOJSON_ENABLE_DEPRECATED - DEPRECATED("use as() instead") - FORCE_INLINE JsonArray &asArray() const { - return impl()->template as(); - } - - DEPRECATED("use as() instead") - FORCE_INLINE JsonObject &asObject() const { - return impl()->template as(); - } - - DEPRECATED("use as() instead") - FORCE_INLINE const char *asString() const { - return impl()->template as(); - } -#endif - - // Gets the variant as an array. - // Returns a reference to the JsonArray or JsonArray::invalid() if the - // variant - // is not an array. - FORCE_INLINE operator JsonArray &() const { - return impl()->template as(); - } - - // Gets the variant as an object. - // Returns a reference to the JsonObject or JsonObject::invalid() if the - // variant is not an object. - FORCE_INLINE operator JsonObject &() const { - return impl()->template as(); - } - - template - FORCE_INLINE operator T() const { - return impl()->template as(); - } - - private: - const TImpl *impl() const { - return static_cast(this); - } -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantComparisons.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantComparisons.hpp deleted file mode 100644 index 47f9d6322..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantComparisons.hpp +++ /dev/null @@ -1,139 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "StringTraits/StringTraits.hpp" -#include "TypeTraits/EnableIf.hpp" -#include "TypeTraits/IsVariant.hpp" - -namespace ArduinoJson { -namespace Internals { - -template -class JsonVariantComparisons { - public: - template - friend bool operator==(const JsonVariantComparisons &variant, - TComparand comparand) { - return variant.equals(comparand); - } - - template - friend typename EnableIf::value, bool>::type - operator==(TComparand comparand, const JsonVariantComparisons &variant) { - return variant.equals(comparand); - } - - template - friend bool operator!=(const JsonVariantComparisons &variant, - TComparand comparand) { - return !variant.equals(comparand); - } - - template - friend typename EnableIf::value, bool>::type - operator!=(TComparand comparand, const JsonVariantComparisons &variant) { - return !variant.equals(comparand); - } - - template - friend bool operator<=(const JsonVariantComparisons &left, TComparand right) { - return left.as() <= right; - } - - template - friend bool operator<=(TComparand comparand, - const JsonVariantComparisons &variant) { - return comparand <= variant.as(); - } - - template - friend bool operator>=(const JsonVariantComparisons &variant, - TComparand comparand) { - return variant.as() >= comparand; - } - - template - friend bool operator>=(TComparand comparand, - const JsonVariantComparisons &variant) { - return comparand >= variant.as(); - } - - template - friend bool operator<(const JsonVariantComparisons &varian, - TComparand comparand) { - return varian.as() < comparand; - } - - template - friend bool operator<(TComparand comparand, - const JsonVariantComparisons &variant) { - return comparand < variant.as(); - } - - template - friend bool operator>(const JsonVariantComparisons &variant, - TComparand comparand) { - return variant.as() > comparand; - } - - template - friend bool operator>(TComparand comparand, - const JsonVariantComparisons &variant) { - return comparand > variant.as(); - } - - private: - const TImpl *impl() const { - return static_cast(this); - } - - template - const typename JsonVariantAs::type as() const { - return impl()->template as(); - } - - template - bool is() const { - return impl()->template is(); - } - - template - typename EnableIf::has_equals, bool>::type equals( - const TString &comparand) const { - const char *value = as(); - return StringTraits::equals(comparand, value); - } - - template - typename EnableIf::value && - !StringTraits::has_equals, - bool>::type - equals(const TComparand &comparand) const { - return as() == comparand; - } - - template - bool equals(const JsonVariantComparisons &right) const { - using namespace Internals; - if (is() && right.template is()) - return as() == right.template as(); - if (is() && right.template is()) - return as() == right.template as(); - if (is() && right.template is()) - return as() == right.template as(); - if (is() && right.template is()) - return as() == right.template as(); - if (is() && right.template is()) - return as() == right.template as(); - if (is() && right.template is()) - return StringTraits::equals(as(), - right.template as()); - - return false; - } -}; -} // namespace Internals -} // namespace ArduinoJson diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantImpl.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantImpl.hpp deleted file mode 100644 index 31f96ce1a..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantImpl.hpp +++ /dev/null @@ -1,126 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "Configuration.hpp" -#include "JsonArray.hpp" -#include "JsonObject.hpp" -#include "JsonVariant.hpp" -#include "Polyfills/isFloat.hpp" -#include "Polyfills/isInteger.hpp" -#include "Polyfills/parseFloat.hpp" -#include "Polyfills/parseInteger.hpp" - -#include // for strcmp - -namespace ArduinoJson { - -inline JsonVariant::JsonVariant(const JsonArray &array) { - if (array.success()) { - _type = Internals::JSON_ARRAY; - _content.asArray = const_cast(&array); - } else { - _type = Internals::JSON_UNDEFINED; - } -} - -inline JsonVariant::JsonVariant(const JsonObject &object) { - if (object.success()) { - _type = Internals::JSON_OBJECT; - _content.asObject = const_cast(&object); - } else { - _type = Internals::JSON_UNDEFINED; - } -} - -inline JsonArray &JsonVariant::variantAsArray() const { - if (_type == Internals::JSON_ARRAY) return *_content.asArray; - return JsonArray::invalid(); -} - -inline JsonObject &JsonVariant::variantAsObject() const { - if (_type == Internals::JSON_OBJECT) return *_content.asObject; - return JsonObject::invalid(); -} - -template -inline T JsonVariant::variantAsInteger() const { - using namespace Internals; - switch (_type) { - case JSON_UNDEFINED: - return 0; - case JSON_POSITIVE_INTEGER: - case JSON_BOOLEAN: - return T(_content.asInteger); - case JSON_NEGATIVE_INTEGER: - return T(~_content.asInteger + 1); - case JSON_STRING: - case JSON_UNPARSED: - return parseInteger(_content.asString); - default: - return T(_content.asFloat); - } -} - -inline const char *JsonVariant::variantAsString() const { - using namespace Internals; - if (_type == JSON_UNPARSED && _content.asString && - !strcmp("null", _content.asString)) - return NULL; - if (_type == JSON_STRING || _type == JSON_UNPARSED) return _content.asString; - return NULL; -} - -template -inline T JsonVariant::variantAsFloat() const { - using namespace Internals; - switch (_type) { - case JSON_UNDEFINED: - return 0; - case JSON_POSITIVE_INTEGER: - case JSON_BOOLEAN: - return static_cast(_content.asInteger); - case JSON_NEGATIVE_INTEGER: - return -static_cast(_content.asInteger); - case JSON_STRING: - case JSON_UNPARSED: - return parseFloat(_content.asString); - default: - return static_cast(_content.asFloat); - } -} - -inline bool JsonVariant::variantIsBoolean() const { - using namespace Internals; - if (_type == JSON_BOOLEAN) return true; - - if (_type != JSON_UNPARSED || _content.asString == NULL) return false; - - return !strcmp(_content.asString, "true") || - !strcmp(_content.asString, "false"); -} - -inline bool JsonVariant::variantIsInteger() const { - using namespace Internals; - - return _type == JSON_POSITIVE_INTEGER || _type == JSON_NEGATIVE_INTEGER || - (_type == JSON_UNPARSED && isInteger(_content.asString)); -} - -inline bool JsonVariant::variantIsFloat() const { - using namespace Internals; - - return _type == JSON_FLOAT || _type == JSON_POSITIVE_INTEGER || - _type == JSON_NEGATIVE_INTEGER || - (_type == JSON_UNPARSED && isFloat(_content.asString)); -} - -#if ARDUINOJSON_ENABLE_STD_STREAM -inline std::ostream &operator<<(std::ostream &os, const JsonVariant &source) { - return source.printTo(os); -} -#endif - -} // namespace ArduinoJson diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantOr.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantOr.hpp deleted file mode 100644 index d8022fcb2..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantOr.hpp +++ /dev/null @@ -1,52 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "Data/JsonVariantAs.hpp" -#include "Polyfills/attributes.hpp" -#include "TypeTraits/EnableIf.hpp" -#include "TypeTraits/IsIntegral.hpp" - -namespace ArduinoJson { -namespace Internals { - -template -class JsonVariantOr { - public: - // Returns the default value if the JsonVariant is undefined of incompatible - template - typename EnableIf::value, T>::type operator|( - const T &defaultValue) const { - if (impl()->template is()) - return impl()->template as(); - else - return defaultValue; - } - - // Returns the default value if the JsonVariant is undefined of incompatible - // Special case for string: null is treated as undefined - const char *operator|(const char *defaultValue) const { - const char *value = impl()->template as(); - return value ? value : defaultValue; - } - - // Returns the default value if the JsonVariant is undefined of incompatible - // Special case for integers: we also accept double - template - typename EnableIf::value, Integer>::type operator|( - const Integer &defaultValue) const { - if (impl()->template is()) - return impl()->template as(); - else - return defaultValue; - } - - private: - const TImpl *impl() const { - return static_cast(this); - } -}; -} // namespace Internals -} // namespace ArduinoJson diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantSubscripts.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantSubscripts.hpp deleted file mode 100644 index 279ee019f..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/JsonVariantSubscripts.hpp +++ /dev/null @@ -1,86 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "Data/JsonVariantAs.hpp" -#include "Polyfills/attributes.hpp" -#include "StringTraits/StringTraits.hpp" -#include "TypeTraits/EnableIf.hpp" - -namespace ArduinoJson { -namespace Internals { - -// Forward declarations. -class JsonArraySubscript; -template -class JsonObjectSubscript; - -template -class JsonVariantSubscripts { - public: - // Mimics an array or an object. - // Returns the size of the array or object if the variant has that type. - // Returns 0 if the variant is neither an array nor an object - size_t size() const { - return impl()->template as().size() + - impl()->template as().size(); - } - - // Mimics an array. - // Returns the element at specified index if the variant is an array. - // Returns JsonVariant::invalid() if the variant is not an array. - FORCE_INLINE const JsonArraySubscript operator[](size_t index) const; - FORCE_INLINE JsonArraySubscript operator[](size_t index); - - // Mimics an object. - // Returns the value associated with the specified key if the variant is - // an object. - // Return JsonVariant::invalid() if the variant is not an object. - // - // const JsonObjectSubscript operator[](TKey) const; - // TKey = const std::string&, const String& - template - FORCE_INLINE - typename EnableIf::has_equals, - const JsonObjectSubscript >::type - operator[](const TString &key) const { - return impl()->template as()[key]; - } - // - // const JsonObjectSubscript operator[](TKey) const; - // TKey = const std::string&, const String& - template - FORCE_INLINE typename EnableIf::has_equals, - JsonObjectSubscript >::type - operator[](const TString &key) { - return impl()->template as()[key]; - } - // - // JsonObjectSubscript operator[](TKey); - // TKey = const char*, const char[N], const FlashStringHelper* - template - FORCE_INLINE typename EnableIf::has_equals, - JsonObjectSubscript >::type - operator[](const TString *key) { - return impl()->template as()[key]; - } - // - // JsonObjectSubscript operator[](TKey); - // TKey = const char*, const char[N], const FlashStringHelper* - template - FORCE_INLINE - typename EnableIf::has_equals, - const JsonObjectSubscript >::type - operator[](const TString *key) const { - return impl()->template as()[key]; - } - - private: - const TImpl *impl() const { - return static_cast(this); - } -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/attributes.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/attributes.hpp deleted file mode 100644 index b49091ddc..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/attributes.hpp +++ /dev/null @@ -1,29 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#ifdef _MSC_VER // Visual Studio - -#define FORCE_INLINE // __forceinline causes C4714 when returning std::string -#define NO_INLINE __declspec(noinline) -#define DEPRECATED(msg) __declspec(deprecated(msg)) - -#elif defined(__GNUC__) // GCC or Clang - -#define FORCE_INLINE __attribute__((always_inline)) -#define NO_INLINE __attribute__((noinline)) -#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) -#define DEPRECATED(msg) __attribute__((deprecated(msg))) -#else -#define DEPRECATED(msg) __attribute__((deprecated)) -#endif - -#else // Other compilers - -#define FORCE_INLINE -#define NO_INLINE -#define DEPRECATED(msg) - -#endif diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/ctype.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/ctype.hpp deleted file mode 100644 index 2d52703cd..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/ctype.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -inline bool isdigit(char c) { - return '0' <= c && c <= '9'; -} - -inline bool issign(char c) { - return '-' == c || c == '+'; -} -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/isFloat.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/isFloat.hpp deleted file mode 100644 index 973b89fe9..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/isFloat.hpp +++ /dev/null @@ -1,38 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include // for strcmp -#include "./ctype.hpp" - -namespace ArduinoJson { -namespace Internals { - -inline bool isFloat(const char* s) { - if (!s) return false; - - if (!strcmp(s, "NaN")) return true; - if (issign(*s)) s++; - if (!strcmp(s, "Infinity")) return true; - if (*s == '\0') return false; - - while (isdigit(*s)) s++; - - if (*s == '.') { - s++; - while (isdigit(*s)) s++; - } - - if (*s == 'e' || *s == 'E') { - s++; - if (issign(*s)) s++; - if (!isdigit(*s)) return false; - while (isdigit(*s)) s++; - } - - return *s == '\0'; -} -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/isInteger.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/isInteger.hpp deleted file mode 100644 index 8049079a7..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/isInteger.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "./ctype.hpp" - -namespace ArduinoJson { -namespace Internals { - -inline bool isInteger(const char* s) { - if (!s || !*s) return false; - if (issign(*s)) s++; - while (isdigit(*s)) s++; - return *s == '\0'; -} -} // namespace Internals -} // namespace ArduinoJson diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/math.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/math.hpp deleted file mode 100644 index 48773edd2..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/math.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { -template -bool isNaN(T x) { - return x != x; -} - -template -bool isInfinity(T x) { - return x != 0.0 && x * 2 == x; -} -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/parseFloat.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/parseFloat.hpp deleted file mode 100644 index 49b0f6fcd..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/parseFloat.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "../TypeTraits/FloatTraits.hpp" -#include "./ctype.hpp" -#include "./math.hpp" - -namespace ArduinoJson { -namespace Internals { - -template -inline T parseFloat(const char* s) { - typedef FloatTraits traits; - typedef typename traits::mantissa_type mantissa_t; - typedef typename traits::exponent_type exponent_t; - - if (!s) return 0; // NULL - - bool negative_result = false; - switch (*s) { - case '-': - negative_result = true; - s++; - break; - case '+': - s++; - break; - } - - if (*s == 't') return 1; // true - if (*s == 'n' || *s == 'N') return traits::nan(); - if (*s == 'i' || *s == 'I') - return negative_result ? -traits::inf() : traits::inf(); - - mantissa_t mantissa = 0; - exponent_t exponent_offset = 0; - - while (isdigit(*s)) { - if (mantissa < traits::mantissa_max / 10) - mantissa = mantissa * 10 + (*s - '0'); - else - exponent_offset++; - s++; - } - - if (*s == '.') { - s++; - while (isdigit(*s)) { - if (mantissa < traits::mantissa_max / 10) { - mantissa = mantissa * 10 + (*s - '0'); - exponent_offset--; - } - s++; - } - } - - int exponent = 0; - if (*s == 'e' || *s == 'E') { - s++; - bool negative_exponent = false; - if (*s == '-') { - negative_exponent = true; - s++; - } else if (*s == '+') { - s++; - } - - while (isdigit(*s)) { - exponent = exponent * 10 + (*s - '0'); - if (exponent + exponent_offset > traits::exponent_max) { - if (negative_exponent) - return negative_result ? -0.0f : 0.0f; - else - return negative_result ? -traits::inf() : traits::inf(); - } - s++; - } - if (negative_exponent) exponent = -exponent; - } - exponent += exponent_offset; - - T result = traits::make_float(static_cast(mantissa), exponent); - - return negative_result ? -result : result; -} -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/parseInteger.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/parseInteger.hpp deleted file mode 100644 index e8f197494..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Polyfills/parseInteger.hpp +++ /dev/null @@ -1,41 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include - -#include "../Configuration.hpp" -#include "./ctype.hpp" - -namespace ArduinoJson { -namespace Internals { -template -T parseInteger(const char *s) { - if (!s) return 0; // NULL - - if (*s == 't') return 1; // "true" - - T result = 0; - bool negative_result = false; - - switch (*s) { - case '-': - negative_result = true; - s++; - break; - case '+': - s++; - break; - } - - while (isdigit(*s)) { - result = T(result * 10 + T(*s - '0')); - s++; - } - - return negative_result ? T(~result + 1) : result; -} -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/RawJson.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/RawJson.hpp deleted file mode 100644 index 4beb980ee..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/RawJson.hpp +++ /dev/null @@ -1,46 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { - -namespace Internals { -// A special type of data that can be used to insert pregenerated JSON portions. -template -class RawJsonString { - public: - explicit RawJsonString(T str) : _str(str) {} - operator T() const { - return _str; - } - - private: - T _str; -}; - -template -struct StringTraits, void> { - static bool is_null(RawJsonString source) { - return StringTraits::is_null(static_cast(source)); - } - - typedef RawJsonString duplicate_t; - - template - static duplicate_t duplicate(RawJsonString source, Buffer* buffer) { - return duplicate_t(StringTraits::duplicate(source, buffer)); - } - - static const bool has_append = false; - static const bool has_equals = false; - static const bool should_duplicate = StringTraits::should_duplicate; -}; -} - -template -inline Internals::RawJsonString RawJson(T str) { - return Internals::RawJsonString(str); -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/DummyPrint.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/DummyPrint.hpp deleted file mode 100644 index 9fdf2d6a0..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/DummyPrint.hpp +++ /dev/null @@ -1,22 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -// A dummy Print implementation used in JsonPrintable::measureLength() -class DummyPrint { - public: - size_t print(char) { - return 1; - } - - size_t print(const char* s) { - return strlen(s); - } -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/DynamicStringBuilder.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/DynamicStringBuilder.hpp deleted file mode 100644 index 41be6392c..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/DynamicStringBuilder.hpp +++ /dev/null @@ -1,35 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "../StringTraits/StringTraits.hpp" - -namespace ArduinoJson { -namespace Internals { - -// A Print implementation that allows to write in a String -template -class DynamicStringBuilder { - public: - DynamicStringBuilder(TString &str) : _str(str) {} - - size_t print(char c) { - StringTraits::append(_str, c); - return 1; - } - - size_t print(const char *s) { - size_t initialLen = _str.length(); - StringTraits::append(_str, s); - return _str.length() - initialLen; - } - - private: - DynamicStringBuilder &operator=(const DynamicStringBuilder &); - - TString &_str; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/FloatParts.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/FloatParts.hpp deleted file mode 100644 index c14e3b553..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/FloatParts.hpp +++ /dev/null @@ -1,89 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "../Configuration.hpp" -#include "../Polyfills/math.hpp" -#include "../TypeTraits/FloatTraits.hpp" - -namespace ArduinoJson { -namespace Internals { - -template -struct FloatParts { - uint32_t integral; - uint32_t decimal; - int16_t exponent; - int8_t decimalPlaces; - - FloatParts(TFloat value) { - uint32_t maxDecimalPart = sizeof(TFloat) >= 8 ? 1000000000 : 1000000; - decimalPlaces = sizeof(TFloat) >= 8 ? 9 : 6; - - exponent = normalize(value); - - integral = uint32_t(value); - // reduce number of decimal places by the number of integral places - for (uint32_t tmp = integral; tmp >= 10; tmp /= 10) { - maxDecimalPart /= 10; - decimalPlaces--; - } - - TFloat remainder = (value - TFloat(integral)) * TFloat(maxDecimalPart); - - decimal = uint32_t(remainder); - remainder = remainder - TFloat(decimal); - - // rounding: - // increment by 1 if remainder >= 0.5 - decimal += uint32_t(remainder * 2); - if (decimal >= maxDecimalPart) { - decimal = 0; - integral++; - if (exponent && integral >= 10) { - exponent++; - integral = 1; - } - } - - // remove trailing zeros - while (decimal % 10 == 0 && decimalPlaces > 0) { - decimal /= 10; - decimalPlaces--; - } - } - - static int16_t normalize(TFloat& value) { - typedef FloatTraits traits; - int16_t powersOf10 = 0; - - int8_t index = sizeof(TFloat) == 8 ? 8 : 5; - int bit = 1 << index; - - if (value >= ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD) { - for (; index >= 0; index--) { - if (value >= traits::positiveBinaryPowerOfTen(index)) { - value *= traits::negativeBinaryPowerOfTen(index); - powersOf10 = int16_t(powersOf10 + bit); - } - bit >>= 1; - } - } - - if (value > 0 && value <= ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD) { - for (; index >= 0; index--) { - if (value < traits::negativeBinaryPowerOfTenPlusOne(index)) { - value *= traits::positiveBinaryPowerOfTen(index); - powersOf10 = int16_t(powersOf10 - bit); - } - bit >>= 1; - } - } - - return powersOf10; - } -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/IndentedPrint.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/IndentedPrint.hpp deleted file mode 100644 index 864f9aaa4..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/IndentedPrint.hpp +++ /dev/null @@ -1,68 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -// Decorator on top of Print to allow indented output. -// This class is used by JsonPrintable::prettyPrintTo() but can also be used -// for your own purpose, like logging. -template -class IndentedPrint { - public: - explicit IndentedPrint(Print &p) : sink(&p) { - level = 0; - tabSize = 2; - isNewLine = true; - } - - size_t print(char c) { - size_t n = 0; - if (isNewLine) n += writeTabs(); - n += sink->print(c); - isNewLine = c == '\n'; - return n; - } - - size_t print(const char *s) { - // TODO: optimize - size_t n = 0; - while (*s) n += print(*s++); - return n; - } - - // Adds one level of indentation - void indent() { - if (level < MAX_LEVEL) level++; - } - - // Removes one level of indentation - void unindent() { - if (level > 0) level--; - } - - // Set the number of space printed for each level of indentation - void setTabSize(uint8_t n) { - if (n < MAX_TAB_SIZE) tabSize = n & MAX_TAB_SIZE; - } - - private: - Print *sink; - uint8_t level : 4; - uint8_t tabSize : 3; - bool isNewLine : 1; - - size_t writeTabs() { - size_t n = 0; - for (int i = 0; i < level * tabSize; i++) n += sink->print(' '); - return n; - } - - static const int MAX_LEVEL = 15; // because it's only 4 bits - static const int MAX_TAB_SIZE = 7; // because it's only 3 bits -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonPrintable.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonPrintable.hpp deleted file mode 100644 index 43d413a85..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonPrintable.hpp +++ /dev/null @@ -1,117 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "../Configuration.hpp" -#include "../TypeTraits/EnableIf.hpp" -#include "DummyPrint.hpp" -#include "DynamicStringBuilder.hpp" -#include "IndentedPrint.hpp" -#include "JsonSerializer.hpp" -#include "JsonWriter.hpp" -#include "Prettyfier.hpp" -#include "StaticStringBuilder.hpp" - -#if ARDUINOJSON_ENABLE_STD_STREAM -#include "StreamPrintAdapter.hpp" -#endif - -namespace ArduinoJson { -namespace Internals { - -// Implements all the overloads of printTo() and prettyPrintTo() -// Caution: this class use a template parameter to avoid virtual methods. -// This is a bit curious but allows to reduce the size of JsonVariant, JsonArray -// and JsonObject. -template -class JsonPrintable { - public: - template - typename EnableIf::has_append, size_t>::type printTo( - Print &print) const { - JsonWriter writer(print); - JsonSerializer >::serialize(downcast(), writer); - return writer.bytesWritten(); - } - -#if ARDUINOJSON_ENABLE_STD_STREAM - std::ostream &printTo(std::ostream &os) const { - StreamPrintAdapter adapter(os); - printTo(adapter); - return os; - } -#endif - - size_t printTo(char *buffer, size_t bufferSize) const { - StaticStringBuilder sb(buffer, bufferSize); - return printTo(sb); - } - - template - size_t printTo(char (&buffer)[N]) const { - return printTo(buffer, N); - } - - template - typename EnableIf::has_append, size_t>::type printTo( - TString &str) const { - DynamicStringBuilder sb(str); - return printTo(sb); - } - - template - size_t prettyPrintTo(IndentedPrint &print) const { - Prettyfier p(print); - return printTo(p); - } - - size_t prettyPrintTo(char *buffer, size_t bufferSize) const { - StaticStringBuilder sb(buffer, bufferSize); - return prettyPrintTo(sb); - } - - template - size_t prettyPrintTo(char (&buffer)[N]) const { - return prettyPrintTo(buffer, N); - } - - template - typename EnableIf::has_append, size_t>::type - prettyPrintTo(Print &print) const { - IndentedPrint indentedPrint(print); - return prettyPrintTo(indentedPrint); - } - - template - typename EnableIf::has_append, size_t>::type - prettyPrintTo(TString &str) const { - DynamicStringBuilder sb(str); - return prettyPrintTo(sb); - } - - size_t measureLength() const { - DummyPrint dp; - return printTo(dp); - } - - size_t measurePrettyLength() const { - DummyPrint dp; - return prettyPrintTo(dp); - } - - private: - const T &downcast() const { - return *static_cast(this); - } -}; - -#if ARDUINOJSON_ENABLE_STD_STREAM -template -inline std::ostream &operator<<(std::ostream &os, const JsonPrintable &v) { - return v.printTo(os); -} -#endif -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonSerializer.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonSerializer.hpp deleted file mode 100644 index 0cb537f7d..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonSerializer.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "JsonWriter.hpp" - -namespace ArduinoJson { - -class JsonArray; -class JsonObject; -class JsonVariant; - -namespace Internals { - -class JsonArraySubscript; -template -class JsonObjectSubscript; - -template -class JsonSerializer { - public: - static void serialize(const JsonArray &, Writer &); - static void serialize(const JsonArraySubscript &, Writer &); - static void serialize(const JsonObject &, Writer &); - template - static void serialize(const JsonObjectSubscript &, Writer &); - static void serialize(const JsonVariant &, Writer &); -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonSerializerImpl.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonSerializerImpl.hpp deleted file mode 100644 index 0faae2769..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonSerializerImpl.hpp +++ /dev/null @@ -1,103 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "../JsonArray.hpp" -#include "../JsonArraySubscript.hpp" -#include "../JsonObject.hpp" -#include "../JsonObjectSubscript.hpp" -#include "../JsonVariant.hpp" -#include "JsonSerializer.hpp" - -template -inline void ArduinoJson::Internals::JsonSerializer::serialize( - const JsonArray& array, Writer& writer) { - writer.beginArray(); - - JsonArray::const_iterator it = array.begin(); - while (it != array.end()) { - serialize(*it, writer); - - ++it; - if (it == array.end()) break; - - writer.writeComma(); - } - - writer.endArray(); -} - -template -inline void ArduinoJson::Internals::JsonSerializer::serialize( - const JsonArraySubscript& arraySubscript, Writer& writer) { - serialize(arraySubscript.as(), writer); -} - -template -inline void ArduinoJson::Internals::JsonSerializer::serialize( - const JsonObject& object, Writer& writer) { - writer.beginObject(); - - JsonObject::const_iterator it = object.begin(); - while (it != object.end()) { - writer.writeString(it->key); - writer.writeColon(); - serialize(it->value, writer); - - ++it; - if (it == object.end()) break; - - writer.writeComma(); - } - - writer.endObject(); -} - -template -template -inline void ArduinoJson::Internals::JsonSerializer::serialize( - const JsonObjectSubscript& objectSubscript, Writer& writer) { - serialize(objectSubscript.template as(), writer); -} - -template -inline void ArduinoJson::Internals::JsonSerializer::serialize( - const JsonVariant& variant, Writer& writer) { - switch (variant._type) { - case JSON_FLOAT: - writer.writeFloat(variant._content.asFloat); - return; - - case JSON_ARRAY: - serialize(*variant._content.asArray, writer); - return; - - case JSON_OBJECT: - serialize(*variant._content.asObject, writer); - return; - - case JSON_STRING: - writer.writeString(variant._content.asString); - return; - - case JSON_UNPARSED: - writer.writeRaw(variant._content.asString); - return; - - case JSON_NEGATIVE_INTEGER: - writer.writeRaw('-'); // Falls through. - - case JSON_POSITIVE_INTEGER: - writer.writeInteger(variant._content.asInteger); - return; - - case JSON_BOOLEAN: - writer.writeBoolean(variant._content.asInteger != 0); - return; - - default: // JSON_UNDEFINED - return; - } -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonWriter.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonWriter.hpp deleted file mode 100644 index 146d51dcb..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/JsonWriter.hpp +++ /dev/null @@ -1,155 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include -#include "../Data/Encoding.hpp" -#include "../Data/JsonInteger.hpp" -#include "../Polyfills/attributes.hpp" -#include "../Serialization/FloatParts.hpp" - -namespace ArduinoJson { -namespace Internals { - -// Writes the JSON tokens to a Print implementation -// This class is used by: -// - JsonArray::writeTo() -// - JsonObject::writeTo() -// - JsonVariant::writeTo() -// Its derived by PrettyJsonWriter that overrides some members to add -// indentation. -template -class JsonWriter { - public: - explicit JsonWriter(Print &sink) : _sink(sink), _length(0) {} - - // Returns the number of bytes sent to the Print implementation. - // This is very handy for implementations of printTo() that must return the - // number of bytes written. - size_t bytesWritten() const { - return _length; - } - - void beginArray() { - writeRaw('['); - } - void endArray() { - writeRaw(']'); - } - - void beginObject() { - writeRaw('{'); - } - void endObject() { - writeRaw('}'); - } - - void writeColon() { - writeRaw(':'); - } - void writeComma() { - writeRaw(','); - } - - void writeBoolean(bool value) { - writeRaw(value ? "true" : "false"); - } - - void writeString(const char *value) { - if (!value) { - writeRaw("null"); - } else { - writeRaw('\"'); - while (*value) writeChar(*value++); - writeRaw('\"'); - } - } - - void writeChar(char c) { - char specialChar = Encoding::escapeChar(c); - if (specialChar) { - writeRaw('\\'); - writeRaw(specialChar); - } else { - writeRaw(c); - } - } - - template - void writeFloat(TFloat value) { - if (isNaN(value)) return writeRaw("NaN"); - - if (value < 0.0) { - writeRaw('-'); - value = -value; - } - - if (isInfinity(value)) return writeRaw("Infinity"); - - FloatParts parts(value); - - writeInteger(parts.integral); - if (parts.decimalPlaces) writeDecimals(parts.decimal, parts.decimalPlaces); - - if (parts.exponent < 0) { - writeRaw("e-"); - writeInteger(-parts.exponent); - } - - if (parts.exponent > 0) { - writeRaw('e'); - writeInteger(parts.exponent); - } - } - - template - void writeInteger(UInt value) { - char buffer[22]; - char *end = buffer + sizeof(buffer) - 1; - char *ptr = end; - - *ptr = 0; - do { - *--ptr = char(value % 10 + '0'); - value = UInt(value / 10); - } while (value); - - writeRaw(ptr); - } - - void writeDecimals(uint32_t value, int8_t width) { - // buffer should be big enough for all digits, the dot and the null - // terminator - char buffer[16]; - char *ptr = buffer + sizeof(buffer) - 1; - - // write the string in reverse order - *ptr = 0; - while (width--) { - *--ptr = char(value % 10 + '0'); - value /= 10; - } - *--ptr = '.'; - - // and dump it in the right order - writeRaw(ptr); - } - - void writeRaw(const char *s) { - _length += _sink.print(s); - } - void writeRaw(char c) { - _length += _sink.print(c); - } - - protected: - Print &_sink; - size_t _length; - - private: - JsonWriter &operator=(const JsonWriter &); // cannot be assigned -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/Prettyfier.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/Prettyfier.hpp deleted file mode 100644 index 8b4f0d2eb..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/Prettyfier.hpp +++ /dev/null @@ -1,133 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "IndentedPrint.hpp" - -namespace ArduinoJson { -namespace Internals { - -// Converts a compact JSON string into an indented one. -template -class Prettyfier { - public: - explicit Prettyfier(IndentedPrint& p) : _sink(p) { - _previousChar = 0; - _inString = false; - } - - size_t print(char c) { - size_t n = _inString ? handleStringChar(c) : handleMarkupChar(c); - _previousChar = c; - return n; - } - - size_t print(const char* s) { - // TODO: optimize - size_t n = 0; - while (*s) n += print(*s++); - return n; - } - - private: - Prettyfier& operator=(const Prettyfier&); // cannot be assigned - - bool inEmptyBlock() { - return _previousChar == '{' || _previousChar == '['; - } - - size_t handleStringChar(char c) { - bool isQuote = c == '"' && _previousChar != '\\'; - - if (isQuote) _inString = false; - - return _sink.print(c); - } - - size_t handleMarkupChar(char c) { - switch (c) { - case '{': - case '[': - return writeBlockOpen(c); - - case '}': - case ']': - return writeBlockClose(c); - - case ':': - return writeColon(); - - case ',': - return writeComma(); - - case '"': - return writeQuoteOpen(); - - default: - return writeNormalChar(c); - } - } - - size_t writeBlockClose(char c) { - size_t n = 0; - n += unindentIfNeeded(); - n += _sink.print(c); - return n; - } - - size_t writeBlockOpen(char c) { - size_t n = 0; - n += indentIfNeeded(); - n += _sink.print(c); - return n; - } - - size_t writeColon() { - size_t n = 0; - n += _sink.print(": "); - return n; - } - - size_t writeComma() { - size_t n = 0; - n += _sink.print(",\r\n"); - return n; - } - - size_t writeQuoteOpen() { - _inString = true; - size_t n = 0; - n += indentIfNeeded(); - n += _sink.print('"'); - return n; - } - - size_t writeNormalChar(char c) { - size_t n = 0; - n += indentIfNeeded(); - n += _sink.print(c); - return n; - } - - size_t indentIfNeeded() { - if (!inEmptyBlock()) return 0; - - _sink.indent(); - return _sink.print("\r\n"); - } - - size_t unindentIfNeeded() { - if (inEmptyBlock()) return 0; - - _sink.unindent(); - return _sink.print("\r\n"); - } - - char _previousChar; - IndentedPrint& _sink; - bool _inString; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/StaticStringBuilder.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/StaticStringBuilder.hpp deleted file mode 100644 index 9617bbd97..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/StaticStringBuilder.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -// A Print implementation that allows to write in a char[] -class StaticStringBuilder { - public: - StaticStringBuilder(char *buf, size_t size) : end(buf + size - 1), p(buf) { - *p = '\0'; - } - - size_t print(char c) { - if (p >= end) return 0; - *p++ = c; - *p = '\0'; - return 1; - } - - size_t print(const char *s) { - char *begin = p; - while (p < end && *s) *p++ = *s++; - *p = '\0'; - return size_t(p - begin); - } - - private: - char *end; - char *p; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/StreamPrintAdapter.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/StreamPrintAdapter.hpp deleted file mode 100644 index 60f0af4a3..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/Serialization/StreamPrintAdapter.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "../Configuration.hpp" - -#if ARDUINOJSON_ENABLE_STD_STREAM - -#include - -namespace ArduinoJson { -namespace Internals { - -class StreamPrintAdapter { - public: - explicit StreamPrintAdapter(std::ostream& os) : _os(os) {} - - size_t print(char c) { - _os << c; - return 1; - } - - size_t print(const char* s) { - _os << s; - return strlen(s); - } - - private: - // cannot be assigned - StreamPrintAdapter& operator=(const StreamPrintAdapter&); - - std::ostream& _os; -}; -} -} - -#endif // ARDUINOJSON_ENABLE_STD_STREAM diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/StaticJsonBuffer.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/StaticJsonBuffer.hpp deleted file mode 100644 index 267d9d018..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/StaticJsonBuffer.hpp +++ /dev/null @@ -1,126 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "JsonBufferBase.hpp" - -namespace ArduinoJson { -namespace Internals { - -class StaticJsonBufferBase : public JsonBufferBase { - public: - class String { - public: - String(StaticJsonBufferBase* parent) : _parent(parent) { - _start = parent->_buffer + parent->_size; - } - - void append(char c) { - if (_parent->canAlloc(1)) { - char* last = static_cast(_parent->doAlloc(1)); - *last = c; - } - } - - const char* c_str() const { - if (_parent->canAlloc(1)) { - char* last = static_cast(_parent->doAlloc(1)); - *last = '\0'; - return _start; - } else { - return NULL; - } - } - - private: - StaticJsonBufferBase* _parent; - char* _start; - }; - - StaticJsonBufferBase(char* buffer, size_t capa) - : _buffer(buffer), _capacity(capa), _size(0) {} - - // Gets the capacity of the buffer in bytes - size_t capacity() const { - return _capacity; - } - - // Gets the current usage of the buffer in bytes - size_t size() const { - return _size; - } - - // Allocates the specified amount of bytes in the buffer - virtual void* alloc(size_t bytes) { - alignNextAlloc(); - if (!canAlloc(bytes)) return NULL; - return doAlloc(bytes); - } - - // Resets the buffer. - // USE WITH CAUTION: this invalidates all previously allocated data - void clear() { - _size = 0; - } - - String startString() { - return String(this); - } - - protected: - ~StaticJsonBufferBase() {} - - private: - void alignNextAlloc() { - _size = round_size_up(_size); - } - - bool canAlloc(size_t bytes) const { - return _size + bytes <= _capacity; - } - - void* doAlloc(size_t bytes) { - void* p = &_buffer[_size]; - _size += bytes; - return p; - } - - char* _buffer; - size_t _capacity; - size_t _size; -}; -} - -#if defined(__clang__) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wnon-virtual-dtor" -#elif defined(__GNUC__) -#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) -#pragma GCC diagnostic push -#endif -#pragma GCC diagnostic ignored "-Wnon-virtual-dtor" -#endif - -// Implements a JsonBuffer with fixed memory allocation. -// The template paramenter CAPACITY specifies the capacity of the buffer in -// bytes. -template -class StaticJsonBuffer : public Internals::StaticJsonBufferBase { - public: - explicit StaticJsonBuffer() - : Internals::StaticJsonBufferBase(_buffer, CAPACITY) {} - - private: - char _buffer[CAPACITY]; -}; -} - -#if defined(__clang__) -#pragma clang diagnostic pop -#elif defined(__GNUC__) -#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) -#pragma GCC diagnostic pop -#endif -#endif diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/ArduinoStream.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/ArduinoStream.hpp deleted file mode 100644 index 5db0852b8..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/ArduinoStream.hpp +++ /dev/null @@ -1,61 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#if ARDUINOJSON_ENABLE_ARDUINO_STREAM - -#include - -namespace ArduinoJson { -namespace Internals { - -struct ArduinoStreamTraits { - class Reader { - Stream& _stream; - char _current, _next; - - public: - Reader(Stream& stream) : _stream(stream), _current(0), _next(0) {} - - void move() { - _current = _next; - _next = 0; - } - - char current() { - if (!_current) _current = read(); - return _current; - } - - char next() { - // assumes that current() has been called - if (!_next) _next = read(); - return _next; - } - - private: - char read() { - // don't use _stream.read() as it ignores the timeout - char c = 0; - _stream.readBytes(&c, 1); - return c; - } - }; - - static const bool has_append = false; - static const bool has_equals = false; -}; - -template -struct StringTraits< - TStream, - // match any type that is derived from Stream: - typename EnableIf< - IsBaseOf::type>::value>::type> - : ArduinoStreamTraits {}; -} -} - -#endif diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/CharPointer.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/CharPointer.hpp deleted file mode 100644 index 98896ccfb..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/CharPointer.hpp +++ /dev/null @@ -1,64 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -template -struct CharPointerTraits { - class Reader { - const TChar* _ptr; - - public: - Reader(const TChar* ptr) - : _ptr(ptr ? ptr : reinterpret_cast("")) {} - - void move() { - ++_ptr; - } - - char current() const { - return char(_ptr[0]); - } - - char next() const { - return char(_ptr[1]); - } - }; - - static bool equals(const TChar* str, const char* expected) { - const char* actual = reinterpret_cast(str); - if (!actual || !expected) return actual == expected; - return strcmp(actual, expected) == 0; - } - - static bool is_null(const TChar* str) { - return !str; - } - - typedef const char* duplicate_t; - - template - static duplicate_t duplicate(const TChar* str, Buffer* buffer) { - if (!str) return NULL; - size_t size = strlen(reinterpret_cast(str)) + 1; - void* dup = buffer->alloc(size); - if (dup != NULL) memcpy(dup, str, size); - return static_cast(dup); - } - - static const bool has_append = false; - static const bool has_equals = true; - static const bool should_duplicate = !IsConst::value; -}; - -// char*, unsigned char*, signed char* -// const char*, const unsigned char*, const signed char* -template -struct StringTraits::value>::type> - : CharPointerTraits {}; -} // namespace Internals -} // namespace ArduinoJson diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/FlashString.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/FlashString.hpp deleted file mode 100644 index 0701b9ba2..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/FlashString.hpp +++ /dev/null @@ -1,61 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#if ARDUINOJSON_ENABLE_PROGMEM - -namespace ArduinoJson { -namespace Internals { -template <> -struct StringTraits { - class Reader { - const char* _ptr; - - public: - Reader(const __FlashStringHelper* ptr) - : _ptr(reinterpret_cast(ptr)) {} - - void move() { - _ptr++; - } - - char current() const { - return pgm_read_byte_near(_ptr); - } - - char next() const { - return pgm_read_byte_near(_ptr + 1); - } - }; - - static bool equals(const __FlashStringHelper* str, const char* expected) { - const char* actual = reinterpret_cast(str); - if (!actual || !expected) return actual == expected; - return strcmp_P(expected, actual) == 0; - } - - static bool is_null(const __FlashStringHelper* str) { - return !str; - } - - typedef const char* duplicate_t; - - template - static duplicate_t duplicate(const __FlashStringHelper* str, Buffer* buffer) { - if (!str) return NULL; - size_t size = strlen_P((const char*)str) + 1; - void* dup = buffer->alloc(size); - if (dup != NULL) memcpy_P(dup, (const char*)str, size); - return static_cast(dup); - } - - static const bool has_append = false; - static const bool has_equals = true; - static const bool should_duplicate = true; -}; -} // namespace Internals -} // namespace ArduinoJson - -#endif diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/StdStream.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/StdStream.hpp deleted file mode 100644 index 227c74406..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/StdStream.hpp +++ /dev/null @@ -1,60 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#if ARDUINOJSON_ENABLE_STD_STREAM - -#include - -namespace ArduinoJson { -namespace Internals { - -struct StdStreamTraits { - class Reader { - std::istream& _stream; - char _current, _next; - - public: - Reader(std::istream& stream) : _stream(stream), _current(0), _next(0) {} - - void move() { - _current = _next; - _next = 0; - } - - char current() { - if (!_current) _current = read(); - return _current; - } - - char next() { - // assumes that current() has been called - if (!_next) _next = read(); - return _next; - } - - private: - Reader& operator=(const Reader&); // Visual Studio C4512 - - char read() { - return _stream.eof() ? '\0' : static_cast(_stream.get()); - } - }; - - static const bool has_append = false; - static const bool has_equals = false; -}; - -template -struct StringTraits< - TStream, - // match any type that is derived from std::istream: - typename EnableIf::type>::value>::type> - : StdStreamTraits {}; -} -} - -#endif diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/StdString.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/StdString.hpp deleted file mode 100644 index 35f4461d8..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/StdString.hpp +++ /dev/null @@ -1,77 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#if ARDUINOJSON_ENABLE_STD_STRING || ARDUINOJSON_ENABLE_ARDUINO_STRING - -#if ARDUINOJSON_ENABLE_ARDUINO_STRING -#include -#endif - -#if ARDUINOJSON_ENABLE_STD_STRING -#include -#endif - -namespace ArduinoJson { -namespace Internals { - -template -struct StdStringTraits { - typedef const char* duplicate_t; - - template - static duplicate_t duplicate(const TString& str, Buffer* buffer) { - if (!str.c_str()) return NULL; // <- Arduino string can return NULL - size_t size = str.length() + 1; - void* dup = buffer->alloc(size); - if (dup != NULL) memcpy(dup, str.c_str(), size); - return static_cast(dup); - } - - static bool is_null(const TString& str) { - // Arduino's String::c_str() can return NULL - return !str.c_str(); - } - - struct Reader : CharPointerTraits::Reader { - Reader(const TString& str) : CharPointerTraits::Reader(str.c_str()) {} - }; - - static bool equals(const TString& str, const char* expected) { - // Arduino's String::c_str() can return NULL - const char* actual = str.c_str(); - if (!actual || !expected) return actual == expected; - return 0 == strcmp(actual, expected); - } - - static void append(TString& str, char c) { - str += c; - } - - static void append(TString& str, const char* s) { - str += s; - } - - static const bool has_append = true; - static const bool has_equals = true; - static const bool should_duplicate = true; -}; - -#if ARDUINOJSON_ENABLE_ARDUINO_STRING -template <> -struct StringTraits : StdStringTraits {}; -template <> -struct StringTraits : StdStringTraits { -}; -#endif - -#if ARDUINOJSON_ENABLE_STD_STRING -template <> -struct StringTraits : StdStringTraits {}; -#endif -} // namespace Internals -} // namespace ArduinoJson - -#endif diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/StringTraits.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/StringTraits.hpp deleted file mode 100644 index dd5694b2e..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/StringTraits/StringTraits.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include -#include "../Configuration.hpp" -#include "../TypeTraits/EnableIf.hpp" -#include "../TypeTraits/IsBaseOf.hpp" -#include "../TypeTraits/IsChar.hpp" -#include "../TypeTraits/IsConst.hpp" -#include "../TypeTraits/RemoveReference.hpp" - -namespace ArduinoJson { -namespace Internals { - -template -struct StringTraits { - static const bool has_append = false; - static const bool has_equals = false; -}; - -template -struct StringTraits : StringTraits {}; - -template -struct StringTraits : StringTraits {}; -} -} - -#include "ArduinoStream.hpp" -#include "CharPointer.hpp" -#include "FlashString.hpp" -#include "StdStream.hpp" -#include "StdString.hpp" diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/EnableIf.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/EnableIf.hpp deleted file mode 100644 index 83fc5e07f..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/EnableIf.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -// A meta-function that return the type T if Condition is true. -template -struct EnableIf {}; - -template -struct EnableIf { - typedef T type; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/FloatTraits.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/FloatTraits.hpp deleted file mode 100644 index 648cc82fd..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/FloatTraits.hpp +++ /dev/null @@ -1,171 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include -#include // for size_t -#include "../Configuration.hpp" -#include "../Polyfills/math.hpp" - -namespace ArduinoJson { -namespace Internals { - -template -struct FloatTraits {}; - -template -struct FloatTraits { - typedef int64_t mantissa_type; - static const short mantissa_bits = 52; - static const mantissa_type mantissa_max = - (static_cast(1) << mantissa_bits) - 1; - - typedef int16_t exponent_type; - static const exponent_type exponent_max = 308; - - template - static T make_float(T m, TExponent e) { - if (e > 0) { - for (uint8_t index = 0; e != 0; index++) { - if (e & 1) m *= positiveBinaryPowerOfTen(index); - e >>= 1; - } - } else { - e = TExponent(-e); - for (uint8_t index = 0; e != 0; index++) { - if (e & 1) m *= negativeBinaryPowerOfTen(index); - e >>= 1; - } - } - return m; - } - - static T positiveBinaryPowerOfTen(int index) { - static T factors[] = { - 1e1, - 1e2, - 1e4, - 1e8, - 1e16, - forge(0x4693B8B5, 0xB5056E17), // 1e32 - forge(0x4D384F03, 0xE93FF9F5), // 1e64 - forge(0x5A827748, 0xF9301D32), // 1e128 - forge(0x75154FDD, 0x7F73BF3C) // 1e256 - }; - return factors[index]; - } - - static T negativeBinaryPowerOfTen(int index) { - static T factors[] = { - forge(0x3FB99999, 0x9999999A), // 1e-1 - forge(0x3F847AE1, 0x47AE147B), // 1e-2 - forge(0x3F1A36E2, 0xEB1C432D), // 1e-4 - forge(0x3E45798E, 0xE2308C3A), // 1e-8 - forge(0x3C9CD2B2, 0x97D889BC), // 1e-16 - forge(0x3949F623, 0xD5A8A733), // 1e-32 - forge(0x32A50FFD, 0x44F4A73D), // 1e-64 - forge(0x255BBA08, 0xCF8C979D), // 1e-128 - forge(0x0AC80628, 0x64AC6F43) // 1e-256 - }; - return factors[index]; - } - - static T negativeBinaryPowerOfTenPlusOne(int index) { - static T factors[] = { - 1e0, - forge(0x3FB99999, 0x9999999A), // 1e-1 - forge(0x3F50624D, 0xD2F1A9FC), // 1e-3 - forge(0x3E7AD7F2, 0x9ABCAF48), // 1e-7 - forge(0x3CD203AF, 0x9EE75616), // 1e-15 - forge(0x398039D6, 0x65896880), // 1e-31 - forge(0x32DA53FC, 0x9631D10D), // 1e-63 - forge(0x25915445, 0x81B7DEC2), // 1e-127 - forge(0x0AFE07B2, 0x7DD78B14) // 1e-255 - }; - return factors[index]; - } - - static T nan() { - return forge(0x7ff80000, 0x00000000); - } - - static T inf() { - return forge(0x7ff00000, 0x00000000); - } - - // constructs a double floating point values from its binary representation - // we use this function to workaround platforms with single precision literals - // (for example, when -fsingle-precision-constant is passed to GCC) - static T forge(uint32_t msb, uint32_t lsb) { - union { - uint64_t integerBits; - T floatBits; - }; - integerBits = (uint64_t(msb) << 32) | lsb; - return floatBits; - } -}; - -template -struct FloatTraits { - typedef int32_t mantissa_type; - static const short mantissa_bits = 23; - static const mantissa_type mantissa_max = - (static_cast(1) << mantissa_bits) - 1; - - typedef int8_t exponent_type; - static const exponent_type exponent_max = 38; - - template - static T make_float(T m, TExponent e) { - if (e > 0) { - for (uint8_t index = 0; e != 0; index++) { - if (e & 1) m *= positiveBinaryPowerOfTen(index); - e >>= 1; - } - } else { - e = -e; - for (uint8_t index = 0; e != 0; index++) { - if (e & 1) m *= negativeBinaryPowerOfTen(index); - e >>= 1; - } - } - return m; - } - - static T positiveBinaryPowerOfTen(int index) { - static T factors[] = {1e1f, 1e2f, 1e4f, 1e8f, 1e16f, 1e32f}; - return factors[index]; - } - - static T negativeBinaryPowerOfTen(int index) { - static T factors[] = {1e-1f, 1e-2f, 1e-4f, 1e-8f, 1e-16f, 1e-32f}; - return factors[index]; - } - - static T negativeBinaryPowerOfTenPlusOne(int index) { - static T factors[] = {1e0f, 1e-1f, 1e-3f, 1e-7f, 1e-15f, 1e-31f}; - return factors[index]; - } - - static T forge(uint32_t bits) { - union { - uint32_t integerBits; - T floatBits; - }; - integerBits = bits; - return floatBits; - } - - static T nan() { - return forge(0x7fc00000); - } - - static T inf() { - return forge(0x7f800000); - } -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsArray.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsArray.hpp deleted file mode 100644 index 259923115..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsArray.hpp +++ /dev/null @@ -1,24 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -// A meta-function that return the type T without the const modifier -template -struct IsArray { - static const bool value = false; -}; -template -struct IsArray { - static const bool value = true; -}; -template -struct IsArray { - static const bool value = true; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsBaseOf.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsBaseOf.hpp deleted file mode 100644 index bf24e965e..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsBaseOf.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -// A meta-function that returns true if Derived inherits from TBase is an -// integral type. -template -class IsBaseOf { - protected: // <- to avoid GCC's "all member functions in class are private" - typedef char Yes[1]; - typedef char No[2]; - - static Yes &probe(const TBase *); - static No &probe(...); - - public: - enum { - value = sizeof(probe(reinterpret_cast(0))) == sizeof(Yes) - }; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsChar.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsChar.hpp deleted file mode 100644 index d97cec213..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsChar.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "IsSame.hpp" - -namespace ArduinoJson { -namespace Internals { - -// A meta-function that returns true if T is a charater -template -struct IsChar { - static const bool value = IsSame::value || - IsSame::value || - IsSame::value; -}; - -template -struct IsChar : IsChar {}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsConst.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsConst.hpp deleted file mode 100644 index 512ee5ca0..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsConst.hpp +++ /dev/null @@ -1,21 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -// A meta-function that return the type T without the const modifier -template -struct IsConst { - static const bool value = false; -}; - -template -struct IsConst { - static const bool value = true; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsFloatingPoint.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsFloatingPoint.hpp deleted file mode 100644 index e41a6824c..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsFloatingPoint.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "IsSame.hpp" - -namespace ArduinoJson { -namespace Internals { - -// A meta-function that returns true if T is a floating point type -template -struct IsFloatingPoint { - static const bool value = IsSame::value || IsSame::value; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsIntegral.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsIntegral.hpp deleted file mode 100644 index 17ae5f284..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsIntegral.hpp +++ /dev/null @@ -1,26 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "IsSame.hpp" -#include "IsSignedIntegral.hpp" -#include "IsUnsignedIntegral.hpp" - -namespace ArduinoJson { -namespace Internals { - -// A meta-function that returns true if T is an integral type. -template -struct IsIntegral { - static const bool value = IsSignedIntegral::value || - IsUnsignedIntegral::value || - IsSame::value; - // CAUTION: differs from std::is_integral as it doesn't include bool -}; - -template -struct IsIntegral : IsIntegral {}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsSame.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsSame.hpp deleted file mode 100644 index 06567c93b..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsSame.hpp +++ /dev/null @@ -1,21 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -// A meta-function that returns true if types T and U are the same. -template -struct IsSame { - static const bool value = false; -}; - -template -struct IsSame { - static const bool value = true; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsSignedIntegral.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsSignedIntegral.hpp deleted file mode 100644 index 7334eb9c7..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsSignedIntegral.hpp +++ /dev/null @@ -1,28 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "../Configuration.hpp" -#include "IsSame.hpp" - -namespace ArduinoJson { -namespace Internals { - -// A meta-function that returns true if T is an integral type. -template -struct IsSignedIntegral { - static const bool value = - IsSame::value || IsSame::value || - IsSame::value || IsSame::value || -#if ARDUINOJSON_USE_LONG_LONG - IsSame::value || -#endif -#if ARDUINOJSON_USE_INT64 - IsSame::value || -#endif - false; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsUnsignedIntegral.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsUnsignedIntegral.hpp deleted file mode 100644 index 938423f5c..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsUnsignedIntegral.hpp +++ /dev/null @@ -1,28 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "../Configuration.hpp" -#include "IsSame.hpp" - -namespace ArduinoJson { -namespace Internals { - -// A meta-function that returns true if T is an integral type. -template -struct IsUnsignedIntegral { - static const bool value = - IsSame::value || IsSame::value || - IsSame::value || IsSame::value || -#if ARDUINOJSON_USE_LONG_LONG - IsSame::value || -#endif -#if ARDUINOJSON_USE_INT64 - IsSame::value || -#endif - false; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsVariant.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsVariant.hpp deleted file mode 100644 index f8b299f7a..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/IsVariant.hpp +++ /dev/null @@ -1,17 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#include "IsBaseOf.hpp" - -namespace ArduinoJson { -namespace Internals { - -class JsonVariantTag {}; - -template -struct IsVariant : IsBaseOf {}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/RemoveConst.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/RemoveConst.hpp deleted file mode 100644 index 39d4cb5a5..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/RemoveConst.hpp +++ /dev/null @@ -1,20 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -// A meta-function that return the type T without the const modifier -template -struct RemoveConst { - typedef T type; -}; -template -struct RemoveConst { - typedef T type; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/RemoveReference.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/RemoveReference.hpp deleted file mode 100644 index 395a12889..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/TypeTraits/RemoveReference.hpp +++ /dev/null @@ -1,20 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -namespace ArduinoJson { -namespace Internals { - -// A meta-function that return the type T without the reference modifier. -template -struct RemoveReference { - typedef T type; -}; -template -struct RemoveReference { - typedef T type; -}; -} -} diff --git a/lib/ArduinoJson-5.13.4/src/ArduinoJson/version.hpp b/lib/ArduinoJson-5.13.4/src/ArduinoJson/version.hpp deleted file mode 100644 index 34c78461d..000000000 --- a/lib/ArduinoJson-5.13.4/src/ArduinoJson/version.hpp +++ /dev/null @@ -1,10 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2018 -// MIT License - -#pragma once - -#define ARDUINOJSON_VERSION "5.13.4" -#define ARDUINOJSON_VERSION_MAJOR 5 -#define ARDUINOJSON_VERSION_MINOR 13 -#define ARDUINOJSON_VERSION_REVISION 4 diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index 2ae32bfe6..9ffed1f52 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -52,7 +52,6 @@ #include // Webserver, Updater #include #include -#include // WemoHue, IRremote, Domoticz #ifdef USE_ARDUINO_OTA #include // Arduino OTA #ifndef USE_DISCOVERY From 0ec5ae818a7e4b27f074f96de36c2844abe245ed Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 25 Sep 2020 17:51:03 +0200 Subject: [PATCH 037/119] Support EZSP v6.8 --- tasmota/xdrv_23_zigbee_7_statemachine.ino | 4 +++- tasmota/xdrv_23_zigbee_8_parsers.ino | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tasmota/xdrv_23_zigbee_7_statemachine.ino b/tasmota/xdrv_23_zigbee_7_statemachine.ino index 8bfe785d0..a529edd0e 100644 --- a/tasmota/xdrv_23_zigbee_7_statemachine.ino +++ b/tasmota/xdrv_23_zigbee_7_statemachine.ino @@ -649,7 +649,9 @@ ZBM(ZBS_SET_NETWORKS, EZSP_setConfigurationValue, 0x00 /*high*/, EZSP_CONFIG ZBM(ZBS_SET_PACKET_BUF, EZSP_setConfigurationValue, 0x00 /*high*/, EZSP_CONFIG_PACKET_BUFFER_COUNT, 0xFF, 0x00) // 530001FF00 ZBM(ZBR_SET_OK, EZSP_setConfigurationValue, 0x00 /*high*/, 0x00 /*ok*/) // 530000 -ZBM(ZBR_SET_OK2, 0x00, 0x00 /*high*/, 0x00 /*ok*/) // 000000 - TODO why does setting EZSP_CONFIG_PACKET_BUFFER_COUNT has a different response? +// There is a bug in v6.7 where the response if 000000 instead of 530000 +// If we detect the version to be v6.7, the first byte is changed to 00 +ZBR(ZBR_SET_OK2, EZSP_setConfigurationValue, 0x00 /*high*/, 0x00 /*ok*/) // Read some configuration values // ZBM(ZBS_GET_APS_UNI, EZSP_getConfigurationValue, 0x00 /*high*/, EZSP_CONFIG_APS_UNICAST_MESSAGE_COUNT) // 520003 diff --git a/tasmota/xdrv_23_zigbee_8_parsers.ino b/tasmota/xdrv_23_zigbee_8_parsers.ino index 9952ac564..b37d9bc86 100644 --- a/tasmota/xdrv_23_zigbee_8_parsers.ino +++ b/tasmota/xdrv_23_zigbee_8_parsers.ino @@ -396,6 +396,10 @@ int32_t EZ_ReceiveCheckVersion(int32_t res, class SBuffer &buf) { MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_ZIGBEE_STATE)); if (0x08 == protocol_version) { + if ((stack_version & 0xFF00) == 0x6700) { + // If v6.7 there is a bug so we need to change the response + ZBW(ZBR_SET_OK2, 0x00, 0x00 /*high*/, 0x00 /*ok*/) + } return 0; // protocol v8 is ok } else { return ZIGBEE_LABEL_UNSUPPORTED_VERSION; // abort From 9cbd2d531d646a14da110062c34ee21022f49ede Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 25 Sep 2020 18:15:31 +0200 Subject: [PATCH 038/119] Initial GPIO redesign --- tasmota/settings.h | 18 +- tasmota/settings.ino | 16 +- tasmota/support.ino | 142 +- tasmota/support_button.ino | 4 + tasmota/support_command.ino | 30 +- tasmota/support_tasmota.ino | 32 +- tasmota/tasmota.h | 8 +- tasmota/tasmota.ino | 18 +- tasmota/tasmota_globals.h | 16 +- tasmota/tasmota_template.h | 2753 ++++++++++++++++-------------- tasmota/tasmota_template_ESP32.h | 729 -------- tasmota/xdrv_01_webserver.ino | 207 +-- tasmota/xsns_02_analog.ino | 460 ----- tasmota/xsns_02_analog_esp32.ino | 32 +- 14 files changed, 1800 insertions(+), 2665 deletions(-) delete mode 100644 tasmota/tasmota_template_ESP32.h delete mode 100644 tasmota/xsns_02_analog.ino diff --git a/tasmota/settings.h b/tasmota/settings.h index ba436a495..6df543660 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -424,12 +424,18 @@ struct { SysBitfield3 flag3; // 3A0 uint8_t switchmode[MAX_SWITCHES]; // 3A4 (6.0.0b - moved from 0x4CA) +//#ifdef ESP8266 +// char ex_friendlyname[4][33]; // 3AC +// char ex_switch_topic[33]; // 430 +//#else // ESP32 + myio my_gp; // 3AC - 2 x 18 bytes (ESP8266) / 2 x 40 bytes (ESP32) #ifdef ESP8266 - char ex_friendlyname[4][33]; // 3AC - char ex_switch_topic[33]; // 430 + uint8_t free_esp8266_3D0[44]; // 3D0 +#endif + mytmplt user_template; // 3FC - 2 x 15 bytes (ESP8266) / 2 x 37 bytes (ESP32) +#ifdef ESP8266 + uint8_t free_esp8266_41A[55]; // 41A #else // ESP32 - myio my_gp; // 3AC - 2 x 40 bytes (ESP32) - mytmplt user_template; // 3FC - 2 x 37 bytes (ESP32) uint8_t eth_type; // 446 uint8_t eth_clk_mode; // 447 @@ -449,7 +455,7 @@ struct { uint8_t ws_width[3]; // 481 #ifdef ESP8266 - myio my_gp; // 484 - 17 bytes (ESP8266) + myio8 my_gp8; // 484 - 17 bytes (ESP8266) #else // ESP32 uint8_t free_esp32_484[17]; // 484 #endif // ESP8266 - ESP32 @@ -508,7 +514,7 @@ struct { char user_template_name[15]; // 720 15 bytes - Backward compatibility since v8.2.0.3 #ifdef ESP8266 - mytmplt user_template; // 72F 14 bytes (ESP8266) + mytmplt8285 user_template8; // 72F 14 bytes (ESP8266) #else // ESP32 uint8_t free_esp32_72f[14]; // 72F #endif // ESP8266 - ESP32 diff --git a/tasmota/settings.ino b/tasmota/settings.ino index a26c89b3d..c1f3cb4de 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -1193,8 +1193,8 @@ void SettingsDelta(void) } } for (uint32_t i = 0; i < ARRAY_SIZE(Settings.my_gp.io); i++) { - if (Settings.my_gp.io[i] >= GPIO_SWT5) { // Move up from GPIO_SWT5 to GPIO_KEY1 - Settings.my_gp.io[i] += 4; + if (Settings.my_gp8.io[i] >= GPI8_SWT5) { // Move up from GPIO_SWT5 to GPIO_KEY1 + Settings.my_gp8.io[i] += 4; } } } @@ -1259,7 +1259,7 @@ void SettingsDelta(void) Settings.ledmask = APP_LEDMASK; } if (Settings.version < 0x0605000A) { - Settings.my_adc0 = ADC0_NONE; +// Settings.my_adc0 = ADC0_NONE; } if (Settings.version < 0x0605000D) { Settings.param[P_IR_UNKNOW_THRESHOLD] = IR_RCV_MIN_UNKNOWN_SIZE; @@ -1450,7 +1450,7 @@ void SettingsDelta(void) SettingsUpdateText(SET_WEBPWD, Settings.ex_web_password); SettingsUpdateText(SET_CORS, Settings.ex_cors_domain); SettingsUpdateText(SET_MQTT_FULLTOPIC, Settings.ex_mqtt_fulltopic); - SettingsUpdateText(SET_MQTT_SWITCH_TOPIC, Settings.ex_switch_topic); +// SettingsUpdateText(SET_MQTT_SWITCH_TOPIC, Settings.ex_switch_topic); SettingsUpdateText(SET_STATE_TXT1, Settings.ex_state_text[0]); SettingsUpdateText(SET_STATE_TXT2, Settings.ex_state_text[1]); SettingsUpdateText(SET_STATE_TXT3, Settings.ex_state_text[2]); @@ -1463,10 +1463,10 @@ void SettingsDelta(void) SettingsUpdateText(SET_MEM3, Settings.script_pram[2]); SettingsUpdateText(SET_MEM4, Settings.script_pram[3]); SettingsUpdateText(SET_MEM5, Settings.script_pram[4]); - SettingsUpdateText(SET_FRIENDLYNAME1, Settings.ex_friendlyname[0]); - SettingsUpdateText(SET_FRIENDLYNAME2, Settings.ex_friendlyname[1]); - SettingsUpdateText(SET_FRIENDLYNAME3, Settings.ex_friendlyname[2]); - SettingsUpdateText(SET_FRIENDLYNAME4, Settings.ex_friendlyname[3]); +// SettingsUpdateText(SET_FRIENDLYNAME1, Settings.ex_friendlyname[0]); +// SettingsUpdateText(SET_FRIENDLYNAME2, Settings.ex_friendlyname[1]); +// SettingsUpdateText(SET_FRIENDLYNAME3, Settings.ex_friendlyname[2]); +// SettingsUpdateText(SET_FRIENDLYNAME4, Settings.ex_friendlyname[3]); } if (Settings.version < 0x08020003) { SettingsUpdateText(SET_TEMPLATE_NAME, Settings.user_template_name); diff --git a/tasmota/support.ino b/tasmota/support.ino index eddffeab6..399912f78 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -1119,13 +1119,37 @@ int ResponseJsonEndEnd(void) * GPIO Module and Template management \*********************************************************************************************/ +uint16_t GpioConvert(uint8_t gpio) { + if (gpio > ARRAY_SIZE(kGpioConvert)) { + return AGPIO(GPIO_USER); + } + return pgm_read_word(kGpioConvert + gpio); +} + +uint16_t Adc0Convert(uint8_t adc0) { + if (adc0 > 7) { + return AGPIO(GPIO_USER); + } + else if (0 == adc0) { + return GPIO_NONE; + } + return AGPIO(GPIO_ADC_INPUT + adc0 -1); +} + +void TemplateConvert(uint8_t template8[], uint16_t template16[]) { + for (uint32_t i = 0; i < (sizeof(mytmplt) / 2) -2; i++) { + template16[i] = GpioConvert(template8[i]); + } + template16[(sizeof(mytmplt) / 2) -2] = Adc0Convert(template8[sizeof(mytmplt8285) -1]); +} + uint32_t ICACHE_RAM_ATTR Pin(uint32_t gpio, uint32_t index = 0); uint32_t ICACHE_RAM_ATTR Pin(uint32_t gpio, uint32_t index) { -#ifdef ESP8266 - uint16_t real_gpio = gpio + index; -#else // ESP32 +//#ifdef ESP8266 +// uint16_t real_gpio = gpio + index; +//#else // ESP32 uint16_t real_gpio = (gpio << 5) + index; -#endif // ESP8266 - ESP32 +//#endif // ESP8266 - ESP32 for (uint32_t i = 0; i < ARRAY_SIZE(gpio_pin); i++) { if (gpio_pin[i] == real_gpio) { return i; // Pin number configured for gpio @@ -1212,30 +1236,35 @@ void GetInternalTemplate(void* ptr, uint32_t module, uint32_t option) { // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: Template %d, Option %d"), module_template, option); - uint8_t internal_template[sizeof(mytmplt)] = { GPIO_NONE }; + // template8 = GPIO 0,1,2,3,4,5,9,10,12,13,14,15,16,Adc + uint8_t template8[sizeof(mytmplt8285)] = { GPIO_NONE }; if (module_template < TMP_WEMOS) { - memcpy_P(&internal_template, &kModules8266[module_template], 6); - memcpy_P(&internal_template[8], &kModules8266[module_template].gp.io[6], 6); + memcpy_P(&template8, &kModules8266[module_template], 6); + memcpy_P(&template8[8], &kModules8266[module_template].gp.io[6], 6); } else { - memcpy_P(&internal_template, &kModules8285[module_template - TMP_WEMOS], sizeof(mytmplt)); + memcpy_P(&template8, &kModules8285[module_template - TMP_WEMOS], sizeof(template8)); } -// AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)&internal_template, sizeof(mytmplt)); +// AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)&template8, sizeof(mytmplt)); + + // template16 = GPIO 0,1,2,3,4,5,9,10,12,13,14,15,16,Adc,Flg + uint16_t template16[(sizeof(mytmplt) / 2)] = { GPIO_NONE }; + TemplateConvert(template8, template16); uint32_t index = 0; - uint32_t size = sizeof(mycfgio); // kmodules[module_template].gp + uint32_t size = sizeof(mycfgio); // template16[module_template].gp switch (option) { case 2: { - index = sizeof(internal_template) -1; // kModules[module_template].flag - size = 1; + index = sizeof(template16) -2; // template16[module_template].flag + size = 2; break; } case 3: { - size = sizeof(internal_template); // kmodules[module_template] + size = sizeof(template16); // template16[module_template] break; } } - memcpy(ptr, &internal_template[index], size); + memcpy(ptr, &template16[index], size); // AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)ptr, size); } @@ -1243,13 +1272,13 @@ void GetInternalTemplate(void* ptr, uint32_t module, uint32_t option) { void ModuleGpios(myio *gp) { -#ifdef ESP8266 - uint8_t *dest = (uint8_t *)gp; - uint8_t src[ARRAY_SIZE(Settings.user_template.gp.io)]; -#else // ESP32 +//#ifdef ESP8266 +// uint8_t *dest = (uint8_t *)gp; +// uint8_t src[ARRAY_SIZE(Settings.user_template.gp.io)]; +//#else // ESP32 uint16_t *dest = (uint16_t *)gp; uint16_t src[ARRAY_SIZE(Settings.user_template.gp.io)]; -#endif // ESP8266 - ESP32 +//#endif // ESP8266 - ESP32 memset(dest, GPIO_NONE, sizeof(myio)); if (USER_MODULE == Settings.module) { @@ -1338,20 +1367,19 @@ bool ValidGPIO(uint32_t pin, uint32_t gpio) return (GPIO_USER == ValidPin(pin, BGPIO(gpio))); // Only allow GPIO_USER pins } -#ifdef ESP8266 -bool ValidAdc(void) -{ - gpio_flag flag = ModuleFlag(); - uint32_t template_adc0 = flag.data &15; - return (ADC0_USER == template_adc0); -} -#endif // ESP8266 +//#ifdef ESP8266 +//bool ValidAdc(void) { +// gpio_flag flag = ModuleFlag(); +// uint32_t template_adc0 = flag.data &15; +// return (ADC0_USER == template_adc0); +//} +//#endif // ESP8266 -#ifdef ESP8266 -bool GetUsedInModule(uint32_t val, uint8_t *arr) -#else // ESP32 +//#ifdef ESP8266 +//bool GetUsedInModule(uint32_t val, uint8_t *arr) +//#else // ESP32 bool GetUsedInModule(uint32_t val, uint16_t *arr) -#endif // ESP8266 - ESP32 +//#endif // ESP8266 - ESP32 { int offset = 0; @@ -1414,7 +1442,8 @@ bool GetUsedInModule(uint32_t val, uint16_t *arr) bool JsonTemplate(const char* dataBuf) { - // {"NAME":"Generic","GPIO":[17,254,29,254,7,254,254,254,138,254,139,254,254],"FLAG":1,"BASE":255} + // Old: {"NAME":"Generic","GPIO":[17,254,29,254,7,254,254,254,138,254,139,254,254],"FLAG":1,"BASE":255} + // New: {"NAME":"Generic16","GPIO":[17,254,29,254,7,254,254,254,138,254,139,254,254,254],"FLAG":1,"BASE":255} if (strlen(dataBuf) < 9) { return false; } // Workaround exception if empty JSON like {} - Needs checks @@ -1432,22 +1461,41 @@ bool JsonTemplate(const char* dataBuf) SettingsUpdateText(SET_TEMPLATE_NAME, name); } if (obj[D_JSON_GPIO].success()) { - for (uint32_t i = 0; i < ARRAY_SIZE(Settings.user_template.gp.io); i++) { #ifdef ESP8266 - Settings.user_template.gp.io[i] = obj[D_JSON_GPIO][i] | 0; -#else // ESP32 - uint16_t gpio = obj[D_JSON_GPIO][i] | 0; - if (gpio == (AGPIO(GPIO_NONE) +1)) { - gpio = AGPIO(GPIO_USER); + if (!obj[D_JSON_GPIO][13].success()) { // Old template + uint8_t template8[sizeof(mytmplt8285)] = { GPIO_NONE }; + for (uint32_t i = 0; i < ARRAY_SIZE(template8) -1; i++) { + template8[i] = obj[D_JSON_GPIO][i] | 0; } - Settings.user_template.gp.io[i] = gpio; + if (obj[D_JSON_FLAG].success()) { + template8[ARRAY_SIZE(template8) -1] = (obj[D_JSON_FLAG] | 0) & 0x0F; + } + TemplateConvert(template8, Settings.user_template.gp.io); + Settings.user_template.flag.data = 0; + } else { #endif + for (uint32_t i = 0; i < ARRAY_SIZE(Settings.user_template.gp.io); i++) { +// #ifdef ESP8266 +// Settings.user_template.gp.io[i] = obj[D_JSON_GPIO][i] | 0; +// #else // ESP32 + uint16_t gpio = obj[D_JSON_GPIO][i] | 0; + if (gpio == (AGPIO(GPIO_NONE) +1)) { + gpio = AGPIO(GPIO_USER); + } + Settings.user_template.gp.io[i] = gpio; +// #endif + } + if (obj[D_JSON_FLAG].success()) { + Settings.user_template.flag.data = obj[D_JSON_FLAG] | 0; + } +#ifdef ESP8266 } +#endif } - if (obj[D_JSON_FLAG].success()) { - uint32_t flag = obj[D_JSON_FLAG] | 0; - memcpy(&Settings.user_template.flag, &flag, sizeof(gpio_flag)); - } +// if (obj[D_JSON_FLAG].success()) { +// uint32_t flag = obj[D_JSON_FLAG] | 0; +// memcpy(&Settings.user_template.flag, &flag, sizeof(gpio_flag)); +// } if (obj[D_JSON_BASE].success()) { uint32_t base = obj[D_JSON_BASE]; if ((0 == base) || !ValidTemplateModule(base -1)) { base = 18; } @@ -1460,15 +1508,15 @@ void TemplateJson(void) { Response_P(PSTR("{\"" D_JSON_NAME "\":\"%s\",\"" D_JSON_GPIO "\":["), SettingsText(SET_TEMPLATE_NAME)); for (uint32_t i = 0; i < ARRAY_SIZE(Settings.user_template.gp.io); i++) { -#ifdef ESP8266 - ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Settings.user_template.gp.io[i]); -#else // ESP32 +//#ifdef ESP8266 +// ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Settings.user_template.gp.io[i]); +//#else // ESP32 uint16_t gpio = Settings.user_template.gp.io[i]; if (gpio == AGPIO(GPIO_USER)) { gpio = AGPIO(GPIO_NONE) +1; } ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", gpio); -#endif +//#endif } ResponseAppend_P(PSTR("],\"" D_JSON_FLAG "\":%d,\"" D_JSON_BASE "\":%d}"), Settings.user_template.flag, Settings.user_template_base +1); } diff --git a/tasmota/support_button.ino b/tasmota/support_button.ino index be8a4dabb..c2979fccf 100644 --- a/tasmota/support_button.ino +++ b/tasmota/support_button.ino @@ -90,6 +90,7 @@ void ButtonInit(void) Button.present++; pinMode(Pin(GPIO_KEY1, i), bitRead(Button.no_pullup_mask, i) ? INPUT : ((16 == Pin(GPIO_KEY1, i)) ? INPUT_PULLDOWN_16 : INPUT_PULLUP)); } +/* #ifdef ESP8266 #ifndef USE_ADC_VCC else if ((99 == Button.adc) && ((ADC0_BUTTON == my_adc0) || (ADC0_BUTTON_INV == my_adc0))) { @@ -98,6 +99,7 @@ void ButtonInit(void) } #endif // USE_ADC_VCC #endif // ESP8266 +*/ } } @@ -167,12 +169,14 @@ void ButtonHandler(void) #ifndef USE_ADC_VCC if (Button.adc == button_index) { button_present = 1; +/* if (ADC0_BUTTON_INV == my_adc0) { button = (AdcRead(1) < 128); } else if (ADC0_BUTTON == my_adc0) { button = (AdcRead(1) > 128); } +*/ } #endif // USE_ADC_VCC #else // ESP32 diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index db83627e3..3558808c7 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -1119,19 +1119,19 @@ void CmndGpio(void) if (ValidGPIO(XdrvMailbox.index, cmodule.io[XdrvMailbox.index]) && (XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < AGPIO(GPIO_SENSOR_END))) { bool present = false; for (uint32_t i = 0; i < ARRAY_SIZE(kGpioNiceList); i++) { -#ifdef ESP8266 - uint32_t midx = pgm_read_byte(kGpioNiceList + i); - if (midx == XdrvMailbox.payload) { - present = true; - break; - } -#else // ESP32 +//#ifdef ESP8266 +// uint32_t midx = pgm_read_byte(kGpioNiceList + i); +// if (midx == XdrvMailbox.payload) { +// present = true; +// break; +// } +//#else // ESP32 uint32_t midx = pgm_read_word(kGpioNiceList + i); if ((XdrvMailbox.payload >= (midx & 0xFFE0)) && (XdrvMailbox.payload < midx)) { present = true; break; } -#endif // ESP8266 - ESP32 +//#endif // ESP8266 - ESP32 } if (present) { for (uint32_t i = 0; i < ARRAY_SIZE(Settings.my_gp.io); i++) { @@ -1158,7 +1158,7 @@ void CmndGpio(void) } char sindex[4] = { 0 }; uint32_t sensor_name_idx = BGPIO(sensor_type); -#ifdef ESP32 +//#ifdef ESP32 uint32_t nice_list_search = sensor_type & 0xFFE0; for (uint32_t j = 0; j < ARRAY_SIZE(kGpioNiceList); j++) { uint32_t nls_idx = pgm_read_word(kGpioNiceList + j); @@ -1167,7 +1167,7 @@ void CmndGpio(void) break; } } -#endif // ESP32 +//#endif // ESP32 const char *sensor_names = kSensorNames; if (sensor_name_idx > GPIO_FIX_START) { sensor_name_idx = sensor_name_idx - GPIO_FIX_START -1; @@ -1193,13 +1193,13 @@ void CmndGpios(void) uint32_t lines = 1; bool jsflg = false; for (uint32_t i = 0; i < ARRAY_SIZE(kGpioNiceList); i++) { -#ifdef ESP8266 - uint32_t midx = pgm_read_byte(kGpioNiceList + i); - uint32_t ridx = midx; -#else // ESP32 +//#ifdef ESP8266 +// uint32_t midx = pgm_read_byte(kGpioNiceList + i); +// uint32_t ridx = midx; +//#else // ESP32 uint32_t ridx = pgm_read_word(kGpioNiceList + i) & 0xFFE0; uint32_t midx = BGPIO(ridx); -#endif // ESP8266 - ESP32 +//#endif // ESP8266 - ESP32 if ((XdrvMailbox.payload != 255) && GetUsedInModule(midx, cmodule.io)) { continue; } if (!jsflg) { Response_P(PSTR("{\"" D_CMND_GPIOS "%d\":{"), lines); diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index 6aeec7665..e241a9bb2 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -1476,6 +1476,12 @@ void GpioInit(void) // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: Used GPIOs %d"), GPIO_SENSOR_END); + if (Settings.user_template8.flag != 255) { + // Convert 8-bit user template + TemplateConvert((uint8_t*)&Settings.user_template8, (uint16_t*)&Settings.user_template); + Settings.user_template8.flag = 255; + } + for (uint32_t i = 0; i < ARRAY_SIZE(Settings.user_template.gp.io); i++) { if ((Settings.user_template.gp.io[i] >= AGPIO(GPIO_SENSOR_END)) && (Settings.user_template.gp.io[i] < AGPIO(GPIO_USER))) { Settings.user_template.gp.io[i] = AGPIO(GPIO_USER); // Fix not supported sensor ids in template @@ -1495,19 +1501,19 @@ void GpioInit(void) my_module.io[i] = def_gp.io[i]; // Force Template override } } -#ifdef ESP8266 - if ((Settings.my_adc0 >= ADC0_END) && (Settings.my_adc0 < ADC0_USER)) { - Settings.my_adc0 = ADC0_NONE; // Fix not supported sensor ids in module - } - else if (Settings.my_adc0 > ADC0_NONE) { - my_adc0 = Settings.my_adc0; // Set User selected Module sensors - } - my_module_flag = ModuleFlag(); - uint32_t template_adc0 = my_module_flag.data &15; - if ((template_adc0 > ADC0_NONE) && (template_adc0 < ADC0_USER)) { - my_adc0 = template_adc0; // Force Template override - } -#endif +//#ifdef ESP8266 +// if ((Settings.my_adc0 >= ADC0_END) && (Settings.my_adc0 < ADC0_USER)) { +// Settings.my_adc0 = ADC0_NONE; // Fix not supported sensor ids in module +// } +// else if (Settings.my_adc0 > ADC0_NONE) { +// my_adc0 = Settings.my_adc0; // Set User selected Module sensors +// } +// my_module_flag = ModuleFlag(); +// uint32_t template_adc0 = my_module_flag.data &15; +// if ((template_adc0 > ADC0_NONE) && (template_adc0 < ADC0_USER)) { +// my_adc0 = template_adc0; // Force Template override +// } +//#endif for (uint32_t i = 0; i < ARRAY_SIZE(my_module.io); i++) { uint32_t mpin = ValidPin(i, my_module.io[i]); diff --git a/tasmota/tasmota.h b/tasmota/tasmota.h index 96cd9e49c..622c8211b 100644 --- a/tasmota/tasmota.h +++ b/tasmota/tasmota.h @@ -82,7 +82,11 @@ const uint8_t MAX_FRIENDLYNAMES = 8; // Max number of Friendly names const uint8_t MAX_BUTTON_TEXT = 16; // Max number of GUI button labels const uint8_t MAX_GROUP_TOPICS = 4; // Max number of Group Topics const uint8_t MAX_DEV_GROUP_NAMES = 4; // Max number of Device Group names +#ifdef ESP8266 +const uint8_t MAX_ADCS = 1; // Max number of ADC pins +#else const uint8_t MAX_ADCS = 8; // Max number of ESP32 ADC pins (ADC2 pins are unusable with Wifi enabled) +#endif const uint8_t MAX_HUE_DEVICES = 15; // Max number of Philips Hue device per emulation const uint8_t MAX_ROTARIES = 2; // Max number of Rotary Encoders @@ -297,7 +301,9 @@ enum SettingsTextIndex { SET_OTAURL, SET_DEV_GROUP_NAME1, SET_DEV_GROUP_NAME2, SET_DEV_GROUP_NAME3, SET_DEV_GROUP_NAME4, // MAX_DEV_GROUP_NAMES SET_DEVICENAME, SET_TELEGRAM_TOKEN, SET_TELEGRAM_CHATID, -#ifdef ESP32 +#ifdef ESP8266 + SET_ADC_PARAM1, +#else // ESP32 SET_ADC_PARAM1, SET_ADC_PARAM2, SET_ADC_PARAM3, SET_ADC_PARAM4, SET_ADC_PARAM5, SET_ADC_PARAM6, SET_ADC_PARAM7, SET_ADC_PARAM8, // MAX_ADCS #endif SET_MAX }; diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index b8d3293da..8da42b961 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -116,9 +116,9 @@ uint16_t blink_counter = 0; // Number of blink cycles uint16_t seriallog_timer = 0; // Timer to disable Seriallog uint16_t syslog_timer = 0; // Timer to re-enable syslog_level -#ifdef ESP32 +//#ifdef ESP32 uint16_t gpio_pin[MAX_GPIO_PIN] = { 0 }; // GPIO functions indexed by pin number -#endif // ESP32 +//#endif // ESP32 int16_t save_data_counter; // Counter and flag for config save to Flash RulesBitfield rules_flag; // Rule state flags (16 bits) @@ -129,9 +129,9 @@ uint8_t latching_relay_pulse = 0; // Latching relay pulse timer uint8_t ssleep; // Current copy of Settings.sleep uint8_t blinkspeed = 1; // LED blink rate -#ifdef ESP8266 -uint8_t gpio_pin[MAX_GPIO_PIN] = { 0 }; // GPIO functions indexed by pin number -#endif // ESP8266 - ESP32 +//#ifdef ESP8266 +//uint8_t gpio_pin[MAX_GPIO_PIN] = { 0 }; // GPIO functions indexed by pin number +//#endif // ESP8266 - ESP32 uint8_t active_device = 1; // Active device in ExecuteCommandPower uint8_t leds_present = 0; // Max number of LED supported @@ -171,7 +171,7 @@ bool is_8285 = false; // Hardware device ESP8266EX (0) or bool skip_light_fade; // Temporarily skip light fading bool restart_halt = false; // Do not restart but stay in wait loop myio my_module; // Active copy of Module GPIOs (17 x 8 bits) -gpio_flag my_module_flag; // Active copy of Template GPIO flags +//gpio_flag my_module_flag; // Active copy of Template GPIO flags StateBitfield global_state; // Global states (currently Wifi and Mqtt) (8 bits) char my_version[33]; // Composed version string char my_image[33]; // Code image and/or commit @@ -276,9 +276,9 @@ void setup(void) { for (uint32_t i = 0; i < ARRAY_SIZE(Settings.my_gp.io); i++) { Settings.my_gp.io[i] = GPIO_NONE; // Reset user defined GPIO disabling sensors } -#ifdef ESP8266 - Settings.my_adc0 = ADC0_NONE; // Reset user defined ADC0 disabling sensors -#endif +//#ifdef ESP8266 +// Settings.my_adc0 = ADC0_NONE; // Reset user defined ADC0 disabling sensors +//#endif } if (RtcReboot.fast_reboot_count > Settings.param[P_BOOT_LOOP_OFFSET] +4) { // Restarted 6 times Settings.module = Settings.fallback_module; // Reset module to fallback module diff --git a/tasmota/tasmota_globals.h b/tasmota/tasmota_globals.h index edf933c12..a711e35a1 100644 --- a/tasmota/tasmota_globals.h +++ b/tasmota/tasmota_globals.h @@ -327,6 +327,12 @@ const char kWebColors[] PROGMEM = #define ARDUINO_CORE_RELEASE ARDUINO_ESP8266_RELEASE #endif // ARDUINO_ESP8266_RELEASE +#ifndef USE_ADC_VCC +#define USE_ADC +#else +#undef USE_ADC +#endif + #endif // ESP8266 #ifdef ESP32 @@ -372,13 +378,13 @@ const char kWebColors[] PROGMEM = #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) #endif -#ifdef ESP8266 -#define AGPIO(x) (x) -#define BGPIO(x) (x) -#else // ESP32 +//#ifdef ESP8266 +//#define AGPIO(x) (x) +//#define BGPIO(x) (x) +//#else // ESP32 #define AGPIO(x) (x<<5) #define BGPIO(x) (x>>5) -#endif // ESP8266 - ESP32 +//#endif // ESP8266 - ESP32 #ifdef USE_DEVICE_GROUPS #define SendDeviceGroupMessage(DEVICE_INDEX, REQUEST_TYPE, ...) _SendDeviceGroupMessage(DEVICE_INDEX, REQUEST_TYPE, __VA_ARGS__, 0) diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 944165eef..da59989cc 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -20,242 +20,949 @@ #ifndef _TASMOTA_TEMPLATE_H_ #define _TASMOTA_TEMPLATE_H_ -#ifdef ESP8266 +#ifdef ESP32 + +// Hardware has no ESP32 +#undef USE_TUYA_DIMMER +#undef USE_PWM_DIMMER +#undef USE_EXS_DIMMER +#undef USE_ARMTRONIX_DIMMERS +#undef USE_SONOFF_RF +#undef USE_SONOFF_SC +#undef USE_SONOFF_IFAN +#undef USE_SONOFF_L1 +#undef USE_SONOFF_D1 +#undef USE_RF_FLASH + +// Not ported (yet) +#undef USE_DISCOVERY +#undef USE_MY92X1 +#undef USE_TUYA_MCU +#undef USE_PS_16_DZ + +#endif // ESP32 // User selectable GPIO functionality // ATTENTION: Only add at the end of this list just before GPIO_SENSOR_END // Then add the same name(s) in a nice location in array kGpioNiceList enum UserSelectablePins { - GPIO_NONE, // Not used - GPIO_DHT11, // DHT11 - GPIO_DHT22, // DHT21, DHT22, AM2301, AM2302, AM2321 - GPIO_SI7021, // iTead SI7021 - GPIO_DSB, // Single wire DS18B20 or DS18S20 - GPIO_I2C_SCL, // I2C SCL - GPIO_I2C_SDA, // I2C SDA - GPIO_WS2812, // WS2812 Led string - GPIO_IRSEND, // IR remote - GPIO_SWT1, // User connected external switches - GPIO_SWT2, - GPIO_SWT3, - GPIO_SWT4, - GPIO_SWT5, - GPIO_SWT6, - GPIO_SWT7, - GPIO_SWT8, - GPIO_KEY1, // Button usually connected to GPIO0 - GPIO_KEY2, - GPIO_KEY3, - GPIO_KEY4, - GPIO_REL1, // Relays - GPIO_REL2, - GPIO_REL3, - GPIO_REL4, - GPIO_REL5, - GPIO_REL6, - GPIO_REL7, - GPIO_REL8, - GPIO_REL1_INV, - GPIO_REL2_INV, - GPIO_REL3_INV, - GPIO_REL4_INV, - GPIO_REL5_INV, - GPIO_REL6_INV, - GPIO_REL7_INV, - GPIO_REL8_INV, - GPIO_PWM1, // RGB Red or C Cold White - GPIO_PWM2, // RGB Green or CW Warm White - GPIO_PWM3, // RGB Blue - GPIO_PWM4, // RGBW (Cold) White - GPIO_PWM5, // RGBCW Warm White - GPIO_CNTR1, - GPIO_CNTR2, - GPIO_CNTR3, - GPIO_CNTR4, - GPIO_PWM1_INV, // RGB Red or C Cold White - GPIO_PWM2_INV, // RGB Green or CW Warm White - GPIO_PWM3_INV, // RGB Blue - GPIO_PWM4_INV, // RGBW (Cold) White - GPIO_PWM5_INV, // RGBCW Warm White - GPIO_IRRECV, // IR receiver - GPIO_LED1, // Leds - GPIO_LED2, - GPIO_LED3, - GPIO_LED4, - GPIO_LED1_INV, - GPIO_LED2_INV, - GPIO_LED3_INV, - GPIO_LED4_INV, - GPIO_MHZ_TXD, // MH-Z19 Serial interface - GPIO_MHZ_RXD, // MH-Z19 Serial interface - GPIO_PZEM0XX_TX, // PZEM0XX Serial interface - GPIO_PZEM004_RX, // PZEM004T Serial interface - GPIO_SAIR_TX, // SenseAir Serial interface - GPIO_SAIR_RX, // SenseAir Serial interface - GPIO_SPI_CS, // SPI Chip Select - GPIO_SPI_DC, // SPI Data Direction - GPIO_BACKLIGHT, // Display backlight control - GPIO_PMS5003_RX, // Plantower PMS5003 Serial interface - GPIO_SDS0X1_RX, // Nova Fitness SDS011 Serial interface - GPIO_SBR_TX, // Serial Bridge Serial interface - GPIO_SBR_RX, // Serial Bridge Serial interface - GPIO_SR04_TRIG, // SR04 Trigger/TX pin - GPIO_SR04_ECHO, // SR04 Echo/RX pin - GPIO_SDM120_TX, // SDM120 Serial interface - GPIO_SDM120_RX, // SDM120 Serial interface - GPIO_SDM630_TX, // SDM630 Serial interface - GPIO_SDM630_RX, // SDM630 Serial interface - GPIO_TM16CLK, // TM1638 Clock - GPIO_TM16DIO, // TM1638 Data I/O - GPIO_TM16STB, // TM1638 Strobe - GPIO_SWT1_NP, // User connected external switches - GPIO_SWT2_NP, - GPIO_SWT3_NP, - GPIO_SWT4_NP, - GPIO_SWT5_NP, - GPIO_SWT6_NP, - GPIO_SWT7_NP, - GPIO_SWT8_NP, - GPIO_KEY1_NP, // Button usually connected to GPIO0 - GPIO_KEY2_NP, - GPIO_KEY3_NP, - GPIO_KEY4_NP, - GPIO_CNTR1_NP, - GPIO_CNTR2_NP, - GPIO_CNTR3_NP, - GPIO_CNTR4_NP, - GPIO_PZEM016_RX, // PZEM-014,016 Serial Modbus interface - GPIO_PZEM017_RX, // PZEM-003,017 Serial Modbus interface - GPIO_MP3_DFR562, // RB-DFR-562, DFPlayer Mini MP3 Player - GPIO_SDS0X1_TX, // Nova Fitness SDS011 Serial interface - GPIO_HX711_SCK, // HX711 Load Cell clock - GPIO_HX711_DAT, // HX711 Load Cell data - GPIO_TX2X_TXD_BLACK, // TX20/TX23 Transmission Pin - GPIO_RFSEND, // RF transmitter - GPIO_RFRECV, // RF receiver - GPIO_TUYA_TX, // Tuya Serial interface - GPIO_TUYA_RX, // Tuya Serial interface - GPIO_MGC3130_XFER, // MGC3130 Transfer - GPIO_MGC3130_RESET, // MGC3130 Reset - GPIO_SSPI_MISO, // Software SPI Master Input Client Output - GPIO_SSPI_MOSI, // Software SPI Master Output Client Input - GPIO_SSPI_SCLK, // Software SPI Serial Clock - GPIO_SSPI_CS, // Software SPI Chip Select - GPIO_SSPI_DC, // Software SPI Data or Command - GPIO_RF_SENSOR, // Rf receiver with sensor decoding - GPIO_AZ_TXD, // AZ-Instrument 7798 Serial interface - GPIO_AZ_RXD, // AZ-Instrument 7798 Serial interface - GPIO_MAX31855CS, // MAX31855 Serial interface - GPIO_MAX31855CLK, // MAX31855 Serial interface - GPIO_MAX31855DO, // MAX31855 Serial interface - GPIO_KEY1_INV, // Inverted buttons - GPIO_KEY2_INV, - GPIO_KEY3_INV, - GPIO_KEY4_INV, - GPIO_KEY1_INV_NP, // Inverted buttons without pull-up - GPIO_KEY2_INV_NP, - GPIO_KEY3_INV_NP, - GPIO_KEY4_INV_NP, - GPIO_NRG_SEL, // HLW8012/HLJ-01 Sel output (1 = Voltage) - GPIO_NRG_SEL_INV, // HLW8012/HLJ-01 Sel output (0 = Voltage) - GPIO_NRG_CF1, // HLW8012/HLJ-01 CF1 voltage / current - GPIO_HLW_CF, // HLW8012 CF power - GPIO_HJL_CF, // HJL-01/BL0937 CF power - GPIO_MCP39F5_TX, // MCP39F501 Serial interface (Shelly2) - GPIO_MCP39F5_RX, // MCP39F501 Serial interface (Shelly2) - GPIO_MCP39F5_RST, // MCP39F501 Reset (Shelly2) - GPIO_PN532_TXD, // PN532 NFC Serial Tx - GPIO_PN532_RXD, // PN532 NFC Serial Rx - GPIO_SM16716_CLK, // SM16716 CLOCK - GPIO_SM16716_DAT, // SM16716 DATA - GPIO_SM16716_SEL, // SM16716 SELECT - GPIO_DI, // my92x1 PWM input - GPIO_DCKI, // my92x1 CLK input - GPIO_CSE7766_TX, // CSE7766 Serial interface (S31 and Pow R2) - Not used anymore 20200121 - GPIO_CSE7766_RX, // CSE7766 Serial interface (S31 and Pow R2) - GPIO_ARIRFRCV, // AriLux RF Receive input - GPIO_TXD, // Serial interface - GPIO_RXD, // Serial interface - GPIO_ROT1A, // Rotary switch1 A Pin - GPIO_ROT1B, // Rotary switch1 B Pin - GPIO_ROT2A, // Rotary switch2 A Pin - GPIO_ROT2B, // Rotary switch2 B Pin - GPIO_HRE_CLOCK, // Clock/Power line for HR-E Water Meter - GPIO_HRE_DATA, // Data line for HR-E Water Meter - GPIO_ADE7953_IRQ, // ADE7953 IRQ - GPIO_LEDLNK, // Link led - GPIO_LEDLNK_INV, // Inverted link led - GPIO_ARIRFSEL, // Arilux RF Receive input selected - GPIO_BUZZER, // Buzzer - GPIO_BUZZER_INV, // Inverted buzzer - GPIO_OLED_RESET, // OLED Display Reset - GPIO_SOLAXX1_TX, // Solax Inverter tx pin - GPIO_SOLAXX1_RX, // Solax Inverter rx pin - GPIO_ZIGBEE_TX, // Zigbee Serial interface - GPIO_ZIGBEE_RX, // Zigbee Serial interface - GPIO_RDM6300_RX, // RDM6300 RX - GPIO_IBEACON_TX, // HM17 IBEACON TX - GPIO_IBEACON_RX, // HM17 IBEACON RX - GPIO_A4988_DIR, // A4988 direction pin - GPIO_A4988_STP, // A4988 step pin - GPIO_A4988_ENA, // A4988 enabled pin - GPIO_A4988_MS1, // A4988 microstep pin1 - GPIO_A4988_MS2, // A4988 microstep pin2 - GPIO_A4988_MS3, // A4988 microstep pin3 - GPIO_DDS2382_TX, // DDS2382 Serial interface - GPIO_DDS2382_RX, // DDS2382 Serial interface - GPIO_DDSU666_TX, // DDSU666 Serial interface - GPIO_DDSU666_RX, // DDSU666 Serial interface - GPIO_SM2135_CLK, // SM2135 Clk - GPIO_SM2135_DAT, // SM2135 Dat - GPIO_DEEPSLEEP, // Kill switch for deepsleep - GPIO_EXS_ENABLE, // EXS MCU Enable - GPIO_TASMOTACLIENT_TXD, // Client TX - GPIO_TASMOTACLIENT_RXD, // Client RX - GPIO_TASMOTACLIENT_RST, // Client Reset Pin - GPIO_TASMOTACLIENT_RST_INV, // Client Reset Inverted - GPIO_HPMA_RX, // Honeywell HPMA115S0 Serial interface - GPIO_HPMA_TX, // Honeywell HPMA115S0 Serial interface - GPIO_GPS_RX, // GPS serial interface - GPIO_GPS_TX, // GPS serial interface - GPIO_DSB_OUT, // Pseudo Single wire DS18B20 or DS18S20 - GPIO_DHT11_OUT, // Pseudo Single wire DHT11, DHT21, DHT22, AM2301, AM2302, AM2321 - GPIO_HM10_RX, // HM10-BLE-Mijia-bridge serial interface - GPIO_HM10_TX, // HM10-BLE-Mijia-bridge serial interface - GPIO_LE01MR_RX, // F&F LE-01MR energy meter - GPIO_LE01MR_TX, // F&F LE-01MR energy meter - GPIO_CC1101_GDO0, // CC1101 pin for RX - GPIO_CC1101_GDO2, // CC1101 pin for RX - GPIO_HRXL_RX, // Data from MaxBotix HRXL sonar range sensor - GPIO_ELECTRIQ_MOODL_TX, // ElectriQ iQ-wifiMOODL Serial TX - GPIO_AS3935, // Franklin Lightning Sensor - GPIO_PMS5003_TX, // Plantower PMS5003 Serial interface - GPIO_BOILER_OT_RX, // OpenTherm Boiler RX pin - GPIO_BOILER_OT_TX, // OpenTherm Boiler TX pin - GPIO_WINDMETER_SPEED, // WindMeter speed counter pin - GPIO_BL0940_RX, // BL0940 serial interface - GPIO_TCP_TX, // TCP Serial bridge - GPIO_TCP_RX, // TCP Serial bridge - GPIO_TELEINFO_RX, // TELEINFO serial interface - GPIO_TELEINFO_ENABLE,// TELEINFO Enable PIN - GPIO_LMT01, // LMT01 input counting pin - GPIO_IEM3000_TX, // IEM3000 Serial interface - GPIO_IEM3000_RX, // IEM3000 Serial interface - GPIO_ZIGBEE_RST, // Zigbee reset + GPIO_NONE, // Not used + GPIO_KEY1, GPIO_KEY1_NP, GPIO_KEY1_INV, GPIO_KEY1_INV_NP, // 4 x Button + GPIO_SWT1, GPIO_SWT1_NP, // 8 x User connected external switches + GPIO_REL1, GPIO_REL1_INV, // 8 x Relays + GPIO_LED1, GPIO_LED1_INV, // 4 x Leds + GPIO_CNTR1, GPIO_CNTR1_NP, // 4 x Counter + GPIO_PWM1, GPIO_PWM1_INV, // 5 x PWM + GPIO_BUZZER, GPIO_BUZZER_INV, // Buzzer + GPIO_LEDLNK, GPIO_LEDLNK_INV, // Link led + GPIO_I2C_SCL, GPIO_I2C_SDA, // Software I2C + GPIO_SPI_MISO, GPIO_SPI_MOSI, GPIO_SPI_CLK, GPIO_SPI_CS, GPIO_SPI_DC, // Hardware SPI + GPIO_SSPI_MISO, GPIO_SSPI_MOSI, GPIO_SSPI_SCLK, GPIO_SSPI_CS, GPIO_SSPI_DC, // Software SPI + GPIO_BACKLIGHT, // Display backlight control + GPIO_OLED_RESET, // OLED Display Reset + GPIO_IRSEND, GPIO_IRRECV, // IR interface + GPIO_RFSEND, GPIO_RFRECV, // RF interface + GPIO_DHT11, GPIO_DHT22, GPIO_SI7021, GPIO_DHT11_OUT, // DHT11, DHT21, DHT22, AM2301, AM2302, AM2321 + GPIO_DSB, GPIO_DSB_OUT, // DS18B20 or DS18S20 + GPIO_WS2812, // WS2812 Led string + GPIO_MHZ_TXD, GPIO_MHZ_RXD, // MH-Z19 Serial interface + GPIO_PZEM0XX_TX, GPIO_PZEM004_RX, GPIO_PZEM016_RX, GPIO_PZEM017_RX, // PZEM Serial Modbus interface + GPIO_SAIR_TX, GPIO_SAIR_RX, // SenseAir Serial interface + GPIO_PMS5003_TX, GPIO_PMS5003_RX, // Plantower PMS5003 Serial interface + GPIO_SDS0X1_TX, GPIO_SDS0X1_RX, // Nova Fitness SDS011 Serial interface + GPIO_SBR_TX, GPIO_SBR_RX, // Serial Bridge Serial interface + GPIO_SR04_TRIG, GPIO_SR04_ECHO, // SR04 interface + GPIO_SDM120_TX, GPIO_SDM120_RX, // SDM120 Serial interface + GPIO_SDM630_TX, GPIO_SDM630_RX, // SDM630 Serial interface + GPIO_TM16CLK, GPIO_TM16DIO, GPIO_TM16STB, // TM1638 interface + GPIO_MP3_DFR562, // RB-DFR-562, DFPlayer Mini MP3 Player + GPIO_HX711_SCK, GPIO_HX711_DAT, // HX711 Load Cell interface + GPIO_TX2X_TXD_BLACK, // TX20/TX23 Transmission Pin + GPIO_TUYA_TX, GPIO_TUYA_RX, // Tuya Serial interface + GPIO_MGC3130_XFER, GPIO_MGC3130_RESET, // MGC3130 interface + GPIO_RF_SENSOR, // Rf receiver with sensor decoding + GPIO_AZ_TXD, GPIO_AZ_RXD, // AZ-Instrument 7798 Serial interface + GPIO_MAX31855CS, GPIO_MAX31855CLK, GPIO_MAX31855DO, // MAX31855 Serial interface + GPIO_NRG_SEL, GPIO_NRG_SEL_INV, GPIO_NRG_CF1, GPIO_HLW_CF, GPIO_HJL_CF, // HLW8012/HJL-01/BL0937 energy monitoring + GPIO_MCP39F5_TX, GPIO_MCP39F5_RX, GPIO_MCP39F5_RST, // MCP39F501 Energy monitoring (Shelly2) + GPIO_PN532_TXD, GPIO_PN532_RXD, // PN532 NFC Serial interface + GPIO_SM16716_CLK, GPIO_SM16716_DAT, GPIO_SM16716_SEL, // SM16716 SELECT + GPIO_DI, GPIO_DCKI, // my92x1 PWM controller + GPIO_CSE7766_TX, GPIO_CSE7766_RX, // CSE7766 Serial interface (S31 and Pow R2) + GPIO_ARIRFRCV, GPIO_ARIRFSEL, // Arilux RF Receive input + GPIO_TXD, GPIO_RXD, // Serial interface + GPIO_ROT1A, GPIO_ROT1B, // Rotary switch + GPIO_ADC_JOY, // Analog joystick + GPIO_SSPI_MAX31865_CS1, // MAX31865 Chip Select + GPIO_HRE_CLOCK, GPIO_HRE_DATA, // HR-E Water Meter + GPIO_ADE7953_IRQ, // ADE7953 IRQ + GPIO_SOLAXX1_TX, GPIO_SOLAXX1_RX, // Solax Inverter Serial interface + GPIO_ZIGBEE_TX, GPIO_ZIGBEE_RX, // Zigbee Serial interface + GPIO_RDM6300_RX, // RDM6300 RX + GPIO_IBEACON_TX, GPIO_IBEACON_RX, // HM17 IBEACON Serial interface + GPIO_A4988_DIR, GPIO_A4988_STP, GPIO_A4988_ENA, // A4988 interface + GPIO_A4988_MS1, GPIO_A4988_MS2, GPIO_A4988_MS3, // A4988 microstep + GPIO_DDS2382_TX, GPIO_DDS2382_RX, // DDS2382 Serial interface + GPIO_DDSU666_TX, GPIO_DDSU666_RX, // DDSU666 Serial interface + GPIO_SM2135_CLK, GPIO_SM2135_DAT, // SM2135 PWM controller + GPIO_DEEPSLEEP, // Kill switch for deepsleep + GPIO_EXS_ENABLE, // EXS MCU Enable + GPIO_TASMOTACLIENT_TXD, GPIO_TASMOTACLIENT_RXD, // Client Serial interface + GPIO_TASMOTACLIENT_RST, GPIO_TASMOTACLIENT_RST_INV, // Client Reset + GPIO_HPMA_RX, GPIO_HPMA_TX, // Honeywell HPMA115S0 Serial interface + GPIO_GPS_RX, GPIO_GPS_TX, // GPS Serial interface + GPIO_HM10_RX, GPIO_HM10_TX, // HM10-BLE-Mijia-bridge Serial interface + GPIO_LE01MR_RX, GPIO_LE01MR_TX, // F&F LE-01MR energy meter + GPIO_CC1101_GDO0, GPIO_CC1101_GDO2, // CC1101 Serial interface + GPIO_HRXL_RX, // Data from MaxBotix HRXL sonar range sensor + GPIO_ELECTRIQ_MOODL_TX, // ElectriQ iQ-wifiMOODL Serial TX + GPIO_AS3935, // Franklin Lightning Sensor + GPIO_ADC_INPUT, // Analog input + GPIO_ADC_TEMP, // Analog Thermistor + GPIO_ADC_LIGHT, // Analog Light sensor + GPIO_ADC_BUTTON, GPIO_ADC_BUTTON_INV, // Analog Button + GPIO_ADC_RANGE, // Analog Range + GPIO_ADC_CT_POWER, // ANalog Current +#ifdef ESP32 + GPIO_WEBCAM_PWDN, GPIO_WEBCAM_RESET, GPIO_WEBCAM_XCLK, // Webcam + GPIO_WEBCAM_SIOD, GPIO_WEBCAM_SIOC, // Webcam I2C + GPIO_WEBCAM_DATA, + GPIO_WEBCAM_VSYNC, GPIO_WEBCAM_HREF, GPIO_WEBCAM_PCLK, + GPIO_WEBCAM_PSCLK, + GPIO_WEBCAM_HSD, + GPIO_WEBCAM_PSRCS, +#endif + GPIO_BOILER_OT_RX, GPIO_BOILER_OT_TX, // OpenTherm Boiler TX pin + GPIO_WINDMETER_SPEED, // WindMeter speed counter pin + GPIO_KEY1_TC, // Touch pin as button + GPIO_BL0940_RX, // BL0940 serial interface + GPIO_TCP_TX, GPIO_TCP_RX, // TCP to serial bridge +#ifdef ESP32 + GPIO_ETH_PHY_POWER, GPIO_ETH_PHY_MDC, GPIO_ETH_PHY_MDIO, // Ethernet +#endif + GPIO_TELEINFO_RX, // Teleinfo telemetry data receive pin + GPIO_TELEINFO_ENABLE, // Teleinfo Enable Receive Pin + GPIO_LMT01, // LMT01 input counting pin + GPIO_IEM3000_TX, GPIO_IEM3000_RX, // IEM3000 Serial interface + GPIO_ZIGBEE_RST, // Zigbee reset GPIO_DYP_RX, GPIO_SENSOR_END }; -// Programmer selectable GPIO functionality enum ProgramSelectablePins { - GPIO_FIX_START = 251, - GPIO_SPI_MISO, // SPI MISO library fixed pin GPIO12 - GPIO_SPI_MOSI, // SPI MOSI library fixed pin GPIO13 - GPIO_SPI_CLK, // SPI Clk library fixed pin GPIO14 - GPIO_USER, // User configurable needs to be 255 + GPIO_FIX_START = 2046, + GPIO_USER, // User configurable needs to be 2047 GPIO_MAX }; -/* -// Indexed by UserSelectablePins to convert legacy (8-bit) GPIOs +// Text in webpage Module Parameters and commands GPIOS and GPIO +const char kSensorNames[] PROGMEM = + D_SENSOR_NONE "|" + D_SENSOR_BUTTON "|" D_SENSOR_BUTTON "_n|" D_SENSOR_BUTTON "_i|" D_SENSOR_BUTTON "_in|" + D_SENSOR_SWITCH "|" D_SENSOR_SWITCH "_n|" + D_SENSOR_RELAY "|" D_SENSOR_RELAY "_i|" + D_SENSOR_LED "|" D_SENSOR_LED "_i|" + D_SENSOR_COUNTER "|" D_SENSOR_COUNTER "_n|" + D_SENSOR_PWM "|" D_SENSOR_PWM "_i|" + D_SENSOR_BUZZER "|" D_SENSOR_BUZZER "_i|" + D_SENSOR_LED_LINK "|" D_SENSOR_LED_LINK "_i|" + D_SENSOR_I2C_SCL "|" D_SENSOR_I2C_SDA "|" + D_SENSOR_SPI_MISO "|" D_SENSOR_SPI_MOSI "|" D_SENSOR_SPI_CLK "|" D_SENSOR_SPI_CS "|" D_SENSOR_SPI_DC "|" + D_SENSOR_SSPI_MISO "|" D_SENSOR_SSPI_MOSI "|" D_SENSOR_SSPI_SCLK "|" D_SENSOR_SSPI_CS "|" D_SENSOR_SSPI_DC "|" + D_SENSOR_BACKLIGHT "|" D_SENSOR_OLED_RESET "|" + D_SENSOR_IRSEND "|" D_SENSOR_IRRECV "|" + D_SENSOR_RFSEND "|" D_SENSOR_RFRECV "|" + D_SENSOR_DHT11 "|" D_SENSOR_AM2301 "|" D_SENSOR_SI7021 "|" D_SENSOR_DHT11 "_o|" + D_SENSOR_DS18X20 "|" D_SENSOR_DS18X20 "_o|" + D_SENSOR_WS2812 "|" + D_SENSOR_MHZ_TX "|" D_SENSOR_MHZ_RX "|" + D_SENSOR_PZEM0XX_TX "|" D_SENSOR_PZEM004_RX "|" D_SENSOR_PZEM016_RX "|" D_SENSOR_PZEM017_RX "|" + D_SENSOR_SAIR_TX "|" D_SENSOR_SAIR_RX "|" + D_SENSOR_PMS5003_TX "|" D_SENSOR_PMS5003_RX "|" + D_SENSOR_SDS0X1_TX "|" D_SENSOR_SDS0X1_RX "|" + D_SENSOR_SBR_TX "|" D_SENSOR_SBR_RX "|" + D_SENSOR_SR04_TRIG "|" D_SENSOR_SR04_ECHO "|" + D_SENSOR_SDM120_TX "|" D_SENSOR_SDM120_RX "|" + D_SENSOR_SDM630_TX "|" D_SENSOR_SDM630_RX "|" + D_SENSOR_TM1638_CLK "|" D_SENSOR_TM1638_DIO "|" D_SENSOR_TM1638_STB "|" + D_SENSOR_DFR562 "|" + D_SENSOR_HX711_SCK "|" D_SENSOR_HX711_DAT "|" + D_SENSOR_TX2X_TX "|" + D_SENSOR_TUYA_TX "|" D_SENSOR_TUYA_RX "|" + D_SENSOR_MGC3130_XFER "|" D_SENSOR_MGC3130_RESET "|" + D_SENSOR_RF_SENSOR "|" + D_SENSOR_AZ_TX "|" D_SENSOR_AZ_RX "|" + D_SENSOR_MAX31855_CS "|" D_SENSOR_MAX31855_CLK "|" D_SENSOR_MAX31855_DO "|" + D_SENSOR_NRG_SEL "|" D_SENSOR_NRG_SEL "_i|" D_SENSOR_NRG_CF1 "|" D_SENSOR_HLW_CF "|" D_SENSOR_HJL_CF "|" + D_SENSOR_MCP39F5_TX "|" D_SENSOR_MCP39F5_RX "|" D_SENSOR_MCP39F5_RST "|" + D_SENSOR_PN532_TX "|" D_SENSOR_PN532_RX "|" + D_SENSOR_SM16716_CLK "|" D_SENSOR_SM16716_DAT "|" D_SENSOR_SM16716_POWER "|" + D_SENSOR_MY92X1_DI "|" D_SENSOR_MY92X1_DCKI "|" + D_SENSOR_CSE7766_TX "|" D_SENSOR_CSE7766_RX "|" + D_SENSOR_ARIRFRCV "|" D_SENSOR_ARIRFSEL "|" + D_SENSOR_TXD "|" D_SENSOR_RXD "|" + D_SENSOR_ROTARY "_a|" D_SENSOR_ROTARY "_b|" + D_SENSOR_ADC_JOYSTICK "|" + D_SENSOR_MAX31865_CS "|" + D_SENSOR_HRE_CLOCK "|" D_SENSOR_HRE_DATA "|" + D_SENSOR_ADE7953_IRQ "|" + D_SENSOR_SOLAXX1_TX "|" D_SENSOR_SOLAXX1_RX "|" + D_SENSOR_ZIGBEE_TXD "|" D_SENSOR_ZIGBEE_RXD "|" + D_SENSOR_RDM6300_RX "|" + D_SENSOR_IBEACON_TX "|" D_SENSOR_IBEACON_RX "|" + D_SENSOR_A4988_DIR "|" D_SENSOR_A4988_STP "|" D_SENSOR_A4988_ENA "|" D_SENSOR_A4988_MS1 "|" D_SENSOR_A4988_MS2 "|" D_SENSOR_A4988_MS3 "|" + D_SENSOR_DDS2382_TX "|" D_SENSOR_DDS2382_RX "|" + D_SENSOR_DDSU666_TX "|" D_SENSOR_DDSU666_RX "|" + D_SENSOR_SM2135_CLK "|" D_SENSOR_SM2135_DAT "|" + D_SENSOR_DEEPSLEEP "|" D_SENSOR_EXS_ENABLE "|" + D_SENSOR_CLIENT_TX "|" D_SENSOR_CLIENT_RX "|" D_SENSOR_CLIENT_RESET "|" D_SENSOR_CLIENT_RESET "_i|" + D_SENSOR_HPMA_RX "|" D_SENSOR_HPMA_TX "|" + D_SENSOR_GPS_RX "|" D_SENSOR_GPS_TX "|" + D_SENSOR_HM10_RX "|" D_SENSOR_HM10_TX "|" + D_SENSOR_LE01MR_RX "|" D_SENSOR_LE01MR_TX "|" + D_SENSOR_CC1101_GDO0 "|" D_SENSOR_CC1101_GDO2 "|" + D_SENSOR_HRXL_RX "|" + D_SENSOR_ELECTRIQ_MOODL "|" + D_SENSOR_AS3935 "|" + D_SENSOR_ADC_INPUT "|" + D_SENSOR_ADC_TEMP "|" + D_SENSOR_ADC_LIGHT "|" + D_SENSOR_ADC_BUTTON "|" D_SENSOR_ADC_BUTTON "_i|" + D_SENSOR_ADC_RANGE "|" + D_SENSOR_ADC_CT_POWER "|" +#ifdef ESP32 + D_GPIO_WEBCAM_PWDN "|" D_GPIO_WEBCAM_RESET "|" D_GPIO_WEBCAM_XCLK "|" + D_GPIO_WEBCAM_SIOD "|" D_GPIO_WEBCAM_SIOC "|" + D_GPIO_WEBCAM_DATA "|" + D_GPIO_WEBCAM_VSYNC "|" D_GPIO_WEBCAM_HREF "|" D_GPIO_WEBCAM_PCLK "|" + D_GPIO_WEBCAM_PSCLK "|" + D_GPIO_WEBCAM_HSD "|" + D_GPIO_WEBCAM_PSRCS "|" +#endif + D_SENSOR_BOILER_OT_RX "|" D_SENSOR_BOILER_OT_TX "|" + D_SENSOR_WINDMETER_SPEED "|" D_SENSOR_BUTTON "_tc|" + D_SENSOR_BL0940_RX "|" + D_SENSOR_TCP_TXD "|" D_SENSOR_TCP_RXD "|" +#ifdef ESP32 + D_SENSOR_ETH_PHY_POWER "|" D_SENSOR_ETH_PHY_MDC "|" D_SENSOR_ETH_PHY_MDIO "|" +#endif + D_SENSOR_TELEINFO_RX "|" D_SENSOR_TELEINFO_ENABLE "|" + D_SENSOR_LMT01_PULSE "|" + D_SENSOR_IEM3000_TX "|" D_SENSOR_IEM3000_RX "|" + D_SENSOR_ZIGBEE_RST "|" + D_SENSOR_DYP_RX + ; + +const char kSensorNamesFixed[] PROGMEM = + D_SENSOR_USER; + +#define MAX_MAX31865_CS 6 +#define MAX_WEBCAM_DATA 8 +#define MAX_WEBCAM_HSD 3 + +const uint16_t kGpioNiceList[] PROGMEM = { + GPIO_NONE, // Not used + AGPIO(GPIO_KEY1) + MAX_KEYS, // Buttons + AGPIO(GPIO_KEY1_NP) + MAX_KEYS, + AGPIO(GPIO_KEY1_INV) + MAX_KEYS, + AGPIO(GPIO_KEY1_INV_NP) + MAX_KEYS, + AGPIO(GPIO_KEY1_TC) + MAX_KEYS, // Touch button + AGPIO(GPIO_SWT1) + MAX_SWITCHES, // User connected external switches + AGPIO(GPIO_SWT1_NP) + MAX_SWITCHES, +#ifdef ROTARY_V1 + AGPIO(GPIO_ROT1A) + MAX_ROTARIES, // Rotary A Pin + AGPIO(GPIO_ROT1B) + MAX_ROTARIES, // Rotary B Pin +#endif + AGPIO(GPIO_REL1) + MAX_RELAYS, // Relays + AGPIO(GPIO_REL1_INV) + MAX_RELAYS, + AGPIO(GPIO_LED1) + MAX_LEDS, // Leds + AGPIO(GPIO_LED1_INV) + MAX_LEDS, +#ifdef USE_COUNTER + AGPIO(GPIO_CNTR1) + MAX_COUNTERS, // Counters + AGPIO(GPIO_CNTR1_NP) + MAX_COUNTERS, +#endif + AGPIO(GPIO_PWM1) + MAX_PWMS, // RGB Red or C Cold White + AGPIO(GPIO_PWM1_INV) + MAX_PWMS, +#ifdef USE_BUZZER + AGPIO(GPIO_BUZZER), // Buzzer + AGPIO(GPIO_BUZZER_INV), // Inverted buzzer +#endif + AGPIO(GPIO_LEDLNK), // Link led + AGPIO(GPIO_LEDLNK_INV), // Inverted link led +#ifdef USE_I2C + AGPIO(GPIO_I2C_SCL), // I2C SCL + AGPIO(GPIO_I2C_SDA), // I2C SDA +#endif +#ifdef USE_SPI + AGPIO(GPIO_SPI_MISO), // SPI MISO + AGPIO(GPIO_SPI_MOSI), // SPI MOSI + AGPIO(GPIO_SPI_CLK), // SPI Clk + AGPIO(GPIO_SPI_CS), // SPI Chip Select + AGPIO(GPIO_SPI_DC), // SPI Data Direction +#endif + AGPIO(GPIO_SSPI_MISO), // Software SPI Master Input Client Output + AGPIO(GPIO_SSPI_MOSI), // Software SPI Master Output Client Input + AGPIO(GPIO_SSPI_SCLK), // Software SPI Serial Clock + AGPIO(GPIO_SSPI_CS), // Software SPI Chip Select + AGPIO(GPIO_SSPI_DC), // Software SPI Data or Command +#ifdef USE_DISPLAY + AGPIO(GPIO_BACKLIGHT), // Display backlight control + AGPIO(GPIO_OLED_RESET), // OLED Display Reset +#endif + + AGPIO(GPIO_TXD), // Serial interface + AGPIO(GPIO_RXD), // Serial interface + +#ifdef USE_DHT + AGPIO(GPIO_DHT11), // DHT11 + AGPIO(GPIO_DHT22), // DHT21, DHT22, AM2301, AM2302, AM2321 + AGPIO(GPIO_SI7021), // iTead SI7021 + AGPIO(GPIO_DHT11_OUT), // Pseudo Single wire DHT11, DHT21, DHT22, AM2301, AM2302, AM2321 +#endif +#ifdef USE_DS18x20 + AGPIO(GPIO_DSB), // Single wire DS18B20 or DS18S20 + AGPIO(GPIO_DSB_OUT), // Pseudo Single wire DS18B20 or DS18S20 +#endif +#ifdef USE_LMT01 + AGPIO(GPIO_LMT01), // LMT01, count pulses on GPIO +#endif + +// Light +#ifdef USE_LIGHT +#ifdef USE_WS2812 + AGPIO(GPIO_WS2812), // WS2812 Led string +#endif +#ifdef USE_ARILUX_RF + AGPIO(GPIO_ARIRFRCV), // AriLux RF Receive input + AGPIO(GPIO_ARIRFSEL), // Arilux RF Receive input selected +#endif +#ifdef USE_MY92X1 + AGPIO(GPIO_DI), // my92x1 PWM input + AGPIO(GPIO_DCKI), // my92x1 CLK input +#endif // USE_MY92X1 +#ifdef USE_SM16716 + AGPIO(GPIO_SM16716_CLK), // SM16716 CLOCK + AGPIO(GPIO_SM16716_DAT), // SM16716 DATA + AGPIO(GPIO_SM16716_SEL), // SM16716 SELECT +#endif // USE_SM16716 +#ifdef USE_SM2135 + AGPIO(GPIO_SM2135_CLK), // SM2135 CLOCK + AGPIO(GPIO_SM2135_DAT), // SM2135 DATA +#endif // USE_SM2135 +#ifdef USE_TUYA_MCU + AGPIO(GPIO_TUYA_TX), // Tuya Serial interface + AGPIO(GPIO_TUYA_RX), // Tuya Serial interface +#endif +#ifdef USE_EXS_DIMMER + AGPIO(GPIO_EXS_ENABLE), // EXS MCU Enable +#endif +#ifdef USE_ELECTRIQ_MOODL + AGPIO(GPIO_ELECTRIQ_MOODL_TX), +#endif +#endif // USE_LIGHT + +#if defined(USE_IR_REMOTE) || defined(USE_IR_REMOTE_FULL) + AGPIO(GPIO_IRSEND), // IR remote +#if defined(USE_IR_RECEIVE) || defined(USE_IR_REMOTE_FULL) + AGPIO(GPIO_IRRECV), // IR receiver +#endif +#endif + +#ifdef USE_RC_SWITCH + AGPIO(GPIO_RFSEND), // RF transmitter + AGPIO(GPIO_RFRECV), // RF receiver +#endif +#ifdef USE_RF_SENSOR + AGPIO(GPIO_RF_SENSOR), // Rf receiver with sensor decoding +#endif +#ifdef USE_SR04 + AGPIO(GPIO_SR04_TRIG), // SR04 Tri/TXgger pin + AGPIO(GPIO_SR04_ECHO), // SR04 Ech/RXo pin +#endif +#ifdef USE_TM1638 + AGPIO(GPIO_TM16CLK), // TM1638 Clock + AGPIO(GPIO_TM16DIO), // TM1638 Data I/O + AGPIO(GPIO_TM16STB), // TM1638 Strobe +#endif +#ifdef USE_HX711 + AGPIO(GPIO_HX711_SCK), // HX711 Load Cell clock + AGPIO(GPIO_HX711_DAT), // HX711 Load Cell data +#endif + +// Energy sensors +#ifdef USE_ENERGY_SENSOR +#ifdef USE_HLW8012 + AGPIO(GPIO_NRG_SEL), // HLW8012/HLJ-01 Sel output (1 = Voltage) + AGPIO(GPIO_NRG_SEL_INV), // HLW8012/HLJ-01 Sel output (0 = Voltage) + AGPIO(GPIO_NRG_CF1), // HLW8012/HLJ-01 CF1 voltage / current + AGPIO(GPIO_HLW_CF), // HLW8012 CF power + AGPIO(GPIO_HJL_CF), // HJL-01/BL0937 CF power +#endif +#if defined(USE_I2C) && defined(USE_ADE7953) + AGPIO(GPIO_ADE7953_IRQ), // ADE7953 IRQ +#endif +#ifdef USE_CSE7766 + AGPIO(GPIO_CSE7766_TX), // CSE7766 Serial interface (S31 and Pow R2) + AGPIO(GPIO_CSE7766_RX), // CSE7766 Serial interface (S31 and Pow R2) +#endif +#ifdef USE_MCP39F501 + AGPIO(GPIO_MCP39F5_TX), // MCP39F501 Serial interface (Shelly2) + AGPIO(GPIO_MCP39F5_RX), // MCP39F501 Serial interface (Shelly2) + AGPIO(GPIO_MCP39F5_RST), // MCP39F501 Reset (Shelly2) +#endif +#if defined(USE_PZEM004T) || defined(USE_PZEM_AC) || defined(USE_PZEM_DC) + AGPIO(GPIO_PZEM0XX_TX), // PZEM0XX Serial interface +#endif +#ifdef USE_PZEM004T + AGPIO(GPIO_PZEM004_RX), // PZEM004T Serial interface +#endif +#ifdef USE_PZEM_AC + AGPIO(GPIO_PZEM016_RX), // PZEM-014,016 Serial Modbus interface +#endif +#ifdef USE_PZEM_DC + AGPIO(GPIO_PZEM017_RX), // PZEM-003,017 Serial Modbus interface +#endif +#ifdef USE_SDM120 + AGPIO(GPIO_SDM120_TX), // SDM120 Serial interface + AGPIO(GPIO_SDM120_RX), // SDM120 Serial interface +#endif +#ifdef USE_SDM630 + AGPIO(GPIO_SDM630_TX), // SDM630 Serial interface + AGPIO(GPIO_SDM630_RX), // SDM630 Serial interface +#endif +#ifdef USE_DDS2382 + AGPIO(GPIO_DDS2382_TX), // DDS2382 Serial interface + AGPIO(GPIO_DDS2382_RX), // DDS2382 Serial interface +#endif +#ifdef USE_DDSU666 + AGPIO(GPIO_DDSU666_TX), // DDSU666 Serial interface + AGPIO(GPIO_DDSU666_RX), // DDSU666 Serial interface +#endif // USE_DDSU666 +#ifdef USE_SOLAX_X1 + AGPIO(GPIO_SOLAXX1_TX), // Solax Inverter tx pin + AGPIO(GPIO_SOLAXX1_RX), // Solax Inverter rx pin +#endif // USE_SOLAX_X1 +#ifdef USE_LE01MR + AGPIO(GPIO_LE01MR_TX), // F7F LE-01MR energy meter tx pin + AGPIO(GPIO_LE01MR_RX), // F7F LE-01MR energy meter rx pin +#endif // IFDEF:USE_LE01MR +#ifdef USE_BL0940 + AGPIO(GPIO_BL0940_RX), // BL0940 Serial interface +#endif +#ifdef USE_IEM3000 + AGPIO(GPIO_IEM3000_TX), // IEM3000 Serial interface + AGPIO(GPIO_IEM3000_RX), // IEM3000 Serial interface +#endif +#endif // USE_ENERGY_SENSOR + +// Serial +#ifdef USE_SERIAL_BRIDGE + AGPIO(GPIO_SBR_TX), // Serial Bridge Serial interface + AGPIO(GPIO_SBR_RX), // Serial Bridge Serial interface +#endif +#ifdef USE_TCP_BRIDGE + AGPIO(GPIO_TCP_TX), // TCP Serial bridge + AGPIO(GPIO_TCP_RX), // TCP Serial bridge +#endif +#ifdef USE_ZIGBEE + AGPIO(GPIO_ZIGBEE_TX), // Zigbee Serial interface + AGPIO(GPIO_ZIGBEE_RX), // Zigbee Serial interface + AGPIO(GPIO_ZIGBEE_RST), // Zigbee reset +#endif +#ifdef USE_MHZ19 + AGPIO(GPIO_MHZ_TXD), // MH-Z19 Serial interface + AGPIO(GPIO_MHZ_RXD), // MH-Z19 Serial interface +#endif +#ifdef USE_SENSEAIR + AGPIO(GPIO_SAIR_TX), // SenseAir Serial interface + AGPIO(GPIO_SAIR_RX), // SenseAir Serial interface +#endif +#ifdef USE_NOVA_SDS + AGPIO(GPIO_SDS0X1_TX), // Nova Fitness SDS011 Serial interface + AGPIO(GPIO_SDS0X1_RX), // Nova Fitness SDS011 Serial interface +#endif +#ifdef USE_HPMA + AGPIO(GPIO_HPMA_TX), // Honeywell HPMA115S0 Serial interface + AGPIO(GPIO_HPMA_RX), // Honeywell HPMA115S0 Serial interface +#endif +#ifdef USE_PMS5003 + AGPIO(GPIO_PMS5003_TX), // Plantower PMS5003 Serial interface + AGPIO(GPIO_PMS5003_RX), // Plantower PMS5003 Serial interface +#endif +#if defined(USE_TX20_WIND_SENSOR) || defined(USE_TX23_WIND_SENSOR) + AGPIO(GPIO_TX2X_TXD_BLACK), // TX20/TX23 Transmission Pin +#endif +#ifdef USE_WINDMETER + AGPIO(GPIO_WINDMETER_SPEED), +#endif +#ifdef USE_MP3_PLAYER + AGPIO(GPIO_MP3_DFR562), // RB-DFR-562, DFPlayer Mini MP3 Player Serial interface +#endif +#ifdef USE_AZ7798 + AGPIO(GPIO_AZ_TXD), // AZ-Instrument 7798 CO2 datalogger Serial interface + AGPIO(GPIO_AZ_RXD), // AZ-Instrument 7798 CO2 datalogger Serial interface +#endif +#ifdef USE_PN532_HSU + AGPIO(GPIO_PN532_TXD), // PN532 HSU Tx + AGPIO(GPIO_PN532_RXD), // PN532 HSU Rx +#endif +#ifdef USE_TASMOTA_CLIENT + AGPIO(GPIO_TASMOTACLIENT_TXD), // Tasmota Client TX + AGPIO(GPIO_TASMOTACLIENT_RXD), // Tasmota Client RX + AGPIO(GPIO_TASMOTACLIENT_RST), // Tasmota Client Reset + AGPIO(GPIO_TASMOTACLIENT_RST_INV), // Tasmota Client Reset Inverted +#endif +#ifdef USE_RDM6300 + AGPIO(GPIO_RDM6300_RX), +#endif +#ifdef USE_IBEACON + AGPIO(GPIO_IBEACON_TX), + AGPIO(GPIO_IBEACON_RX), +#endif +#ifdef USE_GPS + AGPIO(GPIO_GPS_TX), // GPS serial interface + AGPIO(GPIO_GPS_RX), // GPS serial interface +#endif +#ifdef USE_HM10 + AGPIO(GPIO_HM10_TX), // GPS serial interface + AGPIO(GPIO_HM10_RX), // GPS serial interface +#endif +#ifdef USE_OPENTHERM + AGPIO(GPIO_BOILER_OT_TX), + AGPIO(GPIO_BOILER_OT_RX), +#endif + +#ifdef USE_MGC3130 + AGPIO(GPIO_MGC3130_XFER), + AGPIO(GPIO_MGC3130_RESET), +#endif +#ifdef USE_MAX31855 + AGPIO(GPIO_MAX31855CS), // MAX31855 Serial interface + AGPIO(GPIO_MAX31855CLK), // MAX31855 Serial interface + AGPIO(GPIO_MAX31855DO), // MAX31855 Serial interface +#endif +#ifdef USE_MAX31855 + AGPIO(GPIO_SSPI_MAX31865_CS1) + MAX_MAX31865_CS, +#endif +#ifdef USE_HRE + AGPIO(GPIO_HRE_CLOCK), + AGPIO(GPIO_HRE_DATA), +#endif +#ifdef USE_A4988_STEPPER + AGPIO(GPIO_A4988_DIR), // A4988 direction pin + AGPIO(GPIO_A4988_STP), // A4988 step pin + // folowing are not mandatory + AGPIO(GPIO_A4988_ENA), // A4988 enabled pin + AGPIO(GPIO_A4988_MS1), // A4988 microstep pin1 + AGPIO(GPIO_A4988_MS2), // A4988 microstep pin2 + AGPIO(GPIO_A4988_MS3), // A4988 microstep pin3 +#endif +#ifdef USE_DEEPSLEEP + AGPIO(GPIO_DEEPSLEEP), +#endif +#ifdef USE_KEELOQ + AGPIO(GPIO_CC1101_GDO0), // CC1101 pin for RX + AGPIO(GPIO_CC1101_GDO2), // CC1101 pin for RX +#endif +#ifdef USE_HRXL + AGPIO(GPIO_HRXL_RX), +#endif +#ifdef USE_DYP + AGPIO(GPIO_DYP_RX), +#endif +#ifdef USE_AS3935 + AGPIO(GPIO_AS3935), // AS3935 IRQ Pin +#endif +#ifdef USE_TELEINFO + AGPIO(GPIO_TELEINFO_RX), + AGPIO(GPIO_TELEINFO_ENABLE), +#endif + +#ifdef ESP32 +#ifdef USE_WEBCAM + AGPIO(GPIO_WEBCAM_PWDN), + AGPIO(GPIO_WEBCAM_RESET), + AGPIO(GPIO_WEBCAM_XCLK), + AGPIO(GPIO_WEBCAM_SIOD), + AGPIO(GPIO_WEBCAM_SIOC), + AGPIO(GPIO_WEBCAM_DATA) + MAX_WEBCAM_DATA, + AGPIO(GPIO_WEBCAM_VSYNC), + AGPIO(GPIO_WEBCAM_HREF), + AGPIO(GPIO_WEBCAM_PCLK), + AGPIO(GPIO_WEBCAM_PSCLK), + AGPIO(GPIO_WEBCAM_HSD) + MAX_WEBCAM_HSD, + AGPIO(GPIO_WEBCAM_PSRCS), +#endif +#ifdef USE_ETHERNET + AGPIO(GPIO_ETH_PHY_POWER), + AGPIO(GPIO_ETH_PHY_MDC), + AGPIO(GPIO_ETH_PHY_MDIO), // Ethernet +#endif +#endif // ESP32 + +#ifdef USE_ADC +#ifdef ESP8266 + AGPIO(GPIO_ADC_INPUT), // Analog inputs + AGPIO(GPIO_ADC_TEMP), // Thermistor + AGPIO(GPIO_ADC_LIGHT), // Light sensor + AGPIO(GPIO_ADC_BUTTON), // Button + AGPIO(GPIO_ADC_BUTTON_INV), + AGPIO(GPIO_ADC_RANGE), // Range + AGPIO(GPIO_ADC_CT_POWER), // Current + AGPIO(GPIO_ADC_JOY), // Joystick +#else // ESP32 + AGPIO(GPIO_ADC_INPUT) + MAX_ADCS, // Analog inputs + AGPIO(GPIO_ADC_TEMP) + MAX_ADCS, // Thermistor + AGPIO(GPIO_ADC_LIGHT) + MAX_ADCS, // Light sensor + AGPIO(GPIO_ADC_BUTTON) + MAX_ADCS, // Button + AGPIO(GPIO_ADC_BUTTON_INV) + MAX_ADCS, + AGPIO(GPIO_ADC_RANGE) + MAX_ADCS, // Range + AGPIO(GPIO_ADC_CT_POWER) + MAX_ADCS, // Current + AGPIO(GPIO_ADC_JOY) + MAX_ADCS, // Joystick +#endif // ESP8266 or ESP32 +#endif // USE_ADC +}; + +/*********************************************************************************************\ + * ATTENTION: No user changeable features beyond this point - do not add templates !!! +\*********************************************************************************************/ + +// User selectable ADC functionality +enum UserSelectableAdc { + ADC_NONE, // Not used + ADC_INPUT, // Analog input + ADC_TEMP, // Thermistor + ADC_LIGHT, // Light sensor + ADC_BUTTON, // Button + ADC_BUTTON_INV, + ADC_RANGE, // Range + ADC_CT_POWER, // Current + ADC_JOY, // Joystick +// ADC_SWITCH, // Switch +// ADC_SWITCH_INV, + ADC_END }; + +#ifdef ESP8266 + +#define MAX_GPI8_PIN 17 // Number of supported GPIO (0..16) +#define FLASH_PINS 6 // Number of flash chip pins +#define ADC0_PIN 17 // Pin number of ADC0 + +#define MAX_GPIO_PIN 18 // Number of supported GPIO (0..16 + ADC0) +#define MIN_FLASH_PINS 4 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8 and 11) +#define MAX_USER_PINS 14 // MAX_GPIO_PIN - MIN_FLASH_PINS +#define WEMOS_MODULE 17 // Wemos module + +const char PINS_WEMOS[] PROGMEM = "D3TXD4RXD2D1flashcFLFLolD6D7D5D8D0A0"; + +typedef struct MYIO8 { + uint8_t io[MAX_GPI8_PIN]; +} myio8; // 17 bytes + +typedef struct MYCFGIO8285 { + uint8_t io[MAX_GPI8_PIN - MIN_FLASH_PINS]; +} mycfgio8285; // 13 bytes + +typedef struct MYTMPLT8285 { + mycfgio8285 gp; + uint8_t flag; +} mytmplt8285; // 14 bytes + +typedef struct MYCFGIO8266 { + uint8_t io[MAX_GPI8_PIN - FLASH_PINS]; +} mycfgio8266; // 11 bytes + +typedef struct MYTMPLT8266 { + mycfgio8266 gp; + uint8_t flag; +} mytmplt8266; // 12 bytes + +#else // ESP32 + +#define MAX_GPIO_PIN 40 // Number of supported GPIO +#define MIN_FLASH_PINS 4 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8 and 11) +#define MAX_USER_PINS 36 // MAX_GPIO_PIN - MIN_FLASH_PINS +#define WEMOS_MODULE 0 // Wemos module + +// 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839 +const char PINS_WEMOS[] PROGMEM = "IOTXIORXIOIOflashcFLFLolIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOAOAOIAIAIAIAIAIA"; + +#endif // ESP8266 or ESP32 + +//******************************************************************************************** + +typedef struct MYIO { + uint16_t io[MAX_GPIO_PIN]; +} myio; // 18 * 2 = 36 bytes / 40 * 2 = 80 bytes + +typedef struct MYCFGIO { + uint16_t io[MAX_USER_PINS]; +} mycfgio; // 14 * 2 = 28 bytes / 36 * 2 = 72 bytes + +#define GPIO_FLAG_USED 0 // Currently no flags used + +typedef union { + uint16_t data; + struct { + uint16_t spare00 : 1; + uint16_t spare01 : 1; + uint16_t spare02 : 1; + uint16_t spare03 : 1; + uint16_t spare04 : 1; + uint16_t spare05 : 1; + uint16_t spare06 : 1; + uint16_t spare07 : 1; + uint16_t spare08 : 1; + uint16_t spare09 : 1; + uint16_t spare10 : 1; + uint16_t spare11 : 1; + uint16_t spare12 : 1; + uint16_t spare13 : 1; + uint16_t spare14 : 1; + uint16_t spare15 : 1; + }; +} gpio_flag; // 2 bytes + +typedef struct MYTMPLT { + mycfgio gp; // 28 / 72 bytes + gpio_flag flag; // 2 bytes +} mytmplt; // 30 / 74 bytes + +//******************************************************************************************** + +#ifdef ESP8266 + +// User selectable GPIO functionality +// ATTENTION: Only add at the end of this list just before GPI8_SENSOR_END +// Then add the same name(s) in a nice location in array kGpioNiceList +enum LegacyUserSelectablePins { + GPI8_NONE, // Not used + GPI8_DHT11, // DHT11 + GPI8_DHT22, // DHT21, DHT22, AM2301, AM2302, AM2321 + GPI8_SI7021, // iTead SI7021 + GPI8_DSB, // Single wire DS18B20 or DS18S20 + GPI8_I2C_SCL, // I2C SCL + GPI8_I2C_SDA, // I2C SDA + GPI8_WS2812, // WS2812 Led string + GPI8_IRSEND, // IR remote + GPI8_SWT1, // User connected external switches + GPI8_SWT2, + GPI8_SWT3, + GPI8_SWT4, + GPI8_SWT5, + GPI8_SWT6, + GPI8_SWT7, + GPI8_SWT8, + GPI8_KEY1, // Button usually connected to GPIO0 + GPI8_KEY2, + GPI8_KEY3, + GPI8_KEY4, + GPI8_REL1, // Relays + GPI8_REL2, + GPI8_REL3, + GPI8_REL4, + GPI8_REL5, + GPI8_REL6, + GPI8_REL7, + GPI8_REL8, + GPI8_REL1_INV, + GPI8_REL2_INV, + GPI8_REL3_INV, + GPI8_REL4_INV, + GPI8_REL5_INV, + GPI8_REL6_INV, + GPI8_REL7_INV, + GPI8_REL8_INV, + GPI8_PWM1, // RGB Red or C Cold White + GPI8_PWM2, // RGB Green or CW Warm White + GPI8_PWM3, // RGB Blue + GPI8_PWM4, // RGBW (Cold) White + GPI8_PWM5, // RGBCW Warm White + GPI8_CNTR1, + GPI8_CNTR2, + GPI8_CNTR3, + GPI8_CNTR4, + GPI8_PWM1_INV, // RGB Red or C Cold White + GPI8_PWM2_INV, // RGB Green or CW Warm White + GPI8_PWM3_INV, // RGB Blue + GPI8_PWM4_INV, // RGBW (Cold) White + GPI8_PWM5_INV, // RGBCW Warm White + GPI8_IRRECV, // IR receiver + GPI8_LED1, // Leds + GPI8_LED2, + GPI8_LED3, + GPI8_LED4, + GPI8_LED1_INV, + GPI8_LED2_INV, + GPI8_LED3_INV, + GPI8_LED4_INV, + GPI8_MHZ_TXD, // MH-Z19 Serial interface + GPI8_MHZ_RXD, // MH-Z19 Serial interface + GPI8_PZEM0XX_TX, // PZEM0XX Serial interface + GPI8_PZEM004_RX, // PZEM004T Serial interface + GPI8_SAIR_TX, // SenseAir Serial interface + GPI8_SAIR_RX, // SenseAir Serial interface + GPI8_SPI_CS, // SPI Chip Select + GPI8_SPI_DC, // SPI Data Direction + GPI8_BACKLIGHT, // Display backlight control + GPI8_PMS5003_RX, // Plantower PMS5003 Serial interface + GPI8_SDS0X1_RX, // Nova Fitness SDS011 Serial interface + GPI8_SBR_TX, // Serial Bridge Serial interface + GPI8_SBR_RX, // Serial Bridge Serial interface + GPI8_SR04_TRIG, // SR04 Trigger/TX pin + GPI8_SR04_ECHO, // SR04 Echo/RX pin + GPI8_SDM120_TX, // SDM120 Serial interface + GPI8_SDM120_RX, // SDM120 Serial interface + GPI8_SDM630_TX, // SDM630 Serial interface + GPI8_SDM630_RX, // SDM630 Serial interface + GPI8_TM16CLK, // TM1638 Clock + GPI8_TM16DIO, // TM1638 Data I/O + GPI8_TM16STB, // TM1638 Strobe + GPI8_SWT1_NP, // User connected external switches + GPI8_SWT2_NP, + GPI8_SWT3_NP, + GPI8_SWT4_NP, + GPI8_SWT5_NP, + GPI8_SWT6_NP, + GPI8_SWT7_NP, + GPI8_SWT8_NP, + GPI8_KEY1_NP, // Button usually connected to GPIO0 + GPI8_KEY2_NP, + GPI8_KEY3_NP, + GPI8_KEY4_NP, + GPI8_CNTR1_NP, + GPI8_CNTR2_NP, + GPI8_CNTR3_NP, + GPI8_CNTR4_NP, + GPI8_PZEM016_RX, // PZEM-014,016 Serial Modbus interface + GPI8_PZEM017_RX, // PZEM-003,017 Serial Modbus interface + GPI8_MP3_DFR562, // RB-DFR-562, DFPlayer Mini MP3 Player + GPI8_SDS0X1_TX, // Nova Fitness SDS011 Serial interface + GPI8_HX711_SCK, // HX711 Load Cell clock + GPI8_HX711_DAT, // HX711 Load Cell data + GPI8_TX2X_TXD_BLACK, // TX20/TX23 Transmission Pin + GPI8_RFSEND, // RF transmitter + GPI8_RFRECV, // RF receiver + GPI8_TUYA_TX, // Tuya Serial interface + GPI8_TUYA_RX, // Tuya Serial interface + GPI8_MGC3130_XFER, // MGC3130 Transfer + GPI8_MGC3130_RESET, // MGC3130 Reset + GPI8_SSPI_MISO, // Software SPI Master Input Client Output + GPI8_SSPI_MOSI, // Software SPI Master Output Client Input + GPI8_SSPI_SCLK, // Software SPI Serial Clock + GPI8_SSPI_CS, // Software SPI Chip Select + GPI8_SSPI_DC, // Software SPI Data or Command + GPI8_RF_SENSOR, // Rf receiver with sensor decoding + GPI8_AZ_TXD, // AZ-Instrument 7798 Serial interface + GPI8_AZ_RXD, // AZ-Instrument 7798 Serial interface + GPI8_MAX31855CS, // MAX31855 Serial interface + GPI8_MAX31855CLK, // MAX31855 Serial interface + GPI8_MAX31855DO, // MAX31855 Serial interface + GPI8_KEY1_INV, // Inverted buttons + GPI8_KEY2_INV, + GPI8_KEY3_INV, + GPI8_KEY4_INV, + GPI8_KEY1_INV_NP, // Inverted buttons without pull-up + GPI8_KEY2_INV_NP, + GPI8_KEY3_INV_NP, + GPI8_KEY4_INV_NP, + GPI8_NRG_SEL, // HLW8012/HLJ-01 Sel output (1 = Voltage) + GPI8_NRG_SEL_INV, // HLW8012/HLJ-01 Sel output (0 = Voltage) + GPI8_NRG_CF1, // HLW8012/HLJ-01 CF1 voltage / current + GPI8_HLW_CF, // HLW8012 CF power + GPI8_HJL_CF, // HJL-01/BL0937 CF power + GPI8_MCP39F5_TX, // MCP39F501 Serial interface (Shelly2) + GPI8_MCP39F5_RX, // MCP39F501 Serial interface (Shelly2) + GPI8_MCP39F5_RST, // MCP39F501 Reset (Shelly2) + GPI8_PN532_TXD, // PN532 NFC Serial Tx + GPI8_PN532_RXD, // PN532 NFC Serial Rx + GPI8_SM16716_CLK, // SM16716 CLOCK + GPI8_SM16716_DAT, // SM16716 DATA + GPI8_SM16716_SEL, // SM16716 SELECT + GPI8_DI, // my92x1 PWM input + GPI8_DCKI, // my92x1 CLK input + GPI8_CSE7766_TX, // CSE7766 Serial interface (S31 and Pow R2) - Not used anymore 20200121 + GPI8_CSE7766_RX, // CSE7766 Serial interface (S31 and Pow R2) + GPI8_ARIRFRCV, // AriLux RF Receive input + GPI8_TXD, // Serial interface + GPI8_RXD, // Serial interface + GPI8_ROT1A, // Rotary switch1 A Pin + GPI8_ROT1B, // Rotary switch1 B Pin + GPI8_ROT2A, // Rotary switch2 A Pin + GPI8_ROT2B, // Rotary switch2 B Pin + GPI8_HRE_CLOCK, // Clock/Power line for HR-E Water Meter + GPI8_HRE_DATA, // Data line for HR-E Water Meter + GPI8_ADE7953_IRQ, // ADE7953 IRQ + GPI8_LEDLNK, // Link led + GPI8_LEDLNK_INV, // Inverted link led + GPI8_ARIRFSEL, // Arilux RF Receive input selected + GPI8_BUZZER, // Buzzer + GPI8_BUZZER_INV, // Inverted buzzer + GPI8_OLED_RESET, // OLED Display Reset + GPI8_SOLAXX1_TX, // Solax Inverter tx pin + GPI8_SOLAXX1_RX, // Solax Inverter rx pin + GPI8_ZIGBEE_TX, // Zigbee Serial interface + GPI8_ZIGBEE_RX, // Zigbee Serial interface + GPI8_RDM6300_RX, // RDM6300 RX + GPI8_IBEACON_TX, // HM17 IBEACON TX + GPI8_IBEACON_RX, // HM17 IBEACON RX + GPI8_A4988_DIR, // A4988 direction pin + GPI8_A4988_STP, // A4988 step pin + GPI8_A4988_ENA, // A4988 enabled pin + GPI8_A4988_MS1, // A4988 microstep pin1 + GPI8_A4988_MS2, // A4988 microstep pin2 + GPI8_A4988_MS3, // A4988 microstep pin3 + GPI8_DDS2382_TX, // DDS2382 Serial interface + GPI8_DDS2382_RX, // DDS2382 Serial interface + GPI8_DDSU666_TX, // DDSU666 Serial interface + GPI8_DDSU666_RX, // DDSU666 Serial interface + GPI8_SM2135_CLK, // SM2135 Clk + GPI8_SM2135_DAT, // SM2135 Dat + GPI8_DEEPSLEEP, // Kill switch for deepsleep + GPI8_EXS_ENABLE, // EXS MCU Enable + GPI8_TASMOTACLIENT_TXD, // Client TX + GPI8_TASMOTACLIENT_RXD, // Client RX + GPI8_TASMOTACLIENT_RST, // Client Reset Pin + GPI8_TASMOTACLIENT_RST_INV, // Client Reset Inverted + GPI8_HPMA_RX, // Honeywell HPMA115S0 Serial interface + GPI8_HPMA_TX, // Honeywell HPMA115S0 Serial interface + GPI8_GPS_RX, // GPS serial interface + GPI8_GPS_TX, // GPS serial interface + GPI8_DSB_OUT, // Pseudo Single wire DS18B20 or DS18S20 + GPI8_DHT11_OUT, // Pseudo Single wire DHT11, DHT21, DHT22, AM2301, AM2302, AM2321 + GPI8_HM10_RX, // HM10-BLE-Mijia-bridge serial interface + GPI8_HM10_TX, // HM10-BLE-Mijia-bridge serial interface + GPI8_LE01MR_RX, // F&F LE-01MR energy meter + GPI8_LE01MR_TX, // F&F LE-01MR energy meter + GPI8_CC1101_GDO0, // CC1101 pin for RX + GPI8_CC1101_GDO2, // CC1101 pin for RX + GPI8_HRXL_RX, // Data from MaxBotix HRXL sonar range sensor + GPI8_ELECTRIQ_MOODL_TX, // ElectriQ iQ-wifiMOODL Serial TX + GPI8_AS3935, // Franklin Lightning Sensor + GPI8_PMS5003_TX, // Plantower PMS5003 Serial interface + GPI8_BOILER_OT_RX, // OpenTherm Boiler RX pin + GPI8_BOILER_OT_TX, // OpenTherm Boiler TX pin + GPI8_WINDMETER_SPEED, // WindMeter speed counter pin + GPI8_BL0940_RX, // BL0940 serial interface + GPI8_TCP_TX, // TCP Serial bridge + GPI8_TCP_RX, // TCP Serial bridge + GPI8_TELEINFO_RX, // TELEINFO serial interface + GPI8_TELEINFO_ENABLE,// TELEINFO Enable PIN + GPI8_LMT01, // LMT01 input counting pin + GPI8_IEM3000_TX, // IEM3000 Serial interface + GPI8_IEM3000_RX, // IEM3000 Serial interface + GPI8_ZIGBEE_RST, // Zigbee reset + GPI8_DYP_RX, + GPI8_SENSOR_END }; + +// Programmer selectable GPIO functionality +enum LegacyProgramSelectablePins { + GPI8_FIX_START = 251, + GPI8_SPI_MISO, // SPI MISO library fixed pin GPIO12 + GPI8_SPI_MOSI, // SPI MOSI library fixed pin GPIO13 + GPI8_SPI_CLK, // SPI Clk library fixed pin GPIO14 + GPI8_USER, // User configurable needs to be 255 + GPI8_MAX }; + +// Indexed by LegacyUserSelectablePins to convert legacy (8-bit) GPIOs const uint16_t kGpioConvert[] PROGMEM = { GPIO_NONE, AGPIO(GPIO_DHT11), // DHT11 @@ -475,558 +1182,6 @@ const uint16_t kGpioConvert[] PROGMEM = { AGPIO(GPIO_ZIGBEE_RST), // Zigbee reset AGPIO(GPIO_DYP_RX) }; -*/ - -// Text in webpage Module Parameters and commands GPIOS and GPIO -const char kSensorNames[] PROGMEM = - D_SENSOR_NONE "|" - D_SENSOR_DHT11 "|" D_SENSOR_AM2301 "|" D_SENSOR_SI7021 "|" - D_SENSOR_DS18X20 "|" - D_SENSOR_I2C_SCL "|" D_SENSOR_I2C_SDA "|" - D_SENSOR_WS2812 "|" - D_SENSOR_IRSEND "|" - D_SENSOR_SWITCH "1|" D_SENSOR_SWITCH "2|" D_SENSOR_SWITCH "3|" D_SENSOR_SWITCH "4|" D_SENSOR_SWITCH "5|" D_SENSOR_SWITCH "6|" D_SENSOR_SWITCH "7|" D_SENSOR_SWITCH "8|" - D_SENSOR_BUTTON "1|" D_SENSOR_BUTTON "2|" D_SENSOR_BUTTON "3|" D_SENSOR_BUTTON "4|" - D_SENSOR_RELAY "1|" D_SENSOR_RELAY "2|" D_SENSOR_RELAY "3|" D_SENSOR_RELAY "4|" D_SENSOR_RELAY "5|" D_SENSOR_RELAY "6|" D_SENSOR_RELAY "7|" D_SENSOR_RELAY "8|" - D_SENSOR_RELAY "1i|" D_SENSOR_RELAY "2i|" D_SENSOR_RELAY "3i|" D_SENSOR_RELAY "4i|" D_SENSOR_RELAY "5i|" D_SENSOR_RELAY "6i|" D_SENSOR_RELAY "7i|" D_SENSOR_RELAY "8i|" - D_SENSOR_PWM "1|" D_SENSOR_PWM "2|" D_SENSOR_PWM "3|" D_SENSOR_PWM "4|" D_SENSOR_PWM "5|" - D_SENSOR_COUNTER "1|" D_SENSOR_COUNTER "2|" D_SENSOR_COUNTER "3|" D_SENSOR_COUNTER "4|" - D_SENSOR_PWM "1i|" D_SENSOR_PWM "2i|" D_SENSOR_PWM "3i|" D_SENSOR_PWM "4i|" D_SENSOR_PWM "5i|" - D_SENSOR_IRRECV "|" - D_SENSOR_LED "1|" D_SENSOR_LED "2|" D_SENSOR_LED "3|" D_SENSOR_LED "4|" - D_SENSOR_LED "1i|" D_SENSOR_LED "2i|" D_SENSOR_LED "3i|" D_SENSOR_LED "4i|" - D_SENSOR_MHZ_TX "|" D_SENSOR_MHZ_RX "|" - D_SENSOR_PZEM0XX_TX "|" D_SENSOR_PZEM004_RX "|" - D_SENSOR_SAIR_TX "|" D_SENSOR_SAIR_RX "|" - D_SENSOR_SPI_CS "|" D_SENSOR_SPI_DC "|" D_SENSOR_BACKLIGHT "|" - D_SENSOR_PMS5003_RX "|" D_SENSOR_SDS0X1_RX "|" - D_SENSOR_SBR_TX "|" D_SENSOR_SBR_RX "|" - D_SENSOR_SR04_TRIG "|" D_SENSOR_SR04_ECHO "|" - D_SENSOR_SDM120_TX "|" D_SENSOR_SDM120_RX "|" - D_SENSOR_SDM630_TX "|" D_SENSOR_SDM630_RX "|" - D_SENSOR_TM1638_CLK "|" D_SENSOR_TM1638_DIO "|" D_SENSOR_TM1638_STB "|" - D_SENSOR_SWITCH "1n|" D_SENSOR_SWITCH "2n|" D_SENSOR_SWITCH "3n|" D_SENSOR_SWITCH "4n|" D_SENSOR_SWITCH "5n|" D_SENSOR_SWITCH "6n|" D_SENSOR_SWITCH "7n|" D_SENSOR_SWITCH "8n|" - D_SENSOR_BUTTON "1n|" D_SENSOR_BUTTON "2n|" D_SENSOR_BUTTON "3n|" D_SENSOR_BUTTON "4n|" - D_SENSOR_COUNTER "1n|" D_SENSOR_COUNTER "2n|" D_SENSOR_COUNTER "3n|" D_SENSOR_COUNTER "4n|" - D_SENSOR_PZEM016_RX "|" D_SENSOR_PZEM017_RX "|" - D_SENSOR_DFR562 "|" D_SENSOR_SDS0X1_TX "|" - D_SENSOR_HX711_SCK "|" D_SENSOR_HX711_DAT "|" - D_SENSOR_TX2X_TX "|" - D_SENSOR_RFSEND "|" D_SENSOR_RFRECV "|" - D_SENSOR_TUYA_TX "|" D_SENSOR_TUYA_RX "|" - D_SENSOR_MGC3130_XFER "|" D_SENSOR_MGC3130_RESET "|" - D_SENSOR_SSPI_MISO "|" D_SENSOR_SSPI_MOSI "|" D_SENSOR_SSPI_SCLK "|" D_SENSOR_SSPI_CS "|" D_SENSOR_SSPI_DC "|" - D_SENSOR_RF_SENSOR "|" - D_SENSOR_AZ_TX "|" D_SENSOR_AZ_RX "|" - D_SENSOR_MAX31855_CS "|" D_SENSOR_MAX31855_CLK "|" D_SENSOR_MAX31855_DO "|" - D_SENSOR_BUTTON "1i|" D_SENSOR_BUTTON "2i|" D_SENSOR_BUTTON "3i|" D_SENSOR_BUTTON "4i|" - D_SENSOR_BUTTON "1in|" D_SENSOR_BUTTON "2in|" D_SENSOR_BUTTON "3in|" D_SENSOR_BUTTON "4in|" - D_SENSOR_NRG_SEL "|" D_SENSOR_NRG_SEL "i|" D_SENSOR_NRG_CF1 "|" D_SENSOR_HLW_CF "|" D_SENSOR_HJL_CF "|" - D_SENSOR_MCP39F5_TX "|" D_SENSOR_MCP39F5_RX "|" D_SENSOR_MCP39F5_RST "|" - D_SENSOR_PN532_TX "|" D_SENSOR_PN532_RX "|" - D_SENSOR_SM16716_CLK "|" D_SENSOR_SM16716_DAT "|" D_SENSOR_SM16716_POWER "|" - D_SENSOR_MY92X1_DI "|" D_SENSOR_MY92X1_DCKI "|" - D_SENSOR_CSE7766_TX "|" D_SENSOR_CSE7766_RX "|" - D_SENSOR_ARIRFRCV "|" D_SENSOR_TXD "|" D_SENSOR_RXD "|" - D_SENSOR_ROTARY "1a|" D_SENSOR_ROTARY "1b|" D_SENSOR_ROTARY "2a|" D_SENSOR_ROTARY "2b|" - D_SENSOR_HRE_CLOCK "|" D_SENSOR_HRE_DATA "|" - D_SENSOR_ADE7953_IRQ "|" - D_SENSOR_LED_LINK "|" D_SENSOR_LED_LINK "i|" - D_SENSOR_ARIRFSEL "|" - D_SENSOR_BUZZER "|" D_SENSOR_BUZZER "i|" - D_SENSOR_OLED_RESET "|" - D_SENSOR_SOLAXX1_TX "|" D_SENSOR_SOLAXX1_RX "|" - D_SENSOR_ZIGBEE_TXD "|" D_SENSOR_ZIGBEE_RXD "|" - D_SENSOR_RDM6300_RX "|" - D_SENSOR_IBEACON_TX "|" D_SENSOR_IBEACON_RX "|" - D_SENSOR_A4988_DIR "|" D_SENSOR_A4988_STP "|" D_SENSOR_A4988_ENA "|" D_SENSOR_A4988_MS1 "|" D_SENSOR_A4988_MS2 "|" D_SENSOR_A4988_MS3 "|" - D_SENSOR_DDS2382_TX "|" D_SENSOR_DDS2382_RX "|" - D_SENSOR_DDSU666_TX "|" D_SENSOR_DDSU666_RX "|" - D_SENSOR_SM2135_CLK "|" D_SENSOR_SM2135_DAT "|" - D_SENSOR_DEEPSLEEP "|" D_SENSOR_EXS_ENABLE "|" - D_SENSOR_CLIENT_TX "|" D_SENSOR_CLIENT_RX "|" D_SENSOR_CLIENT_RESET "|" D_SENSOR_CLIENT_RESET "i|" - D_SENSOR_HPMA_RX "|" D_SENSOR_HPMA_TX "|" - D_SENSOR_GPS_RX "|" D_SENSOR_GPS_TX "|" - D_SENSOR_DS18X20 "o|" D_SENSOR_DHT11 "o|" - D_SENSOR_HM10_RX "|" D_SENSOR_HM10_TX "|" - D_SENSOR_LE01MR_RX "|" D_SENSOR_LE01MR_TX "|" - D_SENSOR_CC1101_GDO0 "|" D_SENSOR_CC1101_GDO2 "|" - D_SENSOR_HRXL_RX "|" - D_SENSOR_ELECTRIQ_MOODL "|" - D_SENSOR_AS3935 "|" D_SENSOR_PMS5003_TX "|" - D_SENSOR_BOILER_OT_RX "|" D_SENSOR_BOILER_OT_TX "|" - D_SENSOR_WINDMETER_SPEED "|" - D_SENSOR_BL0940_RX "|" - D_SENSOR_TCP_TXD "|" D_SENSOR_TCP_RXD "|" - D_SENSOR_TELEINFO_RX "|" D_SENSOR_TELEINFO_ENABLE "|" - D_SENSOR_LMT01_PULSE "|" - D_SENSOR_IEM3000_TX "|" D_SENSOR_IEM3000_RX "|" - D_SENSOR_ZIGBEE_RST "|" - D_SENSOR_DYP_RX - ; - -const char kSensorNamesFixed[] PROGMEM = - D_SENSOR_SPI_MISO "|" D_SENSOR_SPI_MOSI "|" D_SENSOR_SPI_CLK "|" - D_SENSOR_USER; - -const uint8_t kGpioNiceList[] PROGMEM = { - GPIO_NONE, // Not used - GPIO_KEY1, // Buttons - GPIO_KEY1_NP, - GPIO_KEY1_INV, - GPIO_KEY1_INV_NP, - GPIO_KEY2, - GPIO_KEY2_NP, - GPIO_KEY2_INV, - GPIO_KEY2_INV_NP, - GPIO_KEY3, - GPIO_KEY3_NP, - GPIO_KEY3_INV, - GPIO_KEY3_INV_NP, - GPIO_KEY4, - GPIO_KEY4_NP, - GPIO_KEY4_INV, - GPIO_KEY4_INV_NP, - GPIO_SWT1, // User connected external switches - GPIO_SWT1_NP, - GPIO_SWT2, - GPIO_SWT2_NP, - GPIO_SWT3, - GPIO_SWT3_NP, - GPIO_SWT4, - GPIO_SWT4_NP, - GPIO_SWT5, - GPIO_SWT5_NP, - GPIO_SWT6, - GPIO_SWT6_NP, - GPIO_SWT7, - GPIO_SWT7_NP, - GPIO_SWT8, - GPIO_SWT8_NP, -#ifdef ROTARY_V1 - GPIO_ROT1A, // Rotary switch1 A Pin - GPIO_ROT1B, // Rotary switch1 B Pin - GPIO_ROT2A, // Rotary switch2 A Pin - GPIO_ROT2B, // Rotary switch2 B Pin -#endif - GPIO_REL1, // Relays - GPIO_REL1_INV, - GPIO_REL2, - GPIO_REL2_INV, - GPIO_REL3, - GPIO_REL3_INV, - GPIO_REL4, - GPIO_REL4_INV, - GPIO_REL5, - GPIO_REL5_INV, - GPIO_REL6, - GPIO_REL6_INV, - GPIO_REL7, - GPIO_REL7_INV, - GPIO_REL8, - GPIO_REL8_INV, - GPIO_LED1, // Leds - GPIO_LED1_INV, - GPIO_LED2, - GPIO_LED2_INV, - GPIO_LED3, - GPIO_LED3_INV, - GPIO_LED4, - GPIO_LED4_INV, - GPIO_LEDLNK, // Link led - GPIO_LEDLNK_INV, // Inverted link led - GPIO_PWM1, // RGB Red or C Cold White - GPIO_PWM1_INV, - GPIO_PWM2, // RGB Green or CW Warm White - GPIO_PWM2_INV, - GPIO_PWM3, // RGB Blue - GPIO_PWM3_INV, - GPIO_PWM4, // RGBW (Cold) White - GPIO_PWM4_INV, - GPIO_PWM5, // RGBCW Warm White - GPIO_PWM5_INV, -#ifdef USE_COUNTER - GPIO_CNTR1, // Counters - GPIO_CNTR1_NP, - GPIO_CNTR2, - GPIO_CNTR2_NP, - GPIO_CNTR3, - GPIO_CNTR3_NP, - GPIO_CNTR4, - GPIO_CNTR4_NP, -#endif -#ifdef USE_BUZZER - GPIO_BUZZER, // Buzzer - GPIO_BUZZER_INV, // Inverted buzzer -#endif - GPIO_TXD, // Serial interface - GPIO_RXD, // Serial interface -#ifdef USE_I2C - GPIO_I2C_SCL, // I2C SCL - GPIO_I2C_SDA, // I2C SDA -#endif -#ifdef USE_SPI - GPIO_SPI_CS, // SPI Chip Select - GPIO_SPI_DC, // SPI Data Direction -#endif - GPIO_SSPI_MISO, // Software SPI Master Input Client Output - GPIO_SSPI_MOSI, // Software SPI Master Output Client Input - GPIO_SSPI_SCLK, // Software SPI Serial Clock - GPIO_SSPI_CS, // Software SPI Chip Select - GPIO_SSPI_DC, // Software SPI Data or Command -#ifdef USE_DISPLAY - GPIO_BACKLIGHT, // Display backlight control - GPIO_OLED_RESET, // OLED Display Reset -#endif -#ifdef USE_DHT - GPIO_DHT11, // DHT11 - GPIO_DHT22, // DHT21, DHT22, AM2301, AM2302, AM2321 - GPIO_SI7021, // iTead SI7021 - GPIO_DHT11_OUT, // Pseudo Single wire DHT11, DHT21, DHT22, AM2301, AM2302, AM2321 -#endif -#ifdef USE_DS18x20 - GPIO_DSB, // Single wire DS18B20 or DS18S20 - GPIO_DSB_OUT, // Pseudo Single wire DS18B20 or DS18S20 -#endif -#ifdef USE_LMT01 // LMT01, count pulses on GPIO - GPIO_LMT01, -#endif - -// Light -#ifdef USE_LIGHT -#ifdef USE_WS2812 - GPIO_WS2812, // WS2812 Led string -#endif -#ifdef USE_ARILUX_RF - GPIO_ARIRFRCV, // AriLux RF Receive input - GPIO_ARIRFSEL, // Arilux RF Receive input selected -#endif -#ifdef USE_MY92X1 - GPIO_DI, // my92x1 PWM input - GPIO_DCKI, // my92x1 CLK input -#endif // USE_MY92X1 -#ifdef USE_SM16716 - GPIO_SM16716_CLK, // SM16716 CLOCK - GPIO_SM16716_DAT, // SM16716 DATA - GPIO_SM16716_SEL, // SM16716 SELECT -#endif // USE_SM16716 -#ifdef USE_SM2135 - GPIO_SM2135_CLK, // SM2135 CLOCK - GPIO_SM2135_DAT, // SM2135 DATA -#endif // USE_SM2135 -#ifdef USE_TUYA_MCU - GPIO_TUYA_TX, // Tuya Serial interface - GPIO_TUYA_RX, // Tuya Serial interface -#endif -#ifdef USE_EXS_DIMMER - GPIO_EXS_ENABLE, // EXS MCU Enable -#endif -#ifdef USE_ELECTRIQ_MOODL - GPIO_ELECTRIQ_MOODL_TX, -#endif -#endif // USE_LIGHT - -#if defined(USE_IR_REMOTE) || defined(USE_IR_REMOTE_FULL) - GPIO_IRSEND, // IR remote -#if defined(USE_IR_RECEIVE) || defined(USE_IR_REMOTE_FULL) - GPIO_IRRECV, // IR receiver -#endif -#endif - -#ifdef USE_RC_SWITCH - GPIO_RFSEND, // RF transmitter - GPIO_RFRECV, // RF receiver -#endif -#ifdef USE_RF_SENSOR - GPIO_RF_SENSOR, // Rf receiver with sensor decoding -#endif -#ifdef USE_SR04 - GPIO_SR04_TRIG, // SR04 Tri/TXgger pin - GPIO_SR04_ECHO, // SR04 Ech/RXo pin -#endif -#ifdef USE_TM1638 - GPIO_TM16CLK, // TM1638 Clock - GPIO_TM16DIO, // TM1638 Data I/O - GPIO_TM16STB, // TM1638 Strobe -#endif -#ifdef USE_HX711 - GPIO_HX711_SCK, // HX711 Load Cell clock - GPIO_HX711_DAT, // HX711 Load Cell data -#endif - -// Energy sensors -#ifdef USE_ENERGY_SENSOR -#ifdef USE_HLW8012 - GPIO_NRG_SEL, // HLW8012/HLJ-01 Sel output (1 = Voltage) - GPIO_NRG_SEL_INV, // HLW8012/HLJ-01 Sel output (0 = Voltage) - GPIO_NRG_CF1, // HLW8012/HLJ-01 CF1 voltage / current - GPIO_HLW_CF, // HLW8012 CF power - GPIO_HJL_CF, // HJL-01/BL0937 CF power -#endif -#if defined(USE_I2C) && defined(USE_ADE7953) - GPIO_ADE7953_IRQ, // ADE7953 IRQ -#endif -#ifdef USE_CSE7766 - GPIO_CSE7766_TX, // CSE7766 Serial interface (S31 and Pow R2) - GPIO_CSE7766_RX, // CSE7766 Serial interface (S31 and Pow R2) -#endif -#ifdef USE_MCP39F501 - GPIO_MCP39F5_TX, // MCP39F501 Serial interface (Shelly2) - GPIO_MCP39F5_RX, // MCP39F501 Serial interface (Shelly2) - GPIO_MCP39F5_RST, // MCP39F501 Reset (Shelly2) -#endif -#if defined(USE_PZEM004T) || defined(USE_PZEM_AC) || defined(USE_PZEM_DC) - GPIO_PZEM0XX_TX, // PZEM0XX Serial interface -#endif -#ifdef USE_PZEM004T - GPIO_PZEM004_RX, // PZEM004T Serial interface -#endif -#ifdef USE_PZEM_AC - GPIO_PZEM016_RX, // PZEM-014,016 Serial Modbus interface -#endif -#ifdef USE_PZEM_DC - GPIO_PZEM017_RX, // PZEM-003,017 Serial Modbus interface -#endif -#ifdef USE_SDM120 - GPIO_SDM120_TX, // SDM120 Serial interface - GPIO_SDM120_RX, // SDM120 Serial interface -#endif -#ifdef USE_SDM630 - GPIO_SDM630_TX, // SDM630 Serial interface - GPIO_SDM630_RX, // SDM630 Serial interface -#endif -#ifdef USE_DDS2382 - GPIO_DDS2382_TX, // DDS2382 Serial interface - GPIO_DDS2382_RX, // DDS2382 Serial interface -#endif -#ifdef USE_DDSU666 - GPIO_DDSU666_TX, // DDSU666 Serial interface - GPIO_DDSU666_RX, // DDSU666 Serial interface -#endif -#ifdef USE_SOLAX_X1 - GPIO_SOLAXX1_TX, // Solax Inverter tx pin - GPIO_SOLAXX1_RX, // Solax Inverter rx pin -#endif -#ifdef USE_LE01MR - GPIO_LE01MR_RX, // F7F LE-01MR energy meter rx pin - GPIO_LE01MR_TX, // F7F LE-01MR energy meter tx pin -#endif -#ifdef USE_BL0940 - GPIO_BL0940_RX, // BL0940 Serial interface -#endif -#ifdef USE_IEM3000 - GPIO_IEM3000_TX, // IEM3000 Serial interface - GPIO_IEM3000_RX, // IEM3000 Serial interface -#endif -#endif // USE_ENERGY_SENSOR - -// Serial -#ifdef USE_SERIAL_BRIDGE - GPIO_SBR_TX, // Serial Bridge Serial interface - GPIO_SBR_RX, // Serial Bridge Serial interface -#endif -#ifdef USE_TCP_BRIDGE - GPIO_TCP_TX, // TCP Serial bridge - GPIO_TCP_RX, // TCP Serial bridge -#endif -#ifdef USE_ZIGBEE - GPIO_ZIGBEE_TX, // Zigbee Serial interface - GPIO_ZIGBEE_RX, // Zigbee Serial interface - GPIO_ZIGBEE_RST, // Zigbee reset -#endif -#ifdef USE_MHZ19 - GPIO_MHZ_TXD, // MH-Z19 Serial interface - GPIO_MHZ_RXD, // MH-Z19 Serial interface -#endif -#ifdef USE_SENSEAIR - GPIO_SAIR_TX, // SenseAir Serial interface - GPIO_SAIR_RX, // SenseAir Serial interface -#endif -#ifdef USE_NOVA_SDS - GPIO_SDS0X1_TX, // Nova Fitness SDS011 Serial interface - GPIO_SDS0X1_RX, // Nova Fitness SDS011 Serial interface -#endif -#ifdef USE_HPMA - GPIO_HPMA_TX, // Honeywell HPMA115S0 Serial interface - GPIO_HPMA_RX, // Honeywell HPMA115S0 Serial interface -#endif -#ifdef USE_PMS5003 - GPIO_PMS5003_TX, // Plantower PMS5003 Serial interface - GPIO_PMS5003_RX, // Plantower PMS5003 Serial interface -#endif -#if defined(USE_TX20_WIND_SENSOR) || defined(USE_TX23_WIND_SENSOR) - GPIO_TX2X_TXD_BLACK, // TX20/TX23 Transmission Pin -#endif -#ifdef USE_WINDMETER - GPIO_WINDMETER_SPEED, -#endif -#ifdef USE_MP3_PLAYER - GPIO_MP3_DFR562, // RB-DFR-562, DFPlayer Mini MP3 Player Serial interface -#endif -#ifdef USE_AZ7798 - GPIO_AZ_TXD, // AZ-Instrument 7798 CO2 datalogger Serial interface - GPIO_AZ_RXD, // AZ-Instrument 7798 CO2 datalogger Serial interface -#endif -#ifdef USE_PN532_HSU - GPIO_PN532_TXD, // PN532 HSU Tx - GPIO_PN532_RXD, // PN532 HSU Rx -#endif -#ifdef USE_TASMOTA_CLIENT - GPIO_TASMOTACLIENT_TXD, // Tasmota Client TX - GPIO_TASMOTACLIENT_RXD, // Tasmota Client RX - GPIO_TASMOTACLIENT_RST, // Tasmota Client Reset - GPIO_TASMOTACLIENT_RST_INV, // Tasmota Client Reset Inverted -#endif -#ifdef USE_RDM6300 - GPIO_RDM6300_RX, -#endif -#ifdef USE_IBEACON - GPIO_IBEACON_TX, - GPIO_IBEACON_RX, -#endif -#ifdef USE_GPS - GPIO_GPS_TX, // GPS serial interface - GPIO_GPS_RX, // GPS serial interface -#endif -#ifdef USE_HM10 - GPIO_HM10_TX, // GPS serial interface - GPIO_HM10_RX, // GPS serial interface -#endif -#ifdef USE_OPENTHERM - GPIO_BOILER_OT_TX, - GPIO_BOILER_OT_RX, -#endif - -#ifdef USE_MGC3130 - GPIO_MGC3130_XFER, - GPIO_MGC3130_RESET, -#endif -#ifdef USE_MAX31855 - GPIO_MAX31855CS, // MAX31855 Serial interface - GPIO_MAX31855CLK, // MAX31855 Serial interface - GPIO_MAX31855DO, // MAX31855 Serial interface -#endif -#ifdef USE_HRE - GPIO_HRE_CLOCK, - GPIO_HRE_DATA, -#endif -#ifdef USE_A4988_STEPPER - GPIO_A4988_DIR, // A4988 direction pin - GPIO_A4988_STP, // A4988 step pin - // folowing are not mandatory - GPIO_A4988_ENA, // A4988 enabled pin - GPIO_A4988_MS1, // A4988 microstep pin1 - GPIO_A4988_MS2, // A4988 microstep pin2 - GPIO_A4988_MS3, // A4988 microstep pin3 -#endif -#ifdef USE_DEEPSLEEP - GPIO_DEEPSLEEP, -#endif -#ifdef USE_KEELOQ - GPIO_CC1101_GDO0, // CC1101 pin for RX - GPIO_CC1101_GDO2, // CC1101 pin for RX -#endif -#ifdef USE_HRXL - GPIO_HRXL_RX, -#endif -#ifdef USE_DYP - GPIO_DYP_RX, -#endif -#ifdef USE_AS3935 - GPIO_AS3935, // AS3935 IRQ Pin -#endif -#ifdef USE_TELEINFO - GPIO_TELEINFO_RX, - GPIO_TELEINFO_ENABLE, -#endif -}; - -/********************************************************************************************/ - -// User selectable ADC0 functionality -enum UserSelectableAdc0 { - ADC0_NONE, // Not used - ADC0_INPUT, // Analog input - ADC0_TEMP, // Thermistor - ADC0_LIGHT, // Light sensor - ADC0_BUTTON, // Button - ADC0_BUTTON_INV, - ADC0_RANGE, // Range - ADC0_CT_POWER, // Current -// ADC0_SWITCH, // Switch -// ADC0_SWITCH_INV, - ADC0_END }; - -// Programmer selectable ADC0 functionality -enum ProgramSelectableAdc0 { - ADC0_FIX_START = 14, - ADC0_USER, // User configurable needs to be 15 - ADC0_MAX }; - -// Text in webpage Module Parameters and commands ADC -const char kAdc0Names[] PROGMEM = - D_SENSOR_NONE "|" D_ANALOG_INPUT "|" - D_TEMPERATURE "|" D_LIGHT "|" - D_SENSOR_BUTTON "|" D_SENSOR_BUTTON "i|" - D_RANGE "|" - D_CT_POWER "|" -// D_SENSOR_SWITCH "|" D_SENSOR_SWITCH "i|" - ; - -/*********************************************************************************************\ - * ATTENTION: No user changeable features beyond this point - do not add templates !!! -\*********************************************************************************************/ - -#define MAX_GPIO_PIN 17 // Number of supported GPIO -#define FLASH_PINS 6 // Number of flash chip pins -#define MIN_FLASH_PINS 4 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8 and 11) -#define MAX_USER_PINS 13 // MAX_GPIO_PIN - MIN_FLASH_PINS -#define ADC0_PIN 17 // Pin number of ADC0 -#define WEMOS_MODULE 17 // Wemos module - -const char PINS_WEMOS[] PROGMEM = "D3TXD4RXD2D1flashcFLFLolD6D7D5D8D0A0"; - -/********************************************************************************************/ - -typedef struct MYIO { - uint8_t io[MAX_GPIO_PIN]; -} myio; - -typedef struct MYCFGIO { - uint8_t io[MAX_GPIO_PIN - MIN_FLASH_PINS]; -} mycfgio; - -typedef struct MYCFGIO8266 { - uint8_t io[MAX_GPIO_PIN - FLASH_PINS]; -} mycfgio8266; - -#define GPIO_FLAG_USED 0 // Currently two flags used - -#define GPIO_FLAG_SPARE04 16 -#define GPIO_FLAG_SPARE05 32 -#define GPIO_FLAG_SPARE06 64 -#define GPIO_FLAG_SPARE07 128 - -typedef union { - uint8_t data; - struct { - uint8_t adc0 : 4; // Allow ADC0 when define USE_ADC_VCC is disabled - uint8_t spare04 : 1; - uint8_t spare05 : 1; - uint8_t spare06 : 1; - uint8_t spare07 : 1; - }; -} gpio_flag; - -typedef struct MYTMPLT { - mycfgio gp; - gpio_flag flag; -} mytmplt; - -typedef struct MYTMPLT8266 { - mycfgio8266 gp; - gpio_flag flag; -} mytmplt8266; /********************************************************************************************/ // Supported hardware modules @@ -1256,11 +1411,11 @@ const uint8_t kModuleTemplateList[MAXMODULE] PROGMEM = { const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { { // SONOFF_BASIC - Sonoff Basic (ESP8266) - GPIO_KEY1, // GPIO00 Button - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_USER, // GPIO02 Only available on newer Sonoff Basic R2 V1 - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_USER, // GPIO04 Optional sensor + GPI8_KEY1, // GPIO00 Button + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO02 Only available on newer Sonoff Basic R2 V1 + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_USER, // GPIO04 Optional sensor 0, // GPIO05 // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1268,38 +1423,38 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) - GPIO_LED1_INV, // GPIO13 Green Led (0 = On, 1 = Off) - Link and Power status - GPIO_USER, // GPIO14 Optional sensor + GPI8_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) + GPI8_LED1_INV, // GPIO13 Green Led (0 = On, 1 = Off) - Link and Power status + GPI8_USER, // GPIO14 Optional sensor 0, // GPIO15 0, // GPIO16 0 // ADC0 Analog input }, { // SONOFF_SV - Sonoff SV (ESP8266) - GPIO_KEY1, // GPIO00 Button - GPIO_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_KEY1, // GPIO00 Button + GPI8_USER, // GPIO01 Serial RXD and Optional sensor 0, - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_USER, // GPIO04 Optional sensor - GPIO_USER, // GPIO05 Optional sensor + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_USER, // GPIO04 Optional sensor + GPI8_USER, // GPIO05 Optional sensor // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) - GPIO_LED1_INV, // GPIO13 Green Led (0 = On, 1 = Off) - Link and Power status - GPIO_USER, // GPIO14 Optional sensor + GPI8_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) + GPI8_LED1_INV, // GPIO13 Green Led (0 = On, 1 = Off) - Link and Power status + GPI8_USER, // GPIO14 Optional sensor 0, 0, - ADC0_USER // ADC0 Analog input + GPI8_USER // ADC0 Analog input }, { // SONOFF_DUAL - Sonoff Dual (ESP8266) - GPIO_USER, // GPIO00 Pad - GPIO_TXD, // GPIO01 Relay control + GPI8_USER, // GPIO00 Pad + GPI8_TXD, // GPIO01 Relay control 0, - GPIO_RXD, // GPIO03 Relay control - GPIO_USER, // GPIO04 Optional sensor + GPI8_RXD, // GPIO03 Relay control + GPI8_USER, // GPIO04 Optional sensor 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1308,91 +1463,91 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) 0, - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status - GPIO_USER, // GPIO14 Optional sensor + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_USER, // GPIO14 Optional sensor 0, 0, 0 }, { // SONOFF_POW - Sonoff Pow (ESP8266 - HLW8012) - GPIO_KEY1, // GPIO00 Button + GPI8_KEY1, // GPIO00 Button 0, 0, 0, 0, - GPIO_NRG_SEL, // GPIO05 HLW8012 Sel output (1 = Voltage) + GPI8_NRG_SEL, // GPIO05 HLW8012 Sel output (1 = Voltage) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) - GPIO_NRG_CF1, // GPIO13 HLW8012 CF1 voltage / current - GPIO_HLW_CF, // GPIO14 HLW8012 CF power - GPIO_LED1, // GPIO15 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) + GPI8_NRG_CF1, // GPIO13 HLW8012 CF1 voltage / current + GPI8_HLW_CF, // GPIO14 HLW8012 CF power + GPI8_LED1, // GPIO15 Blue Led (0 = On, 1 = Off) - Link and Power status 0, 0 }, { // SONOFF_LED - Sonoff LED (ESP8266) - GPIO_KEY1, // GPIO00 Button + GPI8_KEY1, // GPIO00 Button 0, 0, 0, - GPIO_USER, // GPIO04 Optional sensor (PWM3 Green) - GPIO_USER, // GPIO05 Optional sensor (PWM2 Red) + GPI8_USER, // GPIO04 Optional sensor (PWM3 Green) + GPI8_USER, // GPIO05 Optional sensor (PWM2 Red) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM1, // GPIO12 Cold light (PWM0 Cold) - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status - GPIO_PWM2, // GPIO14 Warm light (PWM1 Warm) - GPIO_USER, // GPIO15 Optional sensor (PWM4 Blue) + GPI8_PWM1, // GPIO12 Cold light (PWM0 Cold) + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_PWM2, // GPIO14 Warm light (PWM1 Warm) + GPI8_USER, // GPIO15 Optional sensor (PWM4 Blue) 0, 0 }, { // ELECTRODRAGON - ElectroDragon IoT Relay Board (ESP8266) - GPIO_KEY2, // GPIO00 Button 2 - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_KEY1, // GPIO02 Button 1 - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_USER, // GPIO04 Optional sensor - GPIO_USER, // GPIO05 Optional sensor + GPI8_KEY2, // GPIO00 Button 2 + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_KEY1, // GPIO02 Button 1 + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_USER, // GPIO04 Optional sensor + GPI8_USER, // GPIO05 Optional sensor // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL2, // GPIO12 Red Led and Relay 2 (0 = Off, 1 = On) - GPIO_REL1, // GPIO13 Red Led and Relay 1 (0 = Off, 1 = On) - GPIO_USER, // GPIO14 Optional sensor - GPIO_USER, // GPIO15 Optional sensor - GPIO_LED1, // GPIO16 Green/Blue Led (1 = On, 0 = Off) - Link and Power status - ADC0_USER // ADC0 A0 Analog input + GPI8_REL2, // GPIO12 Red Led and Relay 2 (0 = Off, 1 = On) + GPI8_REL1, // GPIO13 Red Led and Relay 1 (0 = Off, 1 = On) + GPI8_USER, // GPIO14 Optional sensor + GPI8_USER, // GPIO15 Optional sensor + GPI8_LED1, // GPIO16 Green/Blue Led (1 = On, 0 = Off) - Link and Power status + GPI8_USER // ADC0 A0 Analog input }, { // EXS_RELAY - ES-Store Latching relay(s) (ESP8266) // https://ex-store.de/ESP8266-WiFi-Relay-V31 // V3.1 Module Pin 1 VCC 3V3, Module Pin 6 GND // https://ex-store.de/2-Kanal-WiFi-WLan-Relay-V5-Blackline-fuer-Unterputzmontage - GPIO_USER, // GPIO00 V3.1 Module Pin 8 - V5.0 Module Pin 4 - GPIO_USER, // GPIO01 UART0_TXD V3.1 Module Pin 2 - V5.0 Module Pin 3 - GPIO_USER, // GPIO02 V3.1 Module Pin 7 - GPIO_USER, // GPIO03 UART0_RXD V3.1 Module Pin 3 - GPIO_USER, // GPIO04 V3.1 Module Pin 10 - V5.0 Module Pin 2 - GPIO_USER, // GPIO05 V3.1 Module Pin 9 - V5.0 Module Pin 1 + GPI8_USER, // GPIO00 V3.1 Module Pin 8 - V5.0 Module Pin 4 + GPI8_USER, // GPIO01 UART0_TXD V3.1 Module Pin 2 - V5.0 Module Pin 3 + GPI8_USER, // GPIO02 V3.1 Module Pin 7 + GPI8_USER, // GPIO03 UART0_RXD V3.1 Module Pin 3 + GPI8_USER, // GPIO04 V3.1 Module Pin 10 - V5.0 Module Pin 2 + GPI8_USER, // GPIO05 V3.1 Module Pin 9 - V5.0 Module Pin 1 // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Relay1 ( 1 = Off) - GPIO_REL2, // GPIO13 Relay1 ( 1 = On) - GPIO_USER, // GPIO14 V3.1 Module Pin 5 - V5.0 GPIO_REL3_INV Relay2 ( 1 = Off) - GPIO_LED1, // GPIO15 V5.0 LED1 - Link and Power status - GPIO_USER, // GPIO16 V3.1 Module Pin 4 - V5.0 GPIO_REL4_INV Relay2 ( 1 = On) + GPI8_REL1, // GPIO12 Relay1 ( 1 = Off) + GPI8_REL2, // GPIO13 Relay1 ( 1 = On) + GPI8_USER, // GPIO14 V3.1 Module Pin 5 - V5.0 GPI8_REL3_INV Relay2 ( 1 = Off) + GPI8_LED1, // GPIO15 V5.0 LED1 - Link and Power status + GPI8_USER, // GPIO16 V3.1 Module Pin 4 - V5.0 GPI8_REL4_INV Relay2 ( 1 = On) 0 }, { // WION - Indoor Tap (ESP8266) // https://www.amazon.com/gp/product/B00ZYLUBJU/ref=s9_acsd_al_bw_c_x_3_w - GPIO_USER, // GPIO00 Optional sensor (pm clock) + GPI8_USER, // GPIO00 Optional sensor (pm clock) 0, - GPIO_LED1, // GPIO02 Green Led (1 = On, 0 = Off) - Link and Power status + GPI8_LED1, // GPIO02 Green Led (1 = On, 0 = Off) - Link and Power status 0, 0, 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1400,56 +1555,56 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, // GPIO12 Optional sensor (pm data) - GPIO_KEY1, // GPIO13 Button + GPI8_USER, // GPIO12 Optional sensor (pm data) + GPI8_KEY1, // GPIO13 Button 0, - GPIO_REL1, // GPIO15 Relay (0 = Off, 1 = On) + GPI8_REL1, // GPIO15 Relay (0 = Off, 1 = On) 0, 0 }, { // SONOFF_DEV - Sonoff Dev (ESP8266) - GPIO_KEY1, // GPIO00 E-FW Button - GPIO_USER, // GPIO01 TX Serial RXD and Optional sensor + GPI8_KEY1, // GPIO00 E-FW Button + GPI8_USER, // GPIO01 TX Serial RXD and Optional sensor 0, // GPIO02 - GPIO_USER, // GPIO03 RX Serial TXD and Optional sensor - GPIO_USER, // GPIO04 Optional sensor - GPIO_USER, // GPIO05 Optional sensor + GPI8_USER, // GPIO03 RX Serial TXD and Optional sensor + GPI8_USER, // GPIO04 Optional sensor + GPI8_USER, // GPIO05 Optional sensor // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, // GPIO12 - GPIO_USER, // GPIO13 BLUE LED - GPIO_USER, // GPIO14 Optional sensor + GPI8_USER, // GPIO12 + GPI8_USER, // GPIO13 BLUE LED + GPI8_USER, // GPIO14 Optional sensor 0, // GPIO15 0, // GPIO16 - ADC0_USER // ADC0 A0 Analog input + GPI8_USER // ADC0 A0 Analog input }, { // H801 - Lixada H801 Wifi (ESP8266) - GPIO_USER, // GPIO00 E-FW Button - GPIO_LED1, // GPIO01 Green LED - Link and Power status - GPIO_USER, // GPIO02 TX and Optional sensor - Pin next to TX on the PCB - GPIO_USER, // GPIO03 RX and Optional sensor - Pin next to GND on the PCB - GPIO_PWM5, // GPIO04 W2 - PWM5 - GPIO_LED2_INV, // GPIO05 Red LED + GPI8_USER, // GPIO00 E-FW Button + GPI8_LED1, // GPIO01 Green LED - Link and Power status + GPI8_USER, // GPIO02 TX and Optional sensor - Pin next to TX on the PCB + GPI8_USER, // GPIO03 RX and Optional sensor - Pin next to GND on the PCB + GPI8_PWM5, // GPIO04 W2 - PWM5 + GPI8_LED2_INV, // GPIO05 Red LED // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM3, // GPIO12 Blue - GPIO_PWM2, // GPIO13 Green - GPIO_PWM4, // GPIO14 W1 - PWM4 - GPIO_PWM1, // GPIO15 Red + GPI8_PWM3, // GPIO12 Blue + GPI8_PWM2, // GPIO13 Green + GPI8_PWM4, // GPIO14 W1 - PWM4 + GPI8_PWM1, // GPIO15 Red 0, 0 }, { // SONOFF_SC - onoff SC (ESP8266) - GPIO_KEY1, // GPIO00 Button - GPIO_TXD, // GPIO01 RXD to ATMEGA328P - GPIO_USER, // GPIO02 Optional sensor - GPIO_RXD, // GPIO03 TXD to ATMEGA328P + GPI8_KEY1, // GPIO00 Button + GPI8_TXD, // GPIO01 RXD to ATMEGA328P + GPI8_USER, // GPIO02 Optional sensor + GPI8_RXD, // GPIO03 TXD to ATMEGA328P 0, 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1458,7 +1613,7 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) 0, - GPIO_LED1_INV, // GPIO13 Green Led (0 = On, 1 = Off) - Link and Power status + GPI8_LED1_INV, // GPIO13 Green Led (0 = On, 1 = Off) - Link and Power status 0, 0, 0, 0 }, { // SONOFF_BN - Sonoff BN-SZ01 Ceiling led (ESP8285) @@ -1469,50 +1624,50 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM1, // GPIO12 Light - GPIO_LED1_INV, // GPIO13 Red Led (0 = On, 1 = Off) - Link and Power status + GPI8_PWM1, // GPIO12 Light + GPI8_LED1_INV, // GPIO13 Red Led (0 = On, 1 = Off) - Link and Power status 0, 0, 0, 0 }, { // HUAFAN_SS - Hua Fan Smart Socket (ESP8266) - like Sonoff Pow - GPIO_LEDLNK_INV, // GPIO00 Blue Led (0 = On, 1 = Off) - Link status + GPI8_LEDLNK_INV, // GPIO00 Blue Led (0 = On, 1 = Off) - Link status 0, 0, - GPIO_LED1_INV, // GPIO03 Red Led (0 = On, 1 = Off) - Power status - GPIO_KEY1, // GPIO04 Button - GPIO_REL1_INV, // GPIO05 Relay (0 = On, 1 = Off) + GPI8_LED1_INV, // GPIO03 Red Led (0 = On, 1 = Off) - Power status + GPI8_KEY1, // GPIO04 Button + GPI8_REL1_INV, // GPIO05 Relay (0 = On, 1 = Off) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_CF1, // GPIO12 HLW8012 CF1 voltage / current - GPIO_NRG_SEL, // GPIO13 HLW8012 Sel output (1 = Voltage) - GPIO_HLW_CF, // GPIO14 HLW8012 CF power + GPI8_NRG_CF1, // GPIO12 HLW8012 CF1 voltage / current + GPI8_NRG_SEL, // GPIO13 HLW8012 Sel output (1 = Voltage) + GPI8_HLW_CF, // GPIO14 HLW8012 CF power 0, 0, 0 }, { // SONOFF_BRIDGE - Sonoff RF Bridge 433 (ESP8285) - GPIO_KEY1, // GPIO00 Button - GPIO_TXD, // GPIO01 RF bridge control - GPIO_USER, // GPIO02 Optional sensor - GPIO_RXD, // GPIO03 RF bridge control - GPIO_USER, // GPIO04 Optional sensor - GPIO_USER, // GPIO05 Optional sensor + GPI8_KEY1, // GPIO00 Button + GPI8_TXD, // GPIO01 RF bridge control + GPI8_USER, // GPIO02 Optional sensor + GPI8_RXD, // GPIO03 RF bridge control + GPI8_USER, // GPIO04 Optional sensor + GPI8_USER, // GPIO05 Optional sensor // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, // GPIO12 Optional sensor - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status - GPIO_USER, // GPIO14 Optional sensor + GPI8_USER, // GPIO12 Optional sensor + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_USER, // GPIO14 Optional sensor 0, 0, 0 }, { // SONOFF_B1 - Sonoff B1 (ESP8285 - my9231) - GPIO_KEY1, // GPIO00 Pad - GPIO_USER, // GPIO01 Serial RXD and Optional sensor pad - GPIO_USER, // GPIO02 Optional sensor SDA pad - GPIO_USER, // GPIO03 Serial TXD and Optional sensor pad + GPI8_KEY1, // GPIO00 Pad + GPI8_USER, // GPIO01 Serial RXD and Optional sensor pad + GPI8_USER, // GPIO02 Optional sensor SDA pad + GPI8_USER, // GPIO03 Serial TXD and Optional sensor pad 0, 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1520,16 +1675,16 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_DI, // GPIO12 my9231 DI + GPI8_DI, // GPIO12 my9231 DI 0, - GPIO_DCKI, // GPIO14 my9231 DCKI + GPI8_DCKI, // GPIO14 my9231 DCKI 0, 0, 0 }, { // AILIGHT - Ai-Thinker RGBW led (ESP8266 - my9291) - GPIO_KEY1, // GPIO00 Pad - GPIO_USER, // GPIO01 Serial RXD and Optional sensor pad - GPIO_USER, // GPIO02 Optional sensor SDA pad - GPIO_USER, // GPIO03 Serial TXD and Optional sensor pad + GPI8_KEY1, // GPIO00 Pad + GPI8_USER, // GPIO01 Serial RXD and Optional sensor pad + GPI8_USER, // GPIO02 Optional sensor SDA pad + GPI8_USER, // GPIO03 Serial TXD and Optional sensor pad 0, 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1538,16 +1693,16 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) 0, - GPIO_DI, // GPIO13 my9291 DI + GPI8_DI, // GPIO13 my9291 DI 0, - GPIO_DCKI, // GPIO15 my9291 DCKI + GPI8_DCKI, // GPIO15 my9291 DCKI 0, 0 }, { // SONOFF_T11 - Sonoff T1 1CH (ESP8285) - GPIO_KEY1, // GPIO00 Button 1 - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_USER, // GPIO02 Optional Sensor (J3 Pin 5) - GPIO_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_KEY1, // GPIO00 Button 1 + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO02 Optional Sensor (J3 Pin 5) + GPI8_USER, // GPIO03 Serial TXD and Optional sensor 0, 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1555,65 +1710,65 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Blue Led and Relay 1 (0 = Off, 1 = On) - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_REL1, // GPIO12 Blue Led and Relay 1 (0 = Off, 1 = On) + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status 0, 0, 0, 0 }, { // SUPLA1 - Supla Espablo (ESP8266) // http://www.wykop.pl/ramka/3325399/diy-supla-do-puszki-instalacyjnej-podtynkowej-supla-org/ 0, // GPIO00 Flash jumper - GPIO_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO01 Serial RXD and Optional sensor #ifdef USE_DS18x20 - GPIO_DSB, // GPIO02 DS18B20 sensor + GPI8_DSB, // GPIO02 DS18B20 sensor #else - GPIO_USER, // GPIO02 Optional sensor + GPI8_USER, // GPIO02 Optional sensor #endif - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_KEY1, // GPIO04 Button 1 - GPIO_REL1, // GPIO05 Relay 1 (0 = Off, 1 = On) + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_KEY1, // GPIO04 Button 1 + GPI8_REL1, // GPIO05 Relay 1 (0 = Off, 1 = On) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, // GPIO12 Optional sensor - GPIO_REL2, // GPIO13 Relay 2 (0 = Off, 1 = On) - GPIO_USER, // GPIO14 Optional sensor + GPI8_USER, // GPIO12 Optional sensor + GPI8_REL2, // GPIO13 Relay 2 (0 = Off, 1 = On) + GPI8_USER, // GPIO14 Optional sensor 0, - GPIO_LED1, // GPIO16 Led (1 = On, 0 = Off) - Link and Power status - ADC0_USER // ADC0 A0 Analog input + GPI8_LED1, // GPIO16 Led (1 = On, 0 = Off) - Link and Power status + GPI8_USER // ADC0 A0 Analog input }, { // WITTY - Witty Cloud Dev Board (ESP8266) // https://www.aliexpress.com/item/ESP8266-serial-WIFI-Witty-cloud-Development-Board-ESP-12F-module-MINI-nodemcu/32643464555.html - GPIO_USER, // GPIO00 D3 flash push button on interface board - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_LED1_INV, // GPIO02 D4 Blue Led (0 = On, 1 = Off) on ESP-12F - Link and Power status - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_KEY1, // GPIO04 D2 push button on ESP-12F board - GPIO_USER, // GPIO05 D1 optional sensor + GPI8_USER, // GPIO00 D3 flash push button on interface board + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_LED1_INV, // GPIO02 D4 Blue Led (0 = On, 1 = Off) on ESP-12F - Link and Power status + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_KEY1, // GPIO04 D2 push button on ESP-12F board + GPI8_USER, // GPIO05 D1 optional sensor // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM2, // GPIO12 D6 RGB LED Green - GPIO_PWM3, // GPIO13 D7 RGB LED Blue - GPIO_USER, // GPIO14 D5 optional sensor - GPIO_PWM1, // GPIO15 D8 RGB LED Red - GPIO_USER, // GPIO16 D0 optional sensor - ADC0_USER // ADC0 A0 Light sensor / Requires USE_ADC_VCC in user_config.h to be disabled + GPI8_PWM2, // GPIO12 D6 RGB LED Green + GPI8_PWM3, // GPIO13 D7 RGB LED Blue + GPI8_USER, // GPIO14 D5 optional sensor + GPI8_PWM1, // GPIO15 D8 RGB LED Red + GPI8_USER, // GPIO16 D0 optional sensor + GPI8_USER // ADC0 A0 Light sensor / Requires USE_ADC_VCC in user_config.h to be disabled }, { // YUNSHAN - Yunshan Wifi Relay (ESP8266) // https://www.ebay.com/p/Esp8266-220v-10a-Network-Relay-WiFi-Module/1369583381 // Schematics and Info https://ucexperiment.wordpress.com/2016/12/18/yunshan-esp8266-250v-15a-acdc-network-wifi-relay-module/ 0, // GPIO00 Flash jumper - Module Pin 8 - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - Module Pin 2 - GPIO_LED1_INV, // GPIO02 Blue Led (0 = On, 1 = Off) on ESP-12F - Module Pin 7 - Link and Power status - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - Module Pin 3 - GPIO_REL1, // GPIO04 Red Led and Relay (0 = Off, 1 = On) - Module Pin 10 - GPIO_KEY1, // GPIO05 Blue Led and OptoCoupler input - Module Pin 9 + GPI8_USER, // GPIO01 Serial RXD and Optional sensor - Module Pin 2 + GPI8_LED1_INV, // GPIO02 Blue Led (0 = On, 1 = Off) on ESP-12F - Module Pin 7 - Link and Power status + GPI8_USER, // GPIO03 Serial TXD and Optional sensor - Module Pin 3 + GPI8_REL1, // GPIO04 Red Led and Relay (0 = Off, 1 = On) - Module Pin 10 + GPI8_KEY1, // GPIO05 Blue Led and OptoCoupler input - Module Pin 9 // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) @@ -1625,109 +1780,109 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { { // MAGICHOME - Magic Home (aka Flux-light) (ESP8266) and Arilux LC10 (ESP8285) // https://www.aliexpress.com/item/Magic-Home-Mini-RGB-RGBW-Wifi-Controller-For-Led-Strip-Panel-light-Timing-Function-16million-colors/32686853650.html 0, - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_LED1_INV, // GPIO02 Blue onboard LED - Link and Power status - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_ARIRFRCV, // GPIO04 IR or RF receiver (optional) (Arilux LC10) - GPIO_PWM2, // GPIO05 RGB LED Green + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_LED1_INV, // GPIO02 Blue onboard LED - Link and Power status + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_ARIRFRCV, // GPIO04 IR or RF receiver (optional) (Arilux LC10) + GPI8_PWM2, // GPIO05 RGB LED Green // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM3, // GPIO12 RGB LED Blue - GPIO_USER, // GPIO13 RGBW LED White (optional - set to PWM4 for Cold White or Warm White as used on Arilux LC10) - GPIO_PWM1, // GPIO14 RGB LED Red - GPIO_ARIRFSEL, // GPIO15 RF receiver control (Arilux LC10) + GPI8_PWM3, // GPIO12 RGB LED Blue + GPI8_USER, // GPIO13 RGBW LED White (optional - set to PWM4 for Cold White or Warm White as used on Arilux LC10) + GPI8_PWM1, // GPIO14 RGB LED Red + GPI8_ARIRFSEL, // GPIO15 RF receiver control (Arilux LC10) 0, 0 }, { // LUANIHVIO - ESP8266_HVIO // https://luani.de/projekte/esp8266-hvio/ 0, // GPIO00 Flash jumper - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_USER, // GPIO02 Optional sensor / I2C SDA pad - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_REL1, // GPIO04 Relay 1 (0 = Off, 1 = On) - GPIO_REL2, // GPIO05 Relay 2 (0 = Off, 1 = On) + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO02 Optional sensor / I2C SDA pad + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_REL1, // GPIO04 Relay 1 (0 = Off, 1 = On) + GPI8_REL2, // GPIO05 Relay 2 (0 = Off, 1 = On) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_SWT1, // GPIO12 External input 1 (0 = On, 1 = Off) - GPIO_SWT2, // GPIO13 External input 2 (0 = On, 1 = Off) - GPIO_USER, // GPIO14 Optional sensor / I2C SCL pad - GPIO_LED1, // GPIO15 Led (1 = On, 0 = Off) - Link and Power status + GPI8_SWT1, // GPIO12 External input 1 (0 = On, 1 = Off) + GPI8_SWT2, // GPIO13 External input 2 (0 = On, 1 = Off) + GPI8_USER, // GPIO14 Optional sensor / I2C SCL pad + GPI8_LED1, // GPIO15 Led (1 = On, 0 = Off) - Link and Power status 0, - ADC0_USER // ADC0 A0 Analog input + GPI8_USER // ADC0 A0 Analog input }, { // KMC_70011 - KMC 70011 // https://www.amazon.com/KMC-Timing-Monitoring-Network-125V-240V/dp/B06XRX2GTQ - GPIO_KEY1, // GPIO00 Button + GPI8_KEY1, // GPIO00 Button 0, 0, 0, - GPIO_HLW_CF, // GPIO04 HLW8012 CF power - GPIO_NRG_CF1, // GPIO05 HLW8012 CF1 voltage / current + GPI8_HLW_CF, // GPIO04 HLW8012 CF power + GPI8_NRG_CF1, // GPIO05 HLW8012 CF1 voltage / current // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL, // GPIO12 HLW8012 SEL (1 = Voltage) - GPIO_LED1_INV, // GPIO13 Green Led - Link and Power status - GPIO_REL1, // GPIO14 Relay + GPI8_NRG_SEL, // GPIO12 HLW8012 SEL (1 = Voltage) + GPI8_LED1_INV, // GPIO13 Green Led - Link and Power status + GPI8_REL1, // GPIO14 Relay 0, 0, 0 }, { // ARILUX_LC01 - Arilux AL-LC01 (ESP8285) // https://www.banggood.com/nl/ARILUX-AL-LC01-Super-Mini-LED-WIFI-Smart-RGB-Controller-For-RGB-LED-Strip-Light-DC-9-12V-p-1058603.html // (PwmFrequency 1111Hz) - GPIO_KEY1, // GPIO00 Optional Button - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_ARIRFSEL, // GPIO02 RF receiver control - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_ARIRFRCV, // GPIO04 IR or RF receiver (optional) - GPIO_PWM1, // GPIO05 RGB LED Red + GPI8_KEY1, // GPIO00 Optional Button + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_ARIRFSEL, // GPIO02 RF receiver control + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_ARIRFRCV, // GPIO04 IR or RF receiver (optional) + GPI8_PWM1, // GPIO05 RGB LED Red // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM2, // GPIO12 RGB LED Green - GPIO_PWM3, // GPIO13 RGB LED Blue - GPIO_USER, // GPIO14 RGBW LED White (optional - set to PWM4 for Cold White or Warm White) + GPI8_PWM2, // GPIO12 RGB LED Green + GPI8_PWM3, // GPIO13 RGB LED Blue + GPI8_USER, // GPIO14 RGBW LED White (optional - set to PWM4 for Cold White or Warm White) 0, 0, 0 }, { // ARILUX_LC11 - Arilux AL-LC11 (ESP8266) // https://www.banggood.com/nl/ARILUX-AL-LC11-Super-Mini-LED-WIFI-APP-Controller-RF-Remote-Control-For-RGBWW-LED-Strip-DC9-28V-p-1085112.html // (PwmFrequency 540Hz) - GPIO_KEY1, // GPIO00 Optional Button - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_ARIRFSEL, // GPIO02 RF receiver control - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_PWM2, // GPIO04 RGB LED Green - GPIO_PWM1, // GPIO05 RGB LED Red + GPI8_KEY1, // GPIO00 Optional Button + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_ARIRFSEL, // GPIO02 RF receiver control + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_PWM2, // GPIO04 RGB LED Green + GPI8_PWM1, // GPIO05 RGB LED Red // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM5, // GPIO12 RGBCW LED Warm - GPIO_PWM4, // GPIO13 RGBW LED Cold - GPIO_PWM3, // GPIO14 RGB LED Blue - GPIO_ARIRFRCV, // GPIO15 RF receiver input + GPI8_PWM5, // GPIO12 RGBCW LED Warm + GPI8_PWM4, // GPIO13 RGBW LED Cold + GPI8_PWM3, // GPIO14 RGB LED Blue + GPI8_ARIRFRCV, // GPIO15 RF receiver input 0, 0 }, { // ARILUX_LC06 - Arilux AL-LC06 (ESP8285) // https://www.banggood.com/ARILUX-AL-LC06-LED-WIFI-Smartphone-Controller-Romote-5-Channels-DC12-24V-For-RGBWW-Strip-light-p-1061476.html - GPIO_KEY1, // GPIO00 Optional Button - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_USER, // GPIO02 Empty pad - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_USER, // GPIO04 W2 - PWM5 + GPI8_KEY1, // GPIO00 Optional Button + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO02 Empty pad + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_USER, // GPIO04 W2 - PWM5 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1735,19 +1890,19 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM2, // GPIO12 RGB LED Green - GPIO_PWM3, // GPIO13 RGB LED Blue - GPIO_PWM1, // GPIO14 RGB LED Red - GPIO_USER, // GPIO15 RGBW LED White + GPI8_PWM2, // GPIO12 RGB LED Green + GPI8_PWM3, // GPIO13 RGB LED Blue + GPI8_PWM1, // GPIO14 RGB LED Red + GPI8_USER, // GPIO15 RGBW LED White 0, 0 }, { // ZENGGE_ZF_WF017 - Zenggee ZJ-WF017-A (ESP12S)) // https://www.ebay.com/p/Smartphone-Android-IOS-WiFi-Music-Controller-for-RGB-5050-3528-LED-Strip-Light/534446632?_trksid=p2047675.l2644 - GPIO_KEY1, // GPIO00 Optional Button + GPI8_KEY1, // GPIO00 Optional Button 0, - GPIO_USER, // GPIO02 Empty pad + GPI8_USER, // GPIO02 Empty pad 0, - GPIO_USER, // GPIO04 W2 - PWM5 + GPI8_USER, // GPIO04 W2 - PWM5 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1755,16 +1910,16 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM2, // GPIO12 RGB LED Green - GPIO_PWM1, // GPIO13 RGB LED Red - GPIO_PWM3, // GPIO14 RGB LED Blue + GPI8_PWM2, // GPIO12 RGB LED Green + GPI8_PWM1, // GPIO13 RGB LED Red + GPI8_PWM3, // GPIO14 RGB LED Blue 0, 0, 0 }, { // SONOFF_POW_R2 - Sonoff Pow R2 (ESP8285 - CSE7766) - GPIO_KEY1, // GPIO00 Button - GPIO_CSE7766_TX, // GPIO01 Serial RXD 4800 baud 8E1 CSE7766 energy sensor + GPI8_KEY1, // GPIO00 Button + GPI8_CSE7766_TX, // GPIO01 Serial RXD 4800 baud 8E1 CSE7766 energy sensor 0, - GPIO_CSE7766_RX, // GPIO03 Serial TXD + GPI8_CSE7766_RX, // GPIO03 Serial TXD 0, 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1772,8 +1927,8 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status 0, 0, 0, 0 }, { // BLITZWOLF_BWSHP - BlitzWolf BW-SHP2 and BW-SHP6 (ESP8285 - BL0937 or HJL-01 Energy Monitoring) @@ -1781,31 +1936,31 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // https://www.amazon.de/Steckdose-Homecube-intelligente-Verbrauchsanzeige-funktioniert/dp/B076Q2LKHG/ref=sr_1_fkmr0_1 // https://www.amazon.de/Intelligente-Stromverbrauch-Fernsteurung-Schaltbare-Energieklasse/dp/B076WZQS4S/ref=sr_1_1 // https://www.aliexpress.com/store/product/BlitzWolf-BW-SHP6-EU-Plug-Metering-Version-WIFI-Smart-Socket-220V-240V-10A-Work-with-Amazon/1965360_32945504669.html - GPIO_LED1_INV, // GPIO00 Red Led (1 = On, 0 = Off) - Power status - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_LEDLNK_INV, // GPIO02 Blue Led (1 = On, 0 = Off) - Link status - GPIO_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_LED1_INV, // GPIO00 Red Led (1 = On, 0 = Off) - Power status + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_LEDLNK_INV, // GPIO02 Blue Led (1 = On, 0 = Off) - Link status + GPI8_USER, // GPIO03 Serial TXD and Optional sensor 0, - GPIO_HJL_CF, // GPIO05 BL0937 or HJL-01 CF power + GPI8_HJL_CF, // GPIO05 BL0937 or HJL-01 CF power // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) - GPIO_KEY1, // GPIO13 Button - GPIO_NRG_CF1, // GPIO14 BL0937 or HJL-01 CF1 current / voltage - GPIO_REL1, // GPIO15 Relay (0 = Off, 1 = On) + GPI8_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) + GPI8_KEY1, // GPIO13 Button + GPI8_NRG_CF1, // GPIO14 BL0937 or HJL-01 CF1 current / voltage + GPI8_REL1, // GPIO15 Relay (0 = Off, 1 = On) 0, 0 }, { // SHELLY1 - Shelly1 Open Source (ESP8266 - 2MB) - https://shelly.cloud/shelly1-open-source/ - GPIO_USER, // GPIO00 - Can be changed to GPIO_USER, only if Shelly is powered with 12V DC - GPIO_USER, // GPIO01 Serial RXD - Can be changed to GPIO_USER, only if Shelly is powered with 12V DC + GPI8_USER, // GPIO00 - Can be changed to GPI8_USER, only if Shelly is powered with 12V DC + GPI8_USER, // GPIO01 Serial RXD - Can be changed to GPI8_USER, only if Shelly is powered with 12V DC 0, - GPIO_USER, // GPIO03 Serial TXD - Can be changed to GPIO_USER, only if Shelly is powered with 12V DC - GPIO_REL1, // GPIO04 Relay (0 = Off, 1 = On) - GPIO_SWT1_NP, // GPIO05 SW pin + GPI8_USER, // GPIO03 Serial TXD - Can be changed to GPI8_USER, only if Shelly is powered with 12V DC + GPI8_REL1, // GPIO04 Relay (0 = Off, 1 = On) + GPI8_SWT1_NP, // GPIO05 SW pin // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) @@ -1816,21 +1971,21 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { }, { // SHELLY2 - Shelly2 (ESP8266 - 2MB) - https://shelly.cloud/shelly2/ 0, - GPIO_MCP39F5_TX, // GPIO01 MCP39F501 Serial input + GPI8_MCP39F5_TX, // GPIO01 MCP39F501 Serial input 0, - GPIO_MCP39F5_RX, // GPIO03 MCP39F501 Serial output - GPIO_REL1, // GPIO04 - GPIO_REL2, // GPIO05 + GPI8_MCP39F5_RX, // GPIO03 MCP39F501 Serial output + GPI8_REL1, // GPIO04 + GPI8_REL2, // GPIO05 // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_SWT1, // GPIO12 + GPI8_SWT1, // GPIO12 0, - GPIO_SWT2, // GPIO14 - GPIO_MCP39F5_RST, // GPIO15 MCP39F501 Reset + GPI8_SWT2, // GPIO14 + GPI8_MCP39F5_RST, // GPIO15 MCP39F501 Reset 0, 0 }, @@ -1842,15 +1997,15 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM2, // GPIO12 cold/warm light + GPI8_PWM2, // GPIO12 cold/warm light 0, 0, - GPIO_PWM1, // GPIO15 light intensity + GPI8_PWM1, // GPIO15 light intensity 0, 0 }, { // NEO_COOLCAM - Neo Coolcam (ESP8266) // https://www.banggood.com/NEO-COOLCAM-WiFi-Mini-Smart-Plug-APP-Remote-Control-Timing-Smart-Socket-EU-Plug-p-1288562.html?cur_warehouse=CN 0, 0, 0, 0, - GPIO_LED1_INV, // GPIO04 Red Led (0 = On, 1 = Off) - Link and Power status + GPI8_LED1_INV, // GPIO04 Red Led (0 = On, 1 = Off) - Link and Power status 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1858,203 +2013,203 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) - GPIO_KEY1, // GPIO13 Button + GPI8_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) + GPI8_KEY1, // GPIO13 Button 0, 0, 0, 0 }, { // ESP_SWITCH - Michael Haustein 4 channel wall switch (ESP07 = ESP8266) // Use rules for further actions like - rule on power1#state do publish cmnd/other_device/power %value% endon - GPIO_KEY2, // GPIO00 Button 2 - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_REL3_INV, // GPIO02 Yellow Led 3 (0 = On, 1 = Off) - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_KEY1, // GPIO04 Button 1 - GPIO_REL2_INV, // GPIO05 Red Led 2 (0 = On, 1 = Off) + GPI8_KEY2, // GPIO00 Button 2 + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_REL3_INV, // GPIO02 Yellow Led 3 (0 = On, 1 = Off) + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_KEY1, // GPIO04 Button 1 + GPI8_REL2_INV, // GPIO05 Red Led 2 (0 = On, 1 = Off) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL4_INV, // GPIO12 Blue Led 4 (0 = On, 1 = Off) - GPIO_KEY4, // GPIO13 Button 4 - GPIO_KEY3, // GPIO14 Button 3 - GPIO_LED1, // GPIO15 Optional sensor - GPIO_REL1_INV, // GPIO16 Green Led 1 (0 = On, 1 = Off) + GPI8_REL4_INV, // GPIO12 Blue Led 4 (0 = On, 1 = Off) + GPI8_KEY4, // GPIO13 Button 4 + GPI8_KEY3, // GPIO14 Button 3 + GPI8_LED1, // GPIO15 Optional sensor + GPI8_REL1_INV, // GPIO16 Green Led 1 (0 = On, 1 = Off) 0 }, { // OBI - OBI socket (ESP8266) - https://www.obi.de/hausfunksteuerung/wifi-stecker-schuko/p/2291706 - GPIO_USER, // GPIO00 - GPIO_USER, // GPIO01 Serial RXD + GPI8_USER, // GPIO00 + GPI8_USER, // GPIO01 Serial RXD 0, - GPIO_USER, // GPIO03 Serial TXD - GPIO_LED1, // GPIO04 Blue LED - Link and Power status - GPIO_REL1, // GPIO05 (Relay OFF, but used as Relay Switch) + GPI8_USER, // GPIO03 Serial TXD + GPI8_LED1, // GPIO04 Blue LED - Link and Power status + GPI8_REL1, // GPIO05 (Relay OFF, but used as Relay Switch) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_LED3, // GPIO12 (Relay ON, but set to LOW, so we can switch with GPIO05) - GPIO_USER, // GPIO13 - GPIO_KEY1, // GPIO14 Button + GPI8_LED3, // GPIO12 (Relay ON, but set to LOW, so we can switch with GPIO05) + GPI8_USER, // GPIO13 + GPI8_KEY1, // GPIO14 Button 0, - GPIO_USER, // GPIO16 - ADC0_USER // ADC0 A0 Analog input + GPI8_USER, // GPIO16 + GPI8_USER // ADC0 A0 Analog input }, { // TECKIN - https://www.amazon.de/gp/product/B07D5V139R 0, - GPIO_KEY1, // GPIO01 Serial TXD and Button + GPI8_KEY1, // GPIO01 Serial TXD and Button 0, - GPIO_LED1_INV, // GPIO03 Serial RXD and Red Led (0 = On, 1 = Off) - Power status - GPIO_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power - GPIO_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage + GPI8_LED1_INV, // GPIO03 Serial RXD and Red Led (0 = On, 1 = Off) - Power status + GPI8_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power + GPI8_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) - GPIO_LEDLNK_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link status - GPIO_REL1, // GPIO14 Relay (0 = Off, 1 = On) + GPI8_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) + GPI8_LEDLNK_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link status + GPI8_REL1, // GPIO14 Relay (0 = Off, 1 = On) 0, 0, 0 }, { // APLIC_WDP303075 - Aplic WDP 303075 (ESP8285 - HLW8012 Energy Monitoring) // https://www.amazon.de/dp/B07CNWVNJ2 0, 0, 0, - GPIO_KEY1, // GPIO03 Button - GPIO_HLW_CF, // GPIO04 HLW8012 CF power - GPIO_NRG_CF1, // GPIO05 HLW8012 CF1 current / voltage + GPI8_KEY1, // GPIO03 Button + GPI8_HLW_CF, // GPIO04 HLW8012 CF power + GPI8_NRG_CF1, // GPIO05 HLW8012 CF1 current / voltage // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 HLW8012 CF Sel output (0 = Voltage) - GPIO_LED1_INV, // GPIO13 LED (0 = On, 1 = Off) - Link and Power status - GPIO_REL1, // GPIO14 Relay SRU 5VDC SDA (0 = Off, 1 = On ) + GPI8_NRG_SEL_INV, // GPIO12 HLW8012 CF Sel output (0 = Voltage) + GPI8_LED1_INV, // GPIO13 LED (0 = On, 1 = Off) - Link and Power status + GPI8_REL1, // GPIO14 Relay SRU 5VDC SDA (0 = Off, 1 = On ) 0, 0, 0 }, { // TUYA_DIMMER - Tuya MCU device (ESP8266 w/ separate MCU) // https://www.amazon.com/gp/product/B07CTNSZZ8/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1 - GPIO_USER, // Virtual Button (controlled by MCU) - GPIO_USER, // GPIO01 MCU serial control - GPIO_USER, - GPIO_USER, // GPIO03 MCU serial control - GPIO_USER, - GPIO_USER, + GPI8_USER, // Virtual Button (controlled by MCU) + GPI8_USER, // GPIO01 MCU serial control + GPI8_USER, + GPI8_USER, // GPIO03 MCU serial control + GPI8_USER, + GPI8_USER, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, - GPIO_USER, - GPIO_USER, // GPIO14 Green Led - GPIO_USER, - GPIO_USER, + GPI8_USER, + GPI8_USER, + GPI8_USER, // GPIO14 Green Led + GPI8_USER, + GPI8_USER, 0 }, { // GOSUND - https://www.amazon.de/gp/product/B0777BWS1P 0, - GPIO_LEDLNK_INV, // GPIO01 Serial RXD and LED1 (blue) inv - Link status + GPI8_LEDLNK_INV, // GPIO01 Serial RXD and LED1 (blue) inv - Link status 0, - GPIO_KEY1, // GPIO03 Serial TXD and Button - GPIO_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power - GPIO_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage + GPI8_KEY1, // GPIO03 Serial TXD and Button + GPI8_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power + GPI8_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) - GPIO_LED1_INV, // GPIO13 LED2 (red) inv - Power status - GPIO_REL1, // GPIO14 Relay (0 = Off, 1 = On) + GPI8_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) + GPI8_LED1_INV, // GPIO13 LED2 (red) inv - Power status + GPI8_REL1, // GPIO14 Relay (0 = Off, 1 = On) 0, 0, 0 }, { // ARMTRONIX_DIMMERS - ARMTRONIX Dimmer, one or two channel (ESP8266 w/ separate MCU dimmer) // https://www.tindie.com/products/Armtronix/wifi-ac-dimmer-two-triac-board/ // https://www.tindie.com/products/Armtronix/wifi-ac-dimmer-esp8266-one-triac-board-alexaecho/ - GPIO_USER, - GPIO_TXD, // GPIO01 MCU serial control - GPIO_USER, - GPIO_RXD, // GPIO03 MCU serial control - GPIO_USER, - GPIO_USER, + GPI8_USER, + GPI8_TXD, // GPIO01 MCU serial control + GPI8_USER, + GPI8_RXD, // GPIO03 MCU serial control + GPI8_USER, + GPI8_USER, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, - GPIO_USER, - GPIO_USER, - GPIO_USER, - GPIO_USER, + GPI8_USER, + GPI8_USER, + GPI8_USER, + GPI8_USER, + GPI8_USER, 0 }, { // SK03_TUYA - Outdoor smart plug with power monitoring HLW8012 chip - https://www.amazon.com/gp/product/B07CG7MBPV - GPIO_KEY1, // GPIO00 Button + GPI8_KEY1, // GPIO00 Button 0, 0, 0, - GPIO_HLW_CF, // GPIO04 HLW8012 CF power - GPIO_NRG_CF1, // GPIO05 HLW8012 CF1 current / voltage + GPI8_HLW_CF, // GPIO04 HLW8012 CF power + GPI8_NRG_CF1, // GPIO05 HLW8012 CF1 current / voltage // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 HLW8012 CF Sel output (0 = Voltage) - GPIO_LED1_INV, // GPIO13 Red Led (0 = On, 1 = Off) - Power status - GPIO_LEDLNK_INV, // GPIO14 Blue Led (0 = On, 1 = Off) - Link status - GPIO_REL1, // GPIO15 Relay (0 = Off, 1 = On) + GPI8_NRG_SEL_INV, // GPIO12 HLW8012 CF Sel output (0 = Voltage) + GPI8_LED1_INV, // GPIO13 Red Led (0 = On, 1 = Off) - Power status + GPI8_LEDLNK_INV, // GPIO14 Blue Led (0 = On, 1 = Off) - Link status + GPI8_REL1, // GPIO15 Relay (0 = Off, 1 = On) 0, 0 }, { // PS_16_DZ - PS-16-DZ Dimmer (ESP8266 w/ separate Nuvoton MCU dimmer) // https://www.aliexpress.com/item/SM-Smart-WIFI-Wall-Dimmer-Light-Switch-US-Ewelink-APP-Remote-Control-Wi-Fi-Wirele-Work/32871151902.html - GPIO_USER, - GPIO_TXD, // GPIO01 MCU serial control - GPIO_USER, - GPIO_RXD, // GPIO03 MCU serial control - GPIO_USER, - GPIO_USER, + GPI8_USER, + GPI8_TXD, // GPIO01 MCU serial control + GPI8_USER, + GPI8_RXD, // GPIO03 MCU serial control + GPI8_USER, + GPI8_USER, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, - GPIO_LED1, // GPIO13 WiFi LED - Link and Power status - GPIO_USER, - GPIO_USER, - GPIO_USER, + GPI8_USER, + GPI8_LED1, // GPIO13 WiFi LED - Link and Power status + GPI8_USER, + GPI8_USER, + GPI8_USER, 0 }, { // TECKIN_US - Teckin SP20 US with Energy Monitoring // https://www.amazon.com/Outlet-Compatible-Monitoring-Function-Required/dp/B079Q5W22B // https://www.amazon.com/Outlet-ZOOZEE-Monitoring-Function-Compatible/dp/B07J2LR5KN - GPIO_LED1_INV, // GPIO00 Red Led (1 = On, 0 = Off) - Power status + GPI8_LED1_INV, // GPIO00 Red Led (1 = On, 0 = Off) - Power status 0, - GPIO_LEDLNK_INV, // GPIO02 Blue Led (1 = On, 0 = Off) - Link status + GPI8_LEDLNK_INV, // GPIO02 Blue Led (1 = On, 0 = Off) - Link status 0, - GPIO_REL1, // GPIO04 Relay (0 = Off, 1 = On) - GPIO_HJL_CF, // GPIO05 BL0937 or HJL-01 CF power + GPI8_REL1, // GPIO04 Relay (0 = Off, 1 = On) + GPI8_HJL_CF, // GPIO05 BL0937 or HJL-01 CF power // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) - GPIO_KEY1, // GPIO13 Button - GPIO_NRG_CF1, // GPIO14 BL0937 or HJL-01 CF1 current / voltage + GPI8_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) + GPI8_KEY1, // GPIO13 Button + GPI8_NRG_CF1, // GPIO14 BL0937 or HJL-01 CF1 current / voltage 0, 0, 0 }, { // MANZOKU_EU_4 - "MANZOKU" labeled power strip, EU version @@ -2063,20 +2218,20 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { 0, // GPIO00 0, // GPIO01 Serial RXD 0, - GPIO_KEY1, // GPIO03 Serial TXD + Button - GPIO_REL2, // GPIO04 Relay 2 - GPIO_REL1, // GPIO05 Relay 1 + GPI8_KEY1, // GPIO03 Serial TXD + Button + GPI8_REL2, // GPIO04 Relay 2 + GPI8_REL1, // GPIO05 Relay 1 // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL3, // GPIO12 Relay 3 - GPIO_REL4, // GPIO13 Relay 4 - GPIO_USER, // GPIO14 + GPI8_REL3, // GPIO12 Relay 3 + GPI8_REL4, // GPIO13 Relay 4 + GPI8_USER, // GPIO14 0, - GPIO_USER, // GPIO16 + GPI8_USER, // GPIO16 0 }, { // OBI2 - OBI socket (ESP8266) - https://www.obi.de/hausfunksteuerung/wifi-stecker-schuko-2-stueck-weiss/p/4077673 @@ -2084,25 +2239,25 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { 0, // GPIO01 Serial RXD 0, 0, // GPIO03 Serial TXD - GPIO_REL1, // GPIO04 Relay 1 - GPIO_KEY1, // GPIO05 Button + GPI8_REL1, // GPIO04 Relay 1 + GPI8_KEY1, // GPIO05 Button // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_LEDLNK_INV, // GPIO12 Green LED - Link status - GPIO_LED1, // GPIO13 Red LED - Power status + GPI8_LEDLNK_INV, // GPIO12 Green LED - Link status + GPI8_LED1, // GPIO13 Red LED - Power status 0, 0, 0, 0 }, { // YTF_IR_BRIDGE - https://www.aliexpress.com/item/Tuya-universal-Smart-IR-Hub-remote-control-Voice-Control-AC-TV-Work-With-Alexa-Google-Home/32951202513.html - GPIO_USER, // GPIO00 - GPIO_USER, // GPIO01 Serial RXD - GPIO_USER, // GPIO02 - GPIO_USER, // GPIO03 Serial TXD - GPIO_LED1_INV, // GPIO04 Blue Led - Link status - GPIO_IRRECV, // GPIO05 IR Receiver + GPI8_USER, // GPIO00 + GPI8_USER, // GPIO01 Serial RXD + GPI8_USER, // GPIO02 + GPI8_USER, // GPIO03 Serial TXD + GPI8_LED1_INV, // GPIO04 Blue Led - Link status + GPI8_IRRECV, // GPIO05 IR Receiver // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) @@ -2110,162 +2265,162 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) 0, // GPIO12 - GPIO_KEY1, // GPIO13 Button - GPIO_IRSEND, // GPIO14 IR Transmitter + GPI8_KEY1, // GPIO13 Button + GPI8_IRSEND, // GPIO14 IR Transmitter 0, 0, 0 }, { // DIGOO - Digoo DG-SP202 // https://www.banggood.com/DIGOO-DG-SP202-Dual-EU-Plug-Smart-WIFI-Socket-Individual-Controllable-Energy-Monitor-Remote-Control-Timing-Smart-Home-Outlet-let-p-1375323.html - GPIO_KEY1, // GPIO00 Button1 + GPI8_KEY1, // GPIO00 Button1 0, // GPIO01 Serial RXD 0, // GPIO02 0, // GPIO03 Serial TXD - GPIO_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power - GPIO_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage + GPI8_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power + GPI8_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) - GPIO_LED1, // GPIO13 Blue Leds - Link Status - GPIO_REL2, // GPIO14 Relay2 (0 = Off, 1 = On) and Red Led - GPIO_REL1, // GPIO15 Relay1 (0 = Off, 1 = On) and Red Led - GPIO_KEY2_NP, // GPIO16 Button2, externally pulled up + GPI8_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) + GPI8_LED1, // GPIO13 Blue Leds - Link Status + GPI8_REL2, // GPIO14 Relay2 (0 = Off, 1 = On) and Red Led + GPI8_REL1, // GPIO15 Relay1 (0 = Off, 1 = On) and Red Led + GPI8_KEY2_NP, // GPIO16 Button2, externally pulled up 0 }, { // KA10 - SMANERGY KA10 (ESP8285 - BL0937 Energy Monitoring) - https://www.amazon.es/dp/B07MBTCH2Y 0, // GPIO00 - GPIO_LEDLNK_INV, // GPIO01 Blue LED - Link status + GPI8_LEDLNK_INV, // GPIO01 Blue LED - Link status 0, // GPIO02 - GPIO_KEY1, // GPIO03 Button - GPIO_HJL_CF, // GPIO04 BL0937 CF power - GPIO_NRG_CF1, // GPIO05 BL0937 CF1 voltage / current + GPI8_KEY1, // GPIO03 Button + GPI8_HJL_CF, // GPIO04 BL0937 CF power + GPI8_NRG_CF1, // GPIO05 BL0937 CF1 voltage / current // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 BL0937 Sel output (1 = Voltage) - GPIO_LED1, // GPIO13 Red LED - Power status - GPIO_REL1, // GPIO14 Relay 1 + GPI8_NRG_SEL_INV, // GPIO12 BL0937 Sel output (1 = Voltage) + GPI8_LED1, // GPIO13 Red LED - Power status + GPI8_REL1, // GPIO14 Relay 1 0, 0, 0 }, { // ZX2820 - GPIO_KEY1, // GPIO00 Button + GPI8_KEY1, // GPIO00 Button 0, 0, 0, - GPIO_HLW_CF, // GPIO04 HLW8012 CF power - GPIO_NRG_CF1, // GPIO05 HLW8012 CF1 voltage / current + GPI8_HLW_CF, // GPIO04 HLW8012 CF power + GPI8_NRG_CF1, // GPIO05 HLW8012 CF1 voltage / current // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 HLW8012 SEL (0 = Voltage) - GPIO_LED1_INV, // GPIO13 Green Led - Link and Power status - GPIO_REL1, // GPIO14 Relay + GPI8_NRG_SEL_INV, // GPIO12 HLW8012 SEL (0 = Voltage) + GPI8_LED1_INV, // GPIO13 Green Led - Link and Power status + GPI8_REL1, // GPIO14 Relay 0, 0, 0 }, { // MI_DESK_LAMP - Mi LED Desk Lamp - https://www.mi.com/global/smartlamp/ 0, 0, - GPIO_KEY1, // GPIO02 Button + GPI8_KEY1, // GPIO02 Button 0, - GPIO_PWM1, // GPIO04 Cold White - GPIO_PWM2, // GPIO05 Warm White + GPI8_PWM1, // GPIO04 Cold White + GPI8_PWM2, // GPIO05 Warm White // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_ROT1A, // GPIO12 Rotary switch A pin - GPIO_ROT1B, // GPIO13 Rotary switch B pin + GPI8_ROT1A, // GPIO12 Rotary switch A pin + GPI8_ROT1B, // GPIO13 Rotary switch B pin 0, 0, 0, 0 }, { // SP10 - Tuya SP10 (BL0937 Energy Monitoring) // https://www.aliexpress.com/item/Smart-Mini-WiFi-Plug-Outlet-Switch-Work-With-ForEcho-Alexa-Google-Home-Remote-EU-Smart-Socket/32963670423.html 0, // GPIO00 - GPIO_PWM1, // GPIO01 Nightlight + GPI8_PWM1, // GPIO01 Nightlight 0, // GPIO02 - GPIO_KEY1, // GPIO03 Button - GPIO_HJL_CF, // GPIO04 BL0937 CF power - GPIO_NRG_CF1, // GPIO05 BL0937 CF1 voltage / current + GPI8_KEY1, // GPIO03 Button + GPI8_HJL_CF, // GPIO04 BL0937 CF power + GPI8_NRG_CF1, // GPIO05 BL0937 CF1 voltage / current // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 BL0937 Sel output (1 = Voltage) - GPIO_LED1, // GPIO13 Blue LED - Link status - GPIO_REL1, // GPIO14 Relay and red LED + GPI8_NRG_SEL_INV, // GPIO12 BL0937 Sel output (1 = Voltage) + GPI8_LED1, // GPIO13 Blue LED - Link status + GPI8_REL1, // GPIO14 Relay and red LED 0, 0, 0 }, { // WAGA - WAGA life CHCZ02MB (HJL-01 Energy Monitoring) // https://www.ebay.com/itm/332595697006 - GPIO_LED1_INV, // GPIO00 Red LED + GPI8_LED1_INV, // GPIO00 Red LED 0, // GPIO01 Serial RXD 0, // GPIO02 - GPIO_NRG_SEL_INV, // GPIO03 HJL-01 Sel output (1 = Voltage) + GPI8_NRG_SEL_INV, // GPIO03 HJL-01 Sel output (1 = Voltage) 0, // GPIO04 - GPIO_HJL_CF, // GPIO05 HJL-01 CF power + GPI8_HJL_CF, // GPIO05 HJL-01 CF power // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Relay - GPIO_KEY1, // GPIO13 Button - GPIO_NRG_CF1, // GPIO14 HJL-01 CF1 voltage / current - GPIO_LEDLNK_INV, // GPIO15 Blue LED - Link status + GPI8_REL1, // GPIO12 Relay + GPI8_KEY1, // GPIO13 Button + GPI8_NRG_CF1, // GPIO14 HJL-01 CF1 voltage / current + GPI8_LEDLNK_INV, // GPIO15 Blue LED - Link status 0, 0 }, { // SYF05 - Sunyesmart SYF05 (a.k.a. Fcmila) = TYWE3S + SM16726 - // Also works with Merkury 904 RGBW Bulbs with 13 set to GPIO_SM16716_SEL + // Also works with Merkury 904 RGBW Bulbs with 13 set to GPI8_SM16716_SEL // https://www.flipkart.com/fc-mila-bxav-xs-ad-smart-bulb/p/itmf85zgs45fzr7n // https://docs.tuya.com/en/hardware/WiFi-module/wifi-e3s-module.html // http://www.datasheet-pdf.com/PDF/SM16716-Datasheet-Sunmoon-932771 - GPIO_USER, // GPIO00 N.C. + GPI8_USER, // GPIO00 N.C. 0, // GPIO01 Serial RXD - GPIO_USER, // GPIO02 N.C. + GPI8_USER, // GPIO02 N.C. 0, // GPIO03 Serial TXD - GPIO_SM16716_CLK, // GPIO04 SM16716 Clock - GPIO_PWM1, // GPIO05 White + GPI8_SM16716_CLK, // GPIO04 SM16716 Clock + GPI8_PWM1, // GPIO05 White // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, // GPIO12 Alt. White on some devices - GPIO_USER, // GPIO13 SM16716 Enable on some devices - GPIO_SM16716_DAT, // GPIO14 SM16716 Data + GPI8_USER, // GPIO12 Alt. White on some devices + GPI8_USER, // GPIO13 SM16716 Enable on some devices + GPI8_SM16716_DAT, // GPIO14 SM16716 Data 0, // GPIO15 wired to GND - GPIO_USER, // GPIO16 N.C. - ADC0_USER // ADC0 A0 Analog input + GPI8_USER, // GPIO16 N.C. + GPI8_USER // ADC0 A0 Analog input }, { // EXS_DIMMER - EX-Store WiFi Dimmer v4, two channel (ESP8266 w/ separate MCU dimmer) // https://ex-store.de/2-Kanal-RS232-WiFi-WLan-Dimmer-Modul-V4-fuer-Unterputzmontage-230V-3A // https://ex-store.de/2-Kanal-RS232-WiFi-WLan-Dimmer-Modul-V4-fuer-Unterputzmontage-230V-3A-ESP8266-V12-Stift-und-Buchsenleisten 0, - GPIO_TXD, // GPIO01 MCU serial control - GPIO_LEDLNK, // GPIO02 LED Link - GPIO_RXD, // GPIO03 MCU serial control - GPIO_USER, // GPIO04 - GPIO_USER, // GPIO05 + GPI8_TXD, // GPIO01 MCU serial control + GPI8_LEDLNK, // GPIO02 LED Link + GPI8_RXD, // GPIO03 MCU serial control + GPI8_USER, // GPIO04 + GPI8_USER, // GPIO05 // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, // GPIO12 - GPIO_EXS_ENABLE, // GPIO13 EXS MCU Enable - GPIO_USER, // GPIO14 + GPI8_USER, // GPIO12 + GPI8_EXS_ENABLE, // GPIO13 EXS MCU Enable + GPI8_USER, // GPIO14 0, // GPIO15 0, 0 }, @@ -2277,31 +2432,31 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // https://www.amazon.com/dp/B07V26Q3VD // https://www.amazon.com/dp/B07K67D43J // https://www.amazon.com/dp/B07TTGFWFM - GPIO_KEY3, // GPIO00 Up button - GPIO_KEY2, // GPIO01 Down button + GPI8_KEY3, // GPIO00 Up button + GPI8_KEY2, // GPIO01 Down button 0, // GPIO02 - GPIO_LED4_INV, // GPIO03 Level 5 LED - GPIO_LEDLNK_INV, // GPIO04 LED Link - GPIO_LED3_INV, // GPIO05 Level 4 LED + GPI8_LED4_INV, // GPIO03 Level 5 LED + GPI8_LEDLNK_INV, // GPIO04 LED Link + GPI8_LED3_INV, // GPIO05 Level 4 LED // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_LED2_INV, // GPIO12 Level 3 LED - GPIO_PWM1, // GPIO13 Dimmer PWM - GPIO_LED1_INV, // GPIO12 Level 2 LED - GPIO_KEY1_INV, // GPIO15 Power button - GPIO_REL1_INV, // GPIO16 Power relay/Level 1 LED + GPI8_LED2_INV, // GPIO12 Level 3 LED + GPI8_PWM1, // GPIO13 Dimmer PWM + GPI8_LED1_INV, // GPIO12 Level 2 LED + GPI8_KEY1_INV, // GPIO15 Power button + GPI8_REL1_INV, // GPIO16 Power relay/Level 1 LED 0 }, { // SONOFF_ZB_BRIDGE - Sonoff Zigbee Bridge (ESP8266) - GPIO_LED1_INV, // GPIO00 Green Led (0 = On, 1 = Off) - Traffic between ESP and EFR - GPIO_ZIGBEE_TX, // GPIO01 Zigbee Serial control + GPI8_LED1_INV, // GPIO00 Green Led (0 = On, 1 = Off) - Traffic between ESP and EFR + GPI8_ZIGBEE_TX, // GPIO01 Zigbee Serial control 0, // GPIO02 - GPIO_ZIGBEE_RX, // GPIO03 Zigbee Serial control - GPIO_ZIGBEE_RST, // GPIO04 Zigbee Reset + GPI8_ZIGBEE_RX, // GPIO03 Zigbee Serial control + GPI8_ZIGBEE_RST, // GPIO04 Zigbee Reset 0, // GPIO05 EFR32 Bootloader mode (drive Low for Gecko Bootloader, inactive or high for Zigbee EmberZNet) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -2309,11 +2464,11 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_I2C_SDA, // GPIO12 I2C SDA - connected to 512KB EEPROM - GPIO_LEDLNK_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link status - GPIO_I2C_SCL, // GPIO14 I2C SCL - connected to 512KB EEPROM + GPI8_I2C_SDA, // GPIO12 I2C SDA - connected to 512KB EEPROM + GPI8_LEDLNK_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link status + GPI8_I2C_SCL, // GPIO14 I2C SCL - connected to 512KB EEPROM 0, // GPIO15 connected to IO15 pad, also used for logging - GPIO_KEY1, // GPIO16 Button + GPI8_KEY1, // GPIO16 Button 0 } }; @@ -2322,122 +2477,186 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { * Templates with 14 usable pins (ESP8285) \*********************************************************************************************/ -const mytmplt kModules8285[TMP_MAXMODULE_8266 - TMP_WEMOS] PROGMEM = { +const mytmplt8285 kModules8285[TMP_MAXMODULE_8266 - TMP_WEMOS] PROGMEM = { { // WEMOS - Any ESP8266/ESP8285 device like WeMos and NodeMCU hardware (ESP8266) - GPIO_USER, // GPIO00 D3 Wemos Button Shield - GPIO_USER, // GPIO01 TX Serial RXD - GPIO_USER, // GPIO02 D4 Wemos DHT Shield - GPIO_USER, // GPIO03 RX Serial TXD and Optional sensor - GPIO_USER, // GPIO04 D2 Wemos I2C SDA - GPIO_USER, // GPIO05 D1 Wemos I2C SCL / Wemos Relay Shield (0 = Off, 1 = On) / Wemos WS2812B RGB led Shield + GPI8_USER, // GPIO00 D3 Wemos Button Shield + GPI8_USER, // GPIO01 TX Serial RXD + GPI8_USER, // GPIO02 D4 Wemos DHT Shield + GPI8_USER, // GPIO03 RX Serial TXD and Optional sensor + GPI8_USER, // GPIO04 D2 Wemos I2C SDA + GPI8_USER, // GPIO05 D1 Wemos I2C SCL / Wemos Relay Shield (0 = Off, 1 = On) / Wemos WS2812B RGB led Shield // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) - GPIO_USER, // GPIO09 (SD_DATA2 Flash QIO or ESP8285) - GPIO_USER, // GPIO10 (SD_DATA3 Flash QIO or ESP8285) + GPI8_USER, // GPIO09 (SD_DATA2 Flash QIO or ESP8285) + GPI8_USER, // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, // GPIO12 D6 - GPIO_USER, // GPIO13 D7 - GPIO_USER, // GPIO14 D5 - GPIO_USER, // GPIO15 D8 - GPIO_USER, // GPIO16 D0 Wemos Wake - ADC0_USER // ADC0 A0 Analog input + GPI8_USER, // GPIO12 D6 + GPI8_USER, // GPIO13 D7 + GPI8_USER, // GPIO14 D5 + GPI8_USER, // GPIO15 D8 + GPI8_USER, // GPIO16 D0 Wemos Wake + GPI8_USER // ADC0 A0 Analog input }, { // SONOFF_4CH - Sonoff 4CH (ESP8285) - GPIO_KEY1, // GPIO00 Button 1 - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_USER, // GPIO02 Optional sensor - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_REL3, // GPIO04 Sonoff 4CH Red Led and Relay 3 (0 = Off, 1 = On) - GPIO_REL2, // GPIO05 Sonoff 4CH Red Led and Relay 2 (0 = Off, 1 = On) + GPI8_KEY1, // GPIO00 Button 1 + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO02 Optional sensor + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_REL3, // GPIO04 Sonoff 4CH Red Led and Relay 3 (0 = Off, 1 = On) + GPI8_REL2, // GPIO05 Sonoff 4CH Red Led and Relay 2 (0 = Off, 1 = On) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) - GPIO_KEY2, // GPIO09 Button 2 - GPIO_KEY3, // GPIO10 Button 3 + GPI8_KEY2, // GPIO09 Button 2 + GPI8_KEY3, // GPIO10 Button 3 // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Red Led and Relay 1 (0 = Off, 1 = On) - Link and Power status - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - GPIO_KEY4, // GPIO14 Button 4 - GPIO_REL4, // GPIO15 Red Led and Relay 4 (0 = Off, 1 = On) + GPI8_REL1, // GPIO12 Red Led and Relay 1 (0 = Off, 1 = On) - Link and Power status + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) + GPI8_KEY4, // GPIO14 Button 4 + GPI8_REL4, // GPIO15 Red Led and Relay 4 (0 = Off, 1 = On) 0, 0 }, { // SONOFF_T12 - Sonoff T1 2CH (ESP8285) - GPIO_KEY1, // GPIO00 Button 1 - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_USER, // GPIO02 Optional Sensor (J3 Pin 5) - GPIO_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_KEY1, // GPIO00 Button 1 + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO02 Optional Sensor (J3 Pin 5) + GPI8_USER, // GPIO03 Serial TXD and Optional sensor 0, - GPIO_REL2, // GPIO05 Blue Led and Relay 2 (0 = Off, 1 = On) + GPI8_REL2, // GPIO05 Blue Led and Relay 2 (0 = Off, 1 = On) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) - GPIO_KEY2, // GPIO09 Button 2 + GPI8_KEY2, // GPIO09 Button 2 0, // GPIO10 // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Blue Led and Relay 1 (0 = Off, 1 = On) - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_REL1, // GPIO12 Blue Led and Relay 1 (0 = Off, 1 = On) + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status 0, 0, 0, 0 }, { // SONOFF_T13 - Sonoff T1 3CH (ESP8285) - GPIO_KEY1, // GPIO00 Button 1 - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_USER, // GPIO02 Optional Sensor (J3 Pin 5) - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_REL3, // GPIO04 Blue Led and Relay 3 (0 = Off, 1 = On) - GPIO_REL2, // GPIO05 Blue Led and Relay 2 (0 = Off, 1 = On) + GPI8_KEY1, // GPIO00 Button 1 + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO02 Optional Sensor (J3 Pin 5) + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_REL3, // GPIO04 Blue Led and Relay 3 (0 = Off, 1 = On) + GPI8_REL2, // GPIO05 Blue Led and Relay 2 (0 = Off, 1 = On) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) - GPIO_KEY2, // GPIO09 Button 2 - GPIO_KEY3, // GPIO10 Button 3 + GPI8_KEY2, // GPIO09 Button 2 + GPI8_KEY3, // GPIO10 Button 3 // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Blue Led and Relay 1 (0 = Off, 1 = On) - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_REL1, // GPIO12 Blue Led and Relay 1 (0 = Off, 1 = On) + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status 0, 0, 0, 0 }, { // SONOFF_DUAL_R2 - Sonoff Dual R2 (ESP8285) - GPIO_USER, // GPIO00 Button 0 on header (0 = On, 1 = Off) - GPIO_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO00 Button 0 on header (0 = On, 1 = Off) + GPI8_USER, // GPIO01 Serial RXD and Optional sensor 0, - GPIO_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_USER, // GPIO03 Serial TXD and Optional sensor 0, - GPIO_REL2, // GPIO05 Relay 2 (0 = Off, 1 = On) + GPI8_REL2, // GPIO05 Relay 2 (0 = Off, 1 = On) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) - GPIO_USER, // GPIO09 Button 1 on header (0 = On, 1 = Off) - GPIO_KEY1, // GPIO10 Button on casing + GPI8_USER, // GPIO09 Button 1 on header (0 = On, 1 = Off) + GPI8_KEY1, // GPIO10 Button on casing // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Relay 1 (0 = Off, 1 = On) - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_REL1, // GPIO12 Relay 1 (0 = Off, 1 = On) + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status 0, 0, 0, 0 }, { // SONOFF_IFAN03 - Sonoff iFan03 (ESP8285) - GPIO_KEY1, // GPIO00 WIFI_KEY0 Button 1 - GPIO_TXD, // GPIO01 ESP_TXD Serial RXD connection to P0.5 of RF microcontroller + GPI8_KEY1, // GPIO00 WIFI_KEY0 Button 1 + GPI8_TXD, // GPIO01 ESP_TXD Serial RXD connection to P0.5 of RF microcontroller 0, // GPIO02 ESP_LOG - GPIO_RXD, // GPIO03 ESP_RXD Serial TXD connection to P0.4 of RF microcontroller + GPI8_RXD, // GPIO03 ESP_RXD Serial TXD connection to P0.4 of RF microcontroller 0, // GPIO04 DEBUG_RX 0, // GPIO05 DEBUG_TX // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) - GPIO_REL1_INV, // GPIO09 WIFI_O0 Relay 1 (0 = Off, 1 = On) controlling the light - GPIO_BUZZER_INV, // GPIO10 WIFI_O4 Buzzer (0 = Off, 1 = On) + GPI8_REL1_INV, // GPIO09 WIFI_O0 Relay 1 (0 = Off, 1 = On) controlling the light + GPI8_BUZZER_INV, // GPIO10 WIFI_O4 Buzzer (0 = Off, 1 = On) // GPIO11 (SD_CMD Flash) - GPIO_REL3, // GPIO12 WIFI_O2 Relay 3 (0 = Off, 1 = On) controlling the fan - GPIO_LED1_INV, // GPIO13 WIFI_CHK Blue Led on PCA (0 = On, 1 = Off) - Link and Power status - GPIO_REL2, // GPIO14 WIFI_O1 Relay 2 (0 = Off, 1 = On) controlling the fan - GPIO_REL4, // GPIO15 WIFI_O3 Relay 4 (0 = Off, 1 = On) controlling the fan + GPI8_REL3, // GPIO12 WIFI_O2 Relay 3 (0 = Off, 1 = On) controlling the fan + GPI8_LED1_INV, // GPIO13 WIFI_CHK Blue Led on PCA (0 = On, 1 = Off) - Link and Power status + GPI8_REL2, // GPIO14 WIFI_O1 Relay 2 (0 = Off, 1 = On) controlling the fan + GPI8_REL4, // GPIO15 WIFI_O3 Relay 4 (0 = Off, 1 = On) controlling the fan 0, 0 } }; -#endif // ESP8266 +#else // ESP32 + +/********************************************************************************************/ +// Supported hardware modules +enum SupportedModules { WEMOS, ESP32_CAM_AITHINKER, MAXMODULE }; + +#define USER_MODULE 255 + +const char kModuleNames[] PROGMEM = "ESP32-DevKit|ESP32 Cam AiThinker"; + +// Default module settings +const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { WEMOS, ESP32_CAM_AITHINKER }; + +const mytmplt kModules PROGMEM = +{ // WEMOS - Espressif ESP32-DevKitC - Any ESP32 device like WeMos and NodeMCU hardware (ESP32) + AGPIO(GPIO_USER), // 0 (I)O GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1, EMAC_TX_CLK + AGPIO(GPIO_USER), // 1 IO TXD0 GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2 + AGPIO(GPIO_USER), // 2 IO GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP, HS2_DATA0, SD_DATA0 + AGPIO(GPIO_USER), // 3 IO RXD0 GPIO3, U0RXD, CLK_OUT2 + AGPIO(GPIO_USER), // 4 IO GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER + AGPIO(GPIO_USER), // 5 IO GPIO5, VSPICS0, HS1_DATA6, EMAC_RX_CLK + // 6 IO GPIO6, Flash CLK + // 7 IO GPIO7, Flash D0 + // 8 IO GPIO8, Flash D1 + AGPIO(GPIO_USER), // 9 IO GPIO9, Flash D2, U1RXD + AGPIO(GPIO_USER), // 10 IO GPIO10, Flash D3, U1TXD + // 11 IO GPIO11, Flash CMD + AGPIO(GPIO_USER), // 12 (I)O GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3 (If driven High, flash voltage (VDD_SDIO) is 1.8V not default 3.3V. Has internal pull-down, so unconnected = Low = 3.3V. May prevent flashing and/or booting if 3.3V flash is connected and pulled high. See ESP32 datasheet for more details.) + AGPIO(GPIO_USER), // 13 IO GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID, HS2_DATA3, SD_DATA3, EMAC_RX_ER + AGPIO(GPIO_USER), // 14 IO GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2 + AGPIO(GPIO_USER), // 15 (I)O GPIO15, ADC2_CH3, TOUCH3, MTDO, HSPICS0, RTC_GPIO13, HS2_CMD, SD_CMD, EMAC_RXD3 (If driven Low, silences boot messages from normal boot. Has internal pull-up, so unconnected = High = normal output.) + AGPIO(GPIO_USER), // 16 IO GPIO16, HS1_DATA4, U2RXD, EMAC_CLK_OUT + AGPIO(GPIO_USER), // 17 IO GPIO17, HS1_DATA5, U2TXD, EMAC_CLK_OUT_180 + AGPIO(GPIO_USER), // 18 IO GPIO18, VSPICLK, HS1_DATA7 + AGPIO(GPIO_USER), // 19 IO GPIO19, VSPIQ, U0CTS, EMAC_TXD0 + 0, // 20 + AGPIO(GPIO_USER), // 21 IO GPIO21, VSPIHD, EMAC_TX_EN + AGPIO(GPIO_USER), // 22 IO LED GPIO22, VSPIWP, U0RTS, EMAC_TXD1 + AGPIO(GPIO_USER), // 23 IO GPIO23, VSPID, HS1_STROBE + 0, // 24 + AGPIO(GPIO_USER), // 25 IO GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0 + AGPIO(GPIO_USER), // 26 IO GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1 + AGPIO(GPIO_USER), // 27 IO GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV + 0, // 28 + 0, // 29 + 0, // 30 + 0, // 31 + AGPIO(GPIO_USER), // 32 IO GPIO32, XTAL_32K_P (32.768 kHz crystal oscillator input), ADC1_CH4, TOUCH9, RTC_GPIO9 + AGPIO(GPIO_USER), // 33 IO GPIO33, XTAL_32K_N (32.768 kHz crystal oscillator output), ADC1_CH5, TOUCH8, RTC_GPIO8 + AGPIO(GPIO_USER), // 34 I NO PULLUP GPIO34, ADC1_CH6, RTC_GPIO4 + AGPIO(GPIO_USER), // 35 I NO PULLUP GPIO35, ADC1_CH7, RTC_GPIO5 + AGPIO(GPIO_USER), // 36 I NO PULLUP GPIO36, SENSOR_VP, ADC_H, ADC1_CH0, RTC_GPIO0 + 0, // 37 NO PULLUP + 0, // 38 NO PULLUP + AGPIO(GPIO_USER), // 39 I NO PULLUP GPIO39, SENSOR_VN, ADC1_CH3, ADC_H, RTC_GPIO3 + 0 // Flag +}; + +/*********************************************************************************************\ + Known templates + +{"NAME":"AITHINKER CAM","GPIO":[4992,1,1,1,1,5088,1,1,1,1,1,1,1,1,5089,5090,0,5091,5184,5152,0,5120,5024,5056,0,0,0,0,4928,1,5094,5095,5092,0,0,5093],"FLAG":0,"BASE":1} +{"NAME":"Olimex ESP32-PoE","GPIO":[1,1,1,1,1,1,0,0,5536,1,1,1,1,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1} +{"NAME":"wESP32","GPIO":[1,1,1,1,1,1,0,0,0,1,1,1,5568,5600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1} +{"NAME":"Denky (Teleinfo)","GPIO":[1,1,1,1,5664,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1376,1,1,0,0,0,0,1,5632,1,1,1,0,0,1],"FLAG":0,"BASE":1} + +\*********************************************************************************************/ -#ifdef ESP32 -#include "tasmota_template_ESP32.h" #endif // ESP32 #endif // _TASMOTA_TEMPLATE_H_ diff --git a/tasmota/tasmota_template_ESP32.h b/tasmota/tasmota_template_ESP32.h deleted file mode 100644 index f0f59b488..000000000 --- a/tasmota/tasmota_template_ESP32.h +++ /dev/null @@ -1,729 +0,0 @@ -/* - tasmota_template_ESP32.h - ESP32 template settings for Tasmota - - Copyright (C) 2020 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 . -*/ - -#ifndef _TASMOTA_TEMPLATE_ESP32_H_ -#define _TASMOTA_TEMPLATE_ESP32_H_ - -#ifdef ESP32 - -// Hardware has no ESP32 -#undef USE_TUYA_DIMMER -#undef USE_PWM_DIMMER -#undef USE_EXS_DIMMER -#undef USE_ARMTRONIX_DIMMERS -#undef USE_SONOFF_RF -#undef USE_SONOFF_SC -#undef USE_SONOFF_IFAN -#undef USE_SONOFF_L1 -#undef USE_SONOFF_D1 -#undef USE_RF_FLASH - -// Not ported (yet) -#undef USE_DISCOVERY -#undef USE_MY92X1 -#undef USE_TUYA_MCU -#undef USE_PS_16_DZ - -enum UserSelectablePins { - GPIO_NONE, // Not used - GPIO_KEY1, GPIO_KEY1_NP, GPIO_KEY1_INV, GPIO_KEY1_INV_NP, // 4 x Button - GPIO_SWT1, GPIO_SWT1_NP, // 8 x User connected external switches - GPIO_REL1, GPIO_REL1_INV, // 8 x Relays - GPIO_LED1, GPIO_LED1_INV, // 4 x Leds - GPIO_CNTR1, GPIO_CNTR1_NP, // 4 x Counter - GPIO_PWM1, GPIO_PWM1_INV, // 5 x PWM - GPIO_BUZZER, GPIO_BUZZER_INV, // Buzzer - GPIO_LEDLNK, GPIO_LEDLNK_INV, // Link led - GPIO_I2C_SCL, GPIO_I2C_SDA, // Software I2C - GPIO_SPI_MISO, GPIO_SPI_MOSI, GPIO_SPI_CLK, GPIO_SPI_CS, GPIO_SPI_DC, // Hardware SPI - GPIO_SSPI_MISO, GPIO_SSPI_MOSI, GPIO_SSPI_SCLK, GPIO_SSPI_CS, GPIO_SSPI_DC, // Software SPI - GPIO_BACKLIGHT, // Display backlight control - GPIO_OLED_RESET, // OLED Display Reset - GPIO_IRSEND, GPIO_IRRECV, // IR interface - GPIO_RFSEND, GPIO_RFRECV, // RF interface - GPIO_DHT11, GPIO_DHT22, GPIO_SI7021, GPIO_DHT11_OUT, // DHT11, DHT21, DHT22, AM2301, AM2302, AM2321 - GPIO_DSB, GPIO_DSB_OUT, // DS18B20 or DS18S20 - GPIO_WS2812, // WS2812 Led string - GPIO_MHZ_TXD, GPIO_MHZ_RXD, // MH-Z19 Serial interface - GPIO_PZEM0XX_TX, GPIO_PZEM004_RX, GPIO_PZEM016_RX, GPIO_PZEM017_RX, // PZEM Serial Modbus interface - GPIO_SAIR_TX, GPIO_SAIR_RX, // SenseAir Serial interface - GPIO_PMS5003_TX, GPIO_PMS5003_RX, // Plantower PMS5003 Serial interface - GPIO_SDS0X1_TX, GPIO_SDS0X1_RX, // Nova Fitness SDS011 Serial interface - GPIO_SBR_TX, GPIO_SBR_RX, // Serial Bridge Serial interface - GPIO_SR04_TRIG, GPIO_SR04_ECHO, // SR04 interface - GPIO_SDM120_TX, GPIO_SDM120_RX, // SDM120 Serial interface - GPIO_SDM630_TX, GPIO_SDM630_RX, // SDM630 Serial interface - GPIO_TM16CLK, GPIO_TM16DIO, GPIO_TM16STB, // TM1638 interface - GPIO_MP3_DFR562, // RB-DFR-562, DFPlayer Mini MP3 Player - GPIO_HX711_SCK, GPIO_HX711_DAT, // HX711 Load Cell interface - GPIO_TX2X_TXD_BLACK, // TX20/TX23 Transmission Pin - GPIO_TUYA_TX, GPIO_TUYA_RX, // Tuya Serial interface - GPIO_MGC3130_XFER, GPIO_MGC3130_RESET, // MGC3130 interface - GPIO_RF_SENSOR, // Rf receiver with sensor decoding - GPIO_AZ_TXD, GPIO_AZ_RXD, // AZ-Instrument 7798 Serial interface - GPIO_MAX31855CS, GPIO_MAX31855CLK, GPIO_MAX31855DO, // MAX31855 Serial interface - GPIO_NRG_SEL, GPIO_NRG_SEL_INV, GPIO_NRG_CF1, GPIO_HLW_CF, GPIO_HJL_CF, // HLW8012/HJL-01/BL0937 energy monitoring - GPIO_MCP39F5_TX, GPIO_MCP39F5_RX, GPIO_MCP39F5_RST, // MCP39F501 Energy monitoring (Shelly2) - GPIO_PN532_TXD, GPIO_PN532_RXD, // PN532 NFC Serial interface - GPIO_SM16716_CLK, GPIO_SM16716_DAT, GPIO_SM16716_SEL, // SM16716 SELECT - GPIO_DI, GPIO_DCKI, // my92x1 PWM controller - GPIO_CSE7766_TX, GPIO_CSE7766_RX, // CSE7766 Serial interface (S31 and Pow R2) - GPIO_ARIRFRCV, GPIO_ARIRFSEL, // Arilux RF Receive input - GPIO_TXD, GPIO_RXD, // Serial interface - GPIO_ROT1A, GPIO_ROT1B, // Rotary switch - GPIO_ADC_JOY, // Analog joystick - GPIO_SSPI_MAX31865_CS1, // MAX31865 Chip Select - GPIO_HRE_CLOCK, GPIO_HRE_DATA, // HR-E Water Meter - GPIO_ADE7953_IRQ, // ADE7953 IRQ - GPIO_SOLAXX1_TX, GPIO_SOLAXX1_RX, // Solax Inverter Serial interface - GPIO_ZIGBEE_TX, GPIO_ZIGBEE_RX, // Zigbee Serial interface - GPIO_RDM6300_RX, // RDM6300 RX - GPIO_IBEACON_TX, GPIO_IBEACON_RX, // HM17 IBEACON Serial interface - GPIO_A4988_DIR, GPIO_A4988_STP, GPIO_A4988_ENA, // A4988 interface - GPIO_A4988_MS1, GPIO_A4988_MS2, GPIO_A4988_MS3, // A4988 microstep - GPIO_DDS2382_TX, GPIO_DDS2382_RX, // DDS2382 Serial interface - GPIO_DDSU666_TX, GPIO_DDSU666_RX, // DDSU666 Serial interface - GPIO_SM2135_CLK, GPIO_SM2135_DAT, // SM2135 PWM controller - GPIO_DEEPSLEEP, // Kill switch for deepsleep - GPIO_EXS_ENABLE, // EXS MCU Enable - GPIO_TASMOTACLIENT_TXD, GPIO_TASMOTACLIENT_RXD, // Client Serial interface - GPIO_TASMOTACLIENT_RST, GPIO_TASMOTACLIENT_RST_INV, // Client Reset - GPIO_HPMA_RX, GPIO_HPMA_TX, // Honeywell HPMA115S0 Serial interface - GPIO_GPS_RX, GPIO_GPS_TX, // GPS Serial interface - GPIO_HM10_RX, GPIO_HM10_TX, // HM10-BLE-Mijia-bridge Serial interface - GPIO_LE01MR_RX, GPIO_LE01MR_TX, // F&F LE-01MR energy meter - GPIO_CC1101_GDO0, GPIO_CC1101_GDO2, // CC1101 Serial interface - GPIO_HRXL_RX, // Data from MaxBotix HRXL sonar range sensor - GPIO_ELECTRIQ_MOODL_TX, // ElectriQ iQ-wifiMOODL Serial TX - GPIO_AS3935, // Franklin Lightning Sensor - GPIO_ADC_INPUT, // Analog input - GPIO_ADC_TEMP, // Analog Thermistor - GPIO_ADC_LIGHT, // Analog Light sensor - GPIO_ADC_BUTTON, GPIO_ADC_BUTTON_INV, // Analog Button - GPIO_ADC_RANGE, // Analog Range - GPIO_ADC_CT_POWER, // ANalog Current - GPIO_WEBCAM_PWDN, GPIO_WEBCAM_RESET, GPIO_WEBCAM_XCLK, // Webcam - GPIO_WEBCAM_SIOD, GPIO_WEBCAM_SIOC, // Webcam I2C - GPIO_WEBCAM_DATA, - GPIO_WEBCAM_VSYNC, GPIO_WEBCAM_HREF, GPIO_WEBCAM_PCLK, - GPIO_WEBCAM_PSCLK, - GPIO_WEBCAM_HSD, - GPIO_WEBCAM_PSRCS, - GPIO_BOILER_OT_RX, GPIO_BOILER_OT_TX, // OpenTherm Boiler TX pin - GPIO_WINDMETER_SPEED, // WindMeter speed counter pin - GPIO_KEY1_TC, // Touch pin as button - GPIO_BL0940_RX, // BL0940 serial interface - GPIO_TCP_TX, GPIO_TCP_RX, // TCP to serial bridge - GPIO_ETH_PHY_POWER, GPIO_ETH_PHY_MDC, GPIO_ETH_PHY_MDIO, // Ethernet - GPIO_TELEINFO_RX, // Teleinfo telemetry data receive pin - GPIO_TELEINFO_ENABLE, // Teleinfo Enable Receive Pin - GPIO_LMT01, // LMT01 input counting pin - GPIO_IEM3000_TX, GPIO_IEM3000_RX, // IEM3000 Serial interface - GPIO_ZIGBEE_RST, // Zigbee reset - GPIO_DYP_RX, - GPIO_SENSOR_END }; - -enum ProgramSelectablePins { -// GPIO_FIX_START = 254, - GPIO_FIX_START = 2046, - GPIO_USER, // User configurable needs to be 2047 - GPIO_MAX }; - -// Text in webpage Module Parameters and commands GPIOS and GPIO -const char kSensorNames[] PROGMEM = - D_SENSOR_NONE "|" - D_SENSOR_BUTTON "|" D_SENSOR_BUTTON "_n|" D_SENSOR_BUTTON "_i|" D_SENSOR_BUTTON "_in|" - D_SENSOR_SWITCH "|" D_SENSOR_SWITCH "_n|" - D_SENSOR_RELAY "|" D_SENSOR_RELAY "_i|" - D_SENSOR_LED "|" D_SENSOR_LED "_i|" - D_SENSOR_COUNTER "|" D_SENSOR_COUNTER "_n|" - D_SENSOR_PWM "|" D_SENSOR_PWM "_i|" - D_SENSOR_BUZZER "|" D_SENSOR_BUZZER "_i|" - D_SENSOR_LED_LINK "|" D_SENSOR_LED_LINK "_i|" - D_SENSOR_I2C_SCL "|" D_SENSOR_I2C_SDA "|" - D_SENSOR_SPI_MISO "|" D_SENSOR_SPI_MOSI "|" D_SENSOR_SPI_CLK "|" D_SENSOR_SPI_CS "|" D_SENSOR_SPI_DC "|" - D_SENSOR_SSPI_MISO "|" D_SENSOR_SSPI_MOSI "|" D_SENSOR_SSPI_SCLK "|" D_SENSOR_SSPI_CS "|" D_SENSOR_SSPI_DC "|" - D_SENSOR_BACKLIGHT "|" D_SENSOR_OLED_RESET "|" - D_SENSOR_IRSEND "|" D_SENSOR_IRRECV "|" - D_SENSOR_RFSEND "|" D_SENSOR_RFRECV "|" - D_SENSOR_DHT11 "|" D_SENSOR_AM2301 "|" D_SENSOR_SI7021 "|" D_SENSOR_DHT11 "_o|" - D_SENSOR_DS18X20 "|" D_SENSOR_DS18X20 "_o|" - D_SENSOR_WS2812 "|" - D_SENSOR_MHZ_TX "|" D_SENSOR_MHZ_RX "|" - D_SENSOR_PZEM0XX_TX "|" D_SENSOR_PZEM004_RX "|" D_SENSOR_PZEM016_RX "|" D_SENSOR_PZEM017_RX "|" - D_SENSOR_SAIR_TX "|" D_SENSOR_SAIR_RX "|" - D_SENSOR_PMS5003_TX "|" D_SENSOR_PMS5003_RX "|" - D_SENSOR_SDS0X1_TX "|" D_SENSOR_SDS0X1_RX "|" - D_SENSOR_SBR_TX "|" D_SENSOR_SBR_RX "|" - D_SENSOR_SR04_TRIG "|" D_SENSOR_SR04_ECHO "|" - D_SENSOR_SDM120_TX "|" D_SENSOR_SDM120_RX "|" - D_SENSOR_SDM630_TX "|" D_SENSOR_SDM630_RX "|" - D_SENSOR_TM1638_CLK "|" D_SENSOR_TM1638_DIO "|" D_SENSOR_TM1638_STB "|" - D_SENSOR_DFR562 "|" - D_SENSOR_HX711_SCK "|" D_SENSOR_HX711_DAT "|" - D_SENSOR_TX2X_TX "|" - D_SENSOR_TUYA_TX "|" D_SENSOR_TUYA_RX "|" - D_SENSOR_MGC3130_XFER "|" D_SENSOR_MGC3130_RESET "|" - D_SENSOR_RF_SENSOR "|" - D_SENSOR_AZ_TX "|" D_SENSOR_AZ_RX "|" - D_SENSOR_MAX31855_CS "|" D_SENSOR_MAX31855_CLK "|" D_SENSOR_MAX31855_DO "|" - D_SENSOR_NRG_SEL "|" D_SENSOR_NRG_SEL "_i|" D_SENSOR_NRG_CF1 "|" D_SENSOR_HLW_CF "|" D_SENSOR_HJL_CF "|" - D_SENSOR_MCP39F5_TX "|" D_SENSOR_MCP39F5_RX "|" D_SENSOR_MCP39F5_RST "|" - D_SENSOR_PN532_TX "|" D_SENSOR_PN532_RX "|" - D_SENSOR_SM16716_CLK "|" D_SENSOR_SM16716_DAT "|" D_SENSOR_SM16716_POWER "|" - D_SENSOR_MY92X1_DI "|" D_SENSOR_MY92X1_DCKI "|" - D_SENSOR_CSE7766_TX "|" D_SENSOR_CSE7766_RX "|" - D_SENSOR_ARIRFRCV "|" D_SENSOR_ARIRFSEL "|" - D_SENSOR_TXD "|" D_SENSOR_RXD "|" - D_SENSOR_ROTARY "_a|" D_SENSOR_ROTARY "_b|" - D_SENSOR_ADC_JOYSTICK "|" - D_SENSOR_MAX31865_CS "|" - D_SENSOR_HRE_CLOCK "|" D_SENSOR_HRE_DATA "|" - D_SENSOR_ADE7953_IRQ "|" - D_SENSOR_SOLAXX1_TX "|" D_SENSOR_SOLAXX1_RX "|" - D_SENSOR_ZIGBEE_TXD "|" D_SENSOR_ZIGBEE_RXD "|" - D_SENSOR_RDM6300_RX "|" - D_SENSOR_IBEACON_TX "|" D_SENSOR_IBEACON_RX "|" - D_SENSOR_A4988_DIR "|" D_SENSOR_A4988_STP "|" D_SENSOR_A4988_ENA "|" D_SENSOR_A4988_MS1 "|" D_SENSOR_A4988_MS2 "|" D_SENSOR_A4988_MS3 "|" - D_SENSOR_DDS2382_TX "|" D_SENSOR_DDS2382_RX "|" - D_SENSOR_DDSU666_TX "|" D_SENSOR_DDSU666_RX "|" - D_SENSOR_SM2135_CLK "|" D_SENSOR_SM2135_DAT "|" - D_SENSOR_DEEPSLEEP "|" D_SENSOR_EXS_ENABLE "|" - D_SENSOR_CLIENT_TX "|" D_SENSOR_CLIENT_RX "|" D_SENSOR_CLIENT_RESET "|" D_SENSOR_CLIENT_RESET "_i|" - D_SENSOR_HPMA_RX "|" D_SENSOR_HPMA_TX "|" - D_SENSOR_GPS_RX "|" D_SENSOR_GPS_TX "|" - D_SENSOR_HM10_RX "|" D_SENSOR_HM10_TX "|" - D_SENSOR_LE01MR_RX "|" D_SENSOR_LE01MR_TX "|" - D_SENSOR_CC1101_GDO0 "|" D_SENSOR_CC1101_GDO2 "|" - D_SENSOR_HRXL_RX "|" - D_SENSOR_ELECTRIQ_MOODL "|" - D_SENSOR_AS3935 "|" - D_SENSOR_ADC_INPUT "|" - D_SENSOR_ADC_TEMP "|" - D_SENSOR_ADC_LIGHT "|" - D_SENSOR_ADC_BUTTON "|" D_SENSOR_ADC_BUTTON "_i|" - D_SENSOR_ADC_RANGE "|" - D_SENSOR_ADC_CT_POWER "|" - D_GPIO_WEBCAM_PWDN "|" D_GPIO_WEBCAM_RESET "|" D_GPIO_WEBCAM_XCLK "|" - D_GPIO_WEBCAM_SIOD "|" D_GPIO_WEBCAM_SIOC "|" - D_GPIO_WEBCAM_DATA "|" - D_GPIO_WEBCAM_VSYNC "|" D_GPIO_WEBCAM_HREF "|" D_GPIO_WEBCAM_PCLK "|" - D_GPIO_WEBCAM_PSCLK "|" - D_GPIO_WEBCAM_HSD "|" - D_GPIO_WEBCAM_PSRCS "|" - D_SENSOR_BOILER_OT_RX "|" D_SENSOR_BOILER_OT_TX "|" - D_SENSOR_WINDMETER_SPEED "|" D_SENSOR_BUTTON "_tc|" - D_SENSOR_BL0940_RX "|" - D_SENSOR_TCP_TXD "|" D_SENSOR_TCP_RXD "|" - D_SENSOR_ETH_PHY_POWER "|" D_SENSOR_ETH_PHY_MDC "|" D_SENSOR_ETH_PHY_MDIO "|" - D_SENSOR_TELEINFO_RX "|" D_SENSOR_TELEINFO_ENABLE "|" - D_SENSOR_LMT01_PULSE "|" - D_SENSOR_IEM3000_TX "|" D_SENSOR_IEM3000_RX "|" - D_SENSOR_ZIGBEE_RST "|" - D_SENSOR_DYP_RX - ; - -const char kSensorNamesFixed[] PROGMEM = - D_SENSOR_USER; - -#define MAX_MAX31865_CS 6 -#define MAX_WEBCAM_DATA 8 -#define MAX_WEBCAM_HSD 3 - -const uint16_t kGpioNiceList[] PROGMEM = { - GPIO_NONE, // Not used - AGPIO(GPIO_KEY1) + MAX_KEYS, // Buttons - AGPIO(GPIO_KEY1_NP) + MAX_KEYS, - AGPIO(GPIO_KEY1_INV) + MAX_KEYS, - AGPIO(GPIO_KEY1_INV_NP) + MAX_KEYS, - AGPIO(GPIO_KEY1_TC) + MAX_KEYS, // Touch button - AGPIO(GPIO_SWT1) + MAX_SWITCHES, // User connected external switches - AGPIO(GPIO_SWT1_NP) + MAX_SWITCHES, -#ifdef ROTARY_V1 - AGPIO(GPIO_ROT1A) + MAX_ROTARIES, // Rotary A Pin - AGPIO(GPIO_ROT1B) + MAX_ROTARIES, // Rotary B Pin -#endif - AGPIO(GPIO_REL1) + MAX_RELAYS, // Relays - AGPIO(GPIO_REL1_INV) + MAX_RELAYS, - AGPIO(GPIO_LED1) + MAX_LEDS, // Leds - AGPIO(GPIO_LED1_INV) + MAX_LEDS, -#ifdef USE_COUNTER - AGPIO(GPIO_CNTR1) + MAX_COUNTERS, // Counters - AGPIO(GPIO_CNTR1_NP) + MAX_COUNTERS, -#endif - AGPIO(GPIO_PWM1) + MAX_PWMS, // RGB Red or C Cold White - AGPIO(GPIO_PWM1_INV) + MAX_PWMS, -#ifdef USE_BUZZER - AGPIO(GPIO_BUZZER), // Buzzer - AGPIO(GPIO_BUZZER_INV), // Inverted buzzer -#endif - AGPIO(GPIO_LEDLNK), // Link led - AGPIO(GPIO_LEDLNK_INV), // Inverted link led -#ifdef USE_I2C - AGPIO(GPIO_I2C_SCL), // I2C SCL - AGPIO(GPIO_I2C_SDA), // I2C SDA -#endif -#ifdef USE_SPI - AGPIO(GPIO_SPI_MISO), // SPI MISO - AGPIO(GPIO_SPI_MOSI), // SPI MOSI - AGPIO(GPIO_SPI_CLK), // SPI Clk - AGPIO(GPIO_SPI_CS), // SPI Chip Select - AGPIO(GPIO_SPI_DC), // SPI Data Direction -#endif - AGPIO(GPIO_SSPI_MISO), // Software SPI Master Input Client Output - AGPIO(GPIO_SSPI_MOSI), // Software SPI Master Output Client Input - AGPIO(GPIO_SSPI_SCLK), // Software SPI Serial Clock - AGPIO(GPIO_SSPI_CS), // Software SPI Chip Select - AGPIO(GPIO_SSPI_DC), // Software SPI Data or Command -#ifdef USE_DISPLAY - AGPIO(GPIO_BACKLIGHT), // Display backlight control - AGPIO(GPIO_OLED_RESET), // OLED Display Reset -#endif - - AGPIO(GPIO_TXD), // Serial interface - AGPIO(GPIO_RXD), // Serial interface - -#ifdef USE_DHT - AGPIO(GPIO_DHT11), // DHT11 - AGPIO(GPIO_DHT22), // DHT21, DHT22, AM2301, AM2302, AM2321 - AGPIO(GPIO_SI7021), // iTead SI7021 - AGPIO(GPIO_DHT11_OUT), // Pseudo Single wire DHT11, DHT21, DHT22, AM2301, AM2302, AM2321 -#endif -#ifdef USE_DS18x20 - AGPIO(GPIO_DSB), // Single wire DS18B20 or DS18S20 - AGPIO(GPIO_DSB_OUT), // Pseudo Single wire DS18B20 or DS18S20 -#endif -#ifdef USE_LMT01 - AGPIO(GPIO_LMT01), // LMT01, count pulses on GPIO -#endif - -// Light -#ifdef USE_LIGHT -#ifdef USE_WS2812 - AGPIO(GPIO_WS2812), // WS2812 Led string -#endif -#ifdef USE_ARILUX_RF - AGPIO(GPIO_ARIRFRCV), // AriLux RF Receive input - AGPIO(GPIO_ARIRFSEL), // Arilux RF Receive input selected -#endif -#ifdef USE_MY92X1 - AGPIO(GPIO_DI), // my92x1 PWM input - AGPIO(GPIO_DCKI), // my92x1 CLK input -#endif // USE_MY92X1 -#ifdef USE_SM16716 - AGPIO(GPIO_SM16716_CLK), // SM16716 CLOCK - AGPIO(GPIO_SM16716_DAT), // SM16716 DATA - AGPIO(GPIO_SM16716_SEL), // SM16716 SELECT -#endif // USE_SM16716 -#ifdef USE_SM2135 - AGPIO(GPIO_SM2135_CLK), // SM2135 CLOCK - AGPIO(GPIO_SM2135_DAT), // SM2135 DATA -#endif // USE_SM2135 -#ifdef USE_TUYA_MCU - AGPIO(GPIO_TUYA_TX), // Tuya Serial interface - AGPIO(GPIO_TUYA_RX), // Tuya Serial interface -#endif -#ifdef USE_EXS_DIMMER - AGPIO(GPIO_EXS_ENABLE), // EXS MCU Enable -#endif -#ifdef USE_ELECTRIQ_MOODL - AGPIO(GPIO_ELECTRIQ_MOODL_TX), -#endif -#endif // USE_LIGHT - -#if defined(USE_IR_REMOTE) || defined(USE_IR_REMOTE_FULL) - AGPIO(GPIO_IRSEND), // IR remote -#if defined(USE_IR_RECEIVE) || defined(USE_IR_REMOTE_FULL) - AGPIO(GPIO_IRRECV), // IR receiver -#endif -#endif - -#ifdef USE_RC_SWITCH - AGPIO(GPIO_RFSEND), // RF transmitter - AGPIO(GPIO_RFRECV), // RF receiver -#endif -#ifdef USE_RF_SENSOR - AGPIO(GPIO_RF_SENSOR), // Rf receiver with sensor decoding -#endif -#ifdef USE_SR04 - AGPIO(GPIO_SR04_TRIG), // SR04 Tri/TXgger pin - AGPIO(GPIO_SR04_ECHO), // SR04 Ech/RXo pin -#endif -#ifdef USE_TM1638 - AGPIO(GPIO_TM16CLK), // TM1638 Clock - AGPIO(GPIO_TM16DIO), // TM1638 Data I/O - AGPIO(GPIO_TM16STB), // TM1638 Strobe -#endif -#ifdef USE_HX711 - AGPIO(GPIO_HX711_SCK), // HX711 Load Cell clock - AGPIO(GPIO_HX711_DAT), // HX711 Load Cell data -#endif - -// Energy sensors -#ifdef USE_ENERGY_SENSOR -#ifdef USE_HLW8012 - AGPIO(GPIO_NRG_SEL), // HLW8012/HLJ-01 Sel output (1 = Voltage) - AGPIO(GPIO_NRG_SEL_INV), // HLW8012/HLJ-01 Sel output (0 = Voltage) - AGPIO(GPIO_NRG_CF1), // HLW8012/HLJ-01 CF1 voltage / current - AGPIO(GPIO_HLW_CF), // HLW8012 CF power - AGPIO(GPIO_HJL_CF), // HJL-01/BL0937 CF power -#endif -#if defined(USE_I2C) && defined(USE_ADE7953) - AGPIO(GPIO_ADE7953_IRQ), // ADE7953 IRQ -#endif -#ifdef USE_CSE7766 - AGPIO(GPIO_CSE7766_TX), // CSE7766 Serial interface (S31 and Pow R2) - AGPIO(GPIO_CSE7766_RX), // CSE7766 Serial interface (S31 and Pow R2) -#endif -#ifdef USE_MCP39F501 - AGPIO(GPIO_MCP39F5_TX), // MCP39F501 Serial interface (Shelly2) - AGPIO(GPIO_MCP39F5_RX), // MCP39F501 Serial interface (Shelly2) - AGPIO(GPIO_MCP39F5_RST), // MCP39F501 Reset (Shelly2) -#endif -#if defined(USE_PZEM004T) || defined(USE_PZEM_AC) || defined(USE_PZEM_DC) - AGPIO(GPIO_PZEM0XX_TX), // PZEM0XX Serial interface -#endif -#ifdef USE_PZEM004T - AGPIO(GPIO_PZEM004_RX), // PZEM004T Serial interface -#endif -#ifdef USE_PZEM_AC - AGPIO(GPIO_PZEM016_RX), // PZEM-014,016 Serial Modbus interface -#endif -#ifdef USE_PZEM_DC - AGPIO(GPIO_PZEM017_RX), // PZEM-003,017 Serial Modbus interface -#endif -#ifdef USE_SDM120 - AGPIO(GPIO_SDM120_TX), // SDM120 Serial interface - AGPIO(GPIO_SDM120_RX), // SDM120 Serial interface -#endif -#ifdef USE_SDM630 - AGPIO(GPIO_SDM630_TX), // SDM630 Serial interface - AGPIO(GPIO_SDM630_RX), // SDM630 Serial interface -#endif -#ifdef USE_DDS2382 - AGPIO(GPIO_DDS2382_TX), // DDS2382 Serial interface - AGPIO(GPIO_DDS2382_RX), // DDS2382 Serial interface -#endif -#ifdef USE_DDSU666 - AGPIO(GPIO_DDSU666_TX), // DDSU666 Serial interface - AGPIO(GPIO_DDSU666_RX), // DDSU666 Serial interface -#endif // USE_DDSU666 -#ifdef USE_SOLAX_X1 - AGPIO(GPIO_SOLAXX1_TX), // Solax Inverter tx pin - AGPIO(GPIO_SOLAXX1_RX), // Solax Inverter rx pin -#endif // USE_SOLAX_X1 -#ifdef USE_LE01MR - AGPIO(GPIO_LE01MR_TX), // F7F LE-01MR energy meter tx pin - AGPIO(GPIO_LE01MR_RX), // F7F LE-01MR energy meter rx pin -#endif // IFDEF:USE_LE01MR -#ifdef USE_BL0940 - AGPIO(GPIO_BL0940_RX), // BL0940 Serial interface -#endif -#ifdef USE_IEM3000 - AGPIO(GPIO_IEM3000_TX), // IEM3000 Serial interface - AGPIO(GPIO_IEM3000_RX), // IEM3000 Serial interface -#endif -#endif // USE_ENERGY_SENSOR - -// Serial -#ifdef USE_SERIAL_BRIDGE - AGPIO(GPIO_SBR_TX), // Serial Bridge Serial interface - AGPIO(GPIO_SBR_RX), // Serial Bridge Serial interface -#endif -#ifdef USE_TCP_BRIDGE - AGPIO(GPIO_TCP_TX), // TCP Serial bridge - AGPIO(GPIO_TCP_RX), // TCP Serial bridge -#endif -#ifdef USE_ZIGBEE - AGPIO(GPIO_ZIGBEE_TX), // Zigbee Serial interface - AGPIO(GPIO_ZIGBEE_RX), // Zigbee Serial interface - AGPIO(GPIO_ZIGBEE_RST), // Zigbee reset -#endif -#ifdef USE_MHZ19 - AGPIO(GPIO_MHZ_TXD), // MH-Z19 Serial interface - AGPIO(GPIO_MHZ_RXD), // MH-Z19 Serial interface -#endif -#ifdef USE_SENSEAIR - AGPIO(GPIO_SAIR_TX), // SenseAir Serial interface - AGPIO(GPIO_SAIR_RX), // SenseAir Serial interface -#endif -#ifdef USE_NOVA_SDS - AGPIO(GPIO_SDS0X1_TX), // Nova Fitness SDS011 Serial interface - AGPIO(GPIO_SDS0X1_RX), // Nova Fitness SDS011 Serial interface -#endif -#ifdef USE_HPMA - AGPIO(GPIO_HPMA_TX), // Honeywell HPMA115S0 Serial interface - AGPIO(GPIO_HPMA_RX), // Honeywell HPMA115S0 Serial interface -#endif -#ifdef USE_PMS5003 - AGPIO(GPIO_PMS5003_TX), // Plantower PMS5003 Serial interface - AGPIO(GPIO_PMS5003_RX), // Plantower PMS5003 Serial interface -#endif -#if defined(USE_TX20_WIND_SENSOR) || defined(USE_TX23_WIND_SENSOR) - AGPIO(GPIO_TX2X_TXD_BLACK), // TX20/TX23 Transmission Pin -#endif -#ifdef USE_WINDMETER - AGPIO(GPIO_WINDMETER_SPEED), -#endif -#ifdef USE_MP3_PLAYER - AGPIO(GPIO_MP3_DFR562), // RB-DFR-562, DFPlayer Mini MP3 Player Serial interface -#endif -#ifdef USE_AZ7798 - AGPIO(GPIO_AZ_TXD), // AZ-Instrument 7798 CO2 datalogger Serial interface - AGPIO(GPIO_AZ_RXD), // AZ-Instrument 7798 CO2 datalogger Serial interface -#endif -#ifdef USE_PN532_HSU - AGPIO(GPIO_PN532_TXD), // PN532 HSU Tx - AGPIO(GPIO_PN532_RXD), // PN532 HSU Rx -#endif -#ifdef USE_TASMOTA_CLIENT - AGPIO(GPIO_TASMOTACLIENT_TXD), // Tasmota Client TX - AGPIO(GPIO_TASMOTACLIENT_RXD), // Tasmota Client RX - AGPIO(GPIO_TASMOTACLIENT_RST), // Tasmota Client Reset - AGPIO(GPIO_TASMOTACLIENT_RST_INV), // Tasmota Client Reset Inverted -#endif -#ifdef USE_RDM6300 - AGPIO(GPIO_RDM6300_RX), -#endif -#ifdef USE_IBEACON - AGPIO(GPIO_IBEACON_TX), - AGPIO(GPIO_IBEACON_RX), -#endif -#ifdef USE_GPS - AGPIO(GPIO_GPS_TX), // GPS serial interface - AGPIO(GPIO_GPS_RX), // GPS serial interface -#endif -#ifdef USE_HM10 - AGPIO(GPIO_HM10_TX), // GPS serial interface - AGPIO(GPIO_HM10_RX), // GPS serial interface -#endif -#ifdef USE_OPENTHERM - AGPIO(GPIO_BOILER_OT_TX), - AGPIO(GPIO_BOILER_OT_RX), -#endif - -#ifdef USE_MGC3130 - AGPIO(GPIO_MGC3130_XFER), - AGPIO(GPIO_MGC3130_RESET), -#endif -#ifdef USE_MAX31855 - AGPIO(GPIO_MAX31855CS), // MAX31855 Serial interface - AGPIO(GPIO_MAX31855CLK), // MAX31855 Serial interface - AGPIO(GPIO_MAX31855DO), // MAX31855 Serial interface -#endif -#ifdef USE_MAX31855 - AGPIO(GPIO_SSPI_MAX31865_CS1) + MAX_MAX31865_CS, -#endif -#ifdef USE_HRE - AGPIO(GPIO_HRE_CLOCK), - AGPIO(GPIO_HRE_DATA), -#endif -#ifdef USE_A4988_STEPPER - AGPIO(GPIO_A4988_DIR), // A4988 direction pin - AGPIO(GPIO_A4988_STP), // A4988 step pin - // folowing are not mandatory - AGPIO(GPIO_A4988_ENA), // A4988 enabled pin - AGPIO(GPIO_A4988_MS1), // A4988 microstep pin1 - AGPIO(GPIO_A4988_MS2), // A4988 microstep pin2 - AGPIO(GPIO_A4988_MS3), // A4988 microstep pin3 -#endif -#ifdef USE_DEEPSLEEP - AGPIO(GPIO_DEEPSLEEP), -#endif -#ifdef USE_KEELOQ - AGPIO(GPIO_CC1101_GDO0), // CC1101 pin for RX - AGPIO(GPIO_CC1101_GDO2), // CC1101 pin for RX -#endif -#ifdef USE_HRXL - AGPIO(GPIO_HRXL_RX), -#endif -#ifdef USE_DYP - AGPIO(GPIO_DYP_RX), -#endif -#ifdef USE_AS3935 - AGPIO(GPIO_AS3935), // AS3935 IRQ Pin -#endif -#ifdef USE_TELEINFO - AGPIO(GPIO_TELEINFO_RX), - AGPIO(GPIO_TELEINFO_ENABLE), -#endif -#ifdef USE_ADC - AGPIO(GPIO_ADC_INPUT) + MAX_ADCS, // Analog inputs - AGPIO(GPIO_ADC_TEMP) + MAX_ADCS, // Thermistor - AGPIO(GPIO_ADC_LIGHT) + MAX_ADCS, // Light sensor - AGPIO(GPIO_ADC_BUTTON) + MAX_ADCS, // Button - AGPIO(GPIO_ADC_BUTTON_INV) + MAX_ADCS, - AGPIO(GPIO_ADC_RANGE) + MAX_ADCS, // Range - AGPIO(GPIO_ADC_CT_POWER) + MAX_ADCS, // Current - AGPIO(GPIO_ADC_JOY) + MAX_ADCS, // Joystick -#endif -#ifdef USE_WEBCAM - AGPIO(GPIO_WEBCAM_PWDN), - AGPIO(GPIO_WEBCAM_RESET), - AGPIO(GPIO_WEBCAM_XCLK), - AGPIO(GPIO_WEBCAM_SIOD), - AGPIO(GPIO_WEBCAM_SIOC), - AGPIO(GPIO_WEBCAM_DATA) + MAX_WEBCAM_DATA, - AGPIO(GPIO_WEBCAM_VSYNC), - AGPIO(GPIO_WEBCAM_HREF), - AGPIO(GPIO_WEBCAM_PCLK), - AGPIO(GPIO_WEBCAM_PSCLK), - AGPIO(GPIO_WEBCAM_HSD) + MAX_WEBCAM_HSD, - AGPIO(GPIO_WEBCAM_PSRCS), -#endif -#ifdef USE_ETHERNET - AGPIO(GPIO_ETH_PHY_POWER), - AGPIO(GPIO_ETH_PHY_MDC), - AGPIO(GPIO_ETH_PHY_MDIO), // Ethernet -#endif -}; - -//******************************************************************************************** - -// User selectable ADC functionality -enum UserSelectableAdc { - ADC_NONE, // Not used - ADC_INPUT, // Analog input - ADC_TEMP, // Thermistor - ADC_LIGHT, // Light sensor - ADC_BUTTON, // Button - ADC_BUTTON_INV, - ADC_RANGE, // Range - ADC_CT_POWER, // Current - ADC_JOY, // Joystick -// ADC_SWITCH, // Switch -// ADC_SWITCH_INV, - ADC_END }; - -#define MAX_GPIO_PIN 40 // Number of supported GPIO -#define MIN_FLASH_PINS 4 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8 and 11) -#define MAX_USER_PINS 36 // MAX_GPIO_PIN - MIN_FLASH_PINS -#define WEMOS_MODULE 0 // Wemos module - -// 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839 -const char PINS_WEMOS[] PROGMEM = "IOTXIORXIOIOflashcFLFLolIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOAOAOIAIAIAIAIAIA"; - -//******************************************************************************************** - -typedef struct MYIO { - uint16_t io[MAX_GPIO_PIN]; -} myio; // 40 * 2 = 80 bytes - -typedef struct MYCFGIO { - uint16_t io[MAX_USER_PINS]; -} mycfgio; // 36 * 2 = 72 bytes - -#define GPIO_FLAG_USED 0 // Currently no flags used - -typedef union { - uint16_t data; - struct { - uint16_t spare00 : 1; - uint16_t spare01 : 1; - uint16_t spare02 : 1; - uint16_t spare03 : 1; - uint16_t spare04 : 1; - uint16_t spare05 : 1; - uint16_t spare06 : 1; - uint16_t spare07 : 1; - uint16_t spare08 : 1; - uint16_t spare09 : 1; - uint16_t spare10 : 1; - uint16_t spare11 : 1; - uint16_t spare12 : 1; - uint16_t spare13 : 1; - uint16_t spare14 : 1; - uint16_t spare15 : 1; - }; -} gpio_flag; // 2 bytes - -typedef struct MYTMPLT { - mycfgio gp; // 72 bytes - gpio_flag flag; // 2 bytes -} mytmplt; // 74 bytes - -/********************************************************************************************/ -// Supported hardware modules -enum SupportedModules { WEMOS, ESP32_CAM_AITHINKER, MAXMODULE }; - -#define USER_MODULE 255 - -const char kModuleNames[] PROGMEM = "ESP32-DevKit|ESP32 Cam AiThinker"; - -// Default module settings -const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { WEMOS, ESP32_CAM_AITHINKER }; - -const mytmplt kModules PROGMEM = -{ // WEMOS - Espressif ESP32-DevKitC - Any ESP32 device like WeMos and NodeMCU hardware (ESP32) - AGPIO(GPIO_USER), // 0 (I)O GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1, EMAC_TX_CLK - AGPIO(GPIO_USER), // 1 IO TXD0 GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2 - AGPIO(GPIO_USER), // 2 IO GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP, HS2_DATA0, SD_DATA0 - AGPIO(GPIO_USER), // 3 IO RXD0 GPIO3, U0RXD, CLK_OUT2 - AGPIO(GPIO_USER), // 4 IO GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER - AGPIO(GPIO_USER), // 5 IO GPIO5, VSPICS0, HS1_DATA6, EMAC_RX_CLK - // 6 IO GPIO6, Flash CLK - // 7 IO GPIO7, Flash D0 - // 8 IO GPIO8, Flash D1 - AGPIO(GPIO_USER), // 9 IO GPIO9, Flash D2, U1RXD - AGPIO(GPIO_USER), // 10 IO GPIO10, Flash D3, U1TXD - // 11 IO GPIO11, Flash CMD - AGPIO(GPIO_USER), // 12 (I)O GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3 (If driven High, flash voltage (VDD_SDIO) is 1.8V not default 3.3V. Has internal pull-down, so unconnected = Low = 3.3V. May prevent flashing and/or booting if 3.3V flash is connected and pulled high. See ESP32 datasheet for more details.) - AGPIO(GPIO_USER), // 13 IO GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID, HS2_DATA3, SD_DATA3, EMAC_RX_ER - AGPIO(GPIO_USER), // 14 IO GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2 - AGPIO(GPIO_USER), // 15 (I)O GPIO15, ADC2_CH3, TOUCH3, MTDO, HSPICS0, RTC_GPIO13, HS2_CMD, SD_CMD, EMAC_RXD3 (If driven Low, silences boot messages from normal boot. Has internal pull-up, so unconnected = High = normal output.) - AGPIO(GPIO_USER), // 16 IO GPIO16, HS1_DATA4, U2RXD, EMAC_CLK_OUT - AGPIO(GPIO_USER), // 17 IO GPIO17, HS1_DATA5, U2TXD, EMAC_CLK_OUT_180 - AGPIO(GPIO_USER), // 18 IO GPIO18, VSPICLK, HS1_DATA7 - AGPIO(GPIO_USER), // 19 IO GPIO19, VSPIQ, U0CTS, EMAC_TXD0 - 0, // 20 - AGPIO(GPIO_USER), // 21 IO GPIO21, VSPIHD, EMAC_TX_EN - AGPIO(GPIO_USER), // 22 IO LED GPIO22, VSPIWP, U0RTS, EMAC_TXD1 - AGPIO(GPIO_USER), // 23 IO GPIO23, VSPID, HS1_STROBE - 0, // 24 - AGPIO(GPIO_USER), // 25 IO GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0 - AGPIO(GPIO_USER), // 26 IO GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1 - AGPIO(GPIO_USER), // 27 IO GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV - 0, // 28 - 0, // 29 - 0, // 30 - 0, // 31 - AGPIO(GPIO_USER), // 32 IO GPIO32, XTAL_32K_P (32.768 kHz crystal oscillator input), ADC1_CH4, TOUCH9, RTC_GPIO9 - AGPIO(GPIO_USER), // 33 IO GPIO33, XTAL_32K_N (32.768 kHz crystal oscillator output), ADC1_CH5, TOUCH8, RTC_GPIO8 - AGPIO(GPIO_USER), // 34 I NO PULLUP GPIO34, ADC1_CH6, RTC_GPIO4 - AGPIO(GPIO_USER), // 35 I NO PULLUP GPIO35, ADC1_CH7, RTC_GPIO5 - AGPIO(GPIO_USER), // 36 I NO PULLUP GPIO36, SENSOR_VP, ADC_H, ADC1_CH0, RTC_GPIO0 - 0, // 37 NO PULLUP - 0, // 38 NO PULLUP - AGPIO(GPIO_USER), // 39 I NO PULLUP GPIO39, SENSOR_VN, ADC1_CH3, ADC_H, RTC_GPIO3 - 0 // Flag -}; - -/*********************************************************************************************\ - Known templates - -{"NAME":"AITHINKER CAM","GPIO":[4992,1,1,1,1,5088,1,1,1,1,1,1,1,1,5089,5090,0,5091,5184,5152,0,5120,5024,5056,0,0,0,0,4928,1,5094,5095,5092,0,0,5093],"FLAG":0,"BASE":1} -{"NAME":"Olimex ESP32-PoE","GPIO":[1,1,1,1,1,1,0,0,5536,1,1,1,1,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1} -{"NAME":"wESP32","GPIO":[1,1,1,1,1,1,0,0,0,1,1,1,5568,5600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1} -{"NAME":"Denky (Teleinfo)","GPIO":[1,1,1,1,5664,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1376,1,1,0,0,0,0,1,5632,1,1,1,0,0,1],"FLAG":0,"BASE":1} - -\*********************************************************************************************/ - -#endif // ESP32 - -#endif // _TASMOTA_TEMPLATE_ESP32_H_ diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index ed15c9e12..dda6c9a73 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -405,14 +405,14 @@ const char HTTP_SCRIPT_MODULE_TEMPLATE_COMPRESSED[] PROGMEM = "\x33\xBF\xAC\xF1\ #define HTTP_SCRIPT_MODULE_TEMPLATE Decompress(HTTP_SCRIPT_MODULE_TEMPLATE_COMPRESSED,HTTP_SCRIPT_MODULE_TEMPLATE_SIZE).c_str() #else const char HTTP_SCRIPT_MODULE_TEMPLATE[] PROGMEM = -#ifdef ESP8266 - "var os;" - "function sk(s,g){" // s = value, g = id and name - "var o=os.replace(/}2/g,\"

Class for handling detailed Panasonic A/C messages.
Definition: ir_Panasonic.h:98
-
void airwell(IRAirwellAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send an Airwell A/C message with the supplied settings.
Definition: IRac.cpp:291
+
void airwell(IRAirwellAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send an Airwell A/C message with the supplied settings.
Definition: IRac.cpp:299
Support for Kelvinator A/C protocols.
Class for handling detailed Samsung A/C messages.
Definition: ir_Samsung.h:97
-
void hitachi(IRHitachiAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Hitachi A/C message with the supplied settings.
Definition: IRac.cpp:1060
+
void hitachi(IRHitachiAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Hitachi A/C message with the supplied settings.
Definition: IRac.cpp:1070
Class for handling detailed Toshiba A/C messages.
Definition: ir_Toshiba.h:100
-
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:736
-
stdAc::state_t getStatePrev(void)
Get the previous internal A/C climate state that should have already been sent to the device....
Definition: IRac.cpp:131
-
stdAc::state_t getState(void)
Get the current internal A/C climate state.
Definition: IRac.cpp:126
+
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:750
+
stdAc::state_t getStatePrev(void)
Get the previous internal A/C climate state that should have already been sent to the device....
Definition: IRac.cpp:133
+
stdAc::state_t getState(void)
Get the current internal A/C climate state.
Definition: IRac.cpp:128
Class for handling detailed Mitsubishi Heavy 152-bit A/C messages.
Definition: ir_MitsubishiHeavy.h:133
-
static stdAc::swingh_t strToSwingH(const char *str, const stdAc::swingh_t def=stdAc::swingh_t::kOff)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:2664
-
void hitachi344(IRHitachiAc344 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Hitachi 344-bit A/C message with the supplied settings.
Definition: IRac.cpp:1136
+
static stdAc::swingh_t strToSwingH(const char *str, const stdAc::swingh_t def=stdAc::swingh_t::kOff)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:2772
+
void hitachi344(IRHitachiAc344 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Hitachi 344-bit A/C message with the supplied settings.
Definition: IRac.cpp:1146
Support for Electra A/C protocols.
-
void markAsSent(void)
Update the previous state to the current one.
Definition: IRac.cpp:2527
+
void markAsSent(void)
Update the previous state to the current one.
Definition: IRac.cpp:2635
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
Airwell "Manchester code" based protocol. Some other Airwell products use the COOLIX protocol.
-
void daikin2(IRDaikin2 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool econo, const bool filter, const bool clean, const bool beep, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin2 A/C message with the supplied settings.
Definition: IRac.cpp:680
+
void daikin2(IRDaikin2 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool econo, const bool filter, const bool clean, const bool beep, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin2 A/C message with the supplied settings.
Definition: IRac.cpp:688
Support for Trotec protocols.
-
void sanyo(IRSanyoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool beep, const int16_t sleep=-1)
Send a Toshiba A/C message with the supplied settings.
Definition: IRac.cpp:1629
+
void sanyo(IRSanyoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool beep, const int16_t sleep=-1)
Send a Toshiba A/C message with the supplied settings.
Definition: IRac.cpp:1642
Class for handling detailed Daikin 280-bit A/C messages.
Definition: ir_Daikin.h:526
-
void lg(IRLgAc *ac, const lg_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send a LG A/C message with the supplied settings.
Definition: IRac.cpp:1242
-
Class for handling detailed Delonghi A/C messages.
Definition: ir_Delonghi.h:102
-
Class for handling detailed Corona A/C messages.
Definition: ir_Corona.h:93
-
void kelvinator(IRKelvinatorAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean)
Send a Kelvinator A/C message with the supplied settings.
Definition: IRac.cpp:1208
+
void lg(IRLgAc *ac, const lg_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send a LG A/C message with the supplied settings.
Definition: IRac.cpp:1252
+
Class for handling detailed Delonghi A/C messages.
Definition: ir_Delonghi.h:72
+
Class for handling detailed Corona A/C messages.
Definition: ir_Corona.h:105
+
void kelvinator(IRKelvinatorAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean)
Send a Kelvinator A/C message with the supplied settings.
Definition: IRac.cpp:1218
Class for handling detailed Daikin 312-bit A/C messages.
Definition: ir_Daikin.h:608
Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy.
Class for handling detailed Daikin 128-bit A/C messages.
Definition: ir_Daikin.h:869
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
Support for Sharp protocols.
-
static String fanspeedToString(const stdAc::fanspeed_t speed)
Convert the supplied fan speed enum into the appropriate String.
Definition: IRac.cpp:2814
+
static String fanspeedToString(const stdAc::fanspeed_t speed)
Convert the supplied fan speed enum into the appropriate String.
Definition: IRac.cpp:2922
whirlpool_ac_remote_model_t
Whirlpool A/C model numbers.
Definition: IRsend.h:158
Carrier A/C.
-
void whirlpool(IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1, const int16_t clock=-1)
Send a Whirlpool A/C message with the supplied settings.
Definition: IRac.cpp:1948
+
void whirlpool(IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1, const int16_t clock=-1)
Send a Whirlpool A/C message with the supplied settings.
Definition: IRac.cpp:1994
Results returned from the decoder.
Definition: IRrecv.h:92
-
void daikin64(IRDaikin64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin 64-bit A/C message with the supplied settings.
Definition: IRac.cpp:749
-
void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const int16_t sleep=-1)
Send a Voltas A/C message with the supplied settings.
Definition: IRac.cpp:1907
-
void tcl112(IRTcl112Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool econo, const bool filter)
Send a TCL 112-bit A/C message with the supplied settings.
Definition: IRac.cpp:1723
-
bool sendAc(void)
Send an A/C message based soley on our internal state.
Definition: IRac.cpp:2533
-
static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b)
Compare two AirCon states.
Definition: IRac.cpp:2544
+
void daikin64(IRDaikin64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin 64-bit A/C message with the supplied settings.
Definition: IRac.cpp:757
+
void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const int16_t sleep=-1)
Send a Voltas A/C message with the supplied settings.
Definition: IRac.cpp:1953
+
void tcl112(IRTcl112Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool econo, const bool filter)
Send a TCL 112-bit A/C message with the supplied settings.
Definition: IRac.cpp:1736
+
void transcold(IRTranscoldAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Transcold A/C message with the supplied settings.
Definition: IRac.cpp:2031
+
bool sendAc(void)
Send an A/C message based soley on our internal state.
Definition: IRac.cpp:2641
+
static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b)
Compare two AirCon states.
Definition: IRac.cpp:2652
Support for Midea protocols. Midea added by crankyoldgit & bwze.
Support for Daikin A/C protocols.
gree_ac_remote_model_t
Gree A/C model numbers.
Definition: IRsend.h:129
Class for handling detailed Daikin 64-bit A/C messages.
Definition: ir_Daikin.h:1003
-
void vestel(IRVestelAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1, const int16_t clock=-1, const bool sendNormal=true)
Send a Vestel A/C message with the supplied settings.
Definition: IRac.cpp:1865
+
void vestel(IRVestelAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1, const int16_t clock=-1, const bool sendNormal=true)
Send a Vestel A/C message with the supplied settings.
Definition: IRac.cpp:1911
Class for handling detailed Hitachi 53-byte/424-bit A/C messages.
Definition: ir_Hitachi.h:313
-
void daikin(IRDaikinESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool clean)
Send a Daikin A/C message with the supplied settings.
Definition: IRac.cpp:516
-
IRac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: IRac.cpp:52
+
void daikin(IRDaikinESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool clean)
Send a Daikin A/C message with the supplied settings.
Definition: IRac.cpp:524
+
IRac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: IRac.cpp:54
Class for handling detailed Daikin 216-bit A/C messages.
Definition: ir_Daikin.h:704
Class for handling detailed Voltas A/C messages.
Definition: ir_Voltas.h:90
hitachi_ac1_remote_model_t
HITACHI_AC1 A/C model numbers.
Definition: IRsend.h:135
-
void samsung(IRSamsungAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean, const bool beep, const bool prevpower=true, const bool forcepower=true)
Send a Samsung A/C message with the supplied settings.
Definition: IRac.cpp:1588
-
void daikin128(IRDaikin128 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool econo, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin 128-bit A/C message with the supplied settings.
Definition: IRac.cpp:556
+
void samsung(IRSamsungAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean, const bool beep, const bool prevpower=true, const bool forcepower=true)
Send a Samsung A/C message with the supplied settings.
Definition: IRac.cpp:1601
+
void daikin128(IRDaikin128 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool econo, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin 128-bit A/C message with the supplied settings.
Definition: IRac.cpp:564
Class for handling detailed Hitachi 224-bit A/C messages.
Definition: ir_Hitachi.h:188
-
const int8_t kGpioUnused
A placeholder for not using an actual GPIO.
Definition: IRac.h:43
-
Common functions for use with all A/Cs supported by the IRac class.
Definition: IRac.cpp:2883
+
const int8_t kGpioUnused
A placeholder for not using an actual GPIO.
Definition: IRac.h:45
+
Common functions for use with all A/Cs supported by the IRac class.
Definition: IRac.cpp:2991
Class for handling detailed Sanyo A/C messages.
Definition: ir_Sanyo.h:98
-
void haier(IRHaierAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool filter, const int16_t sleep=-1, const int16_t clock=-1)
Send a Haier A/C message with the supplied settings.
Definition: IRac.cpp:991
+
void haier(IRHaierAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool filter, const int16_t sleep=-1, const int16_t clock=-1)
Send a Haier A/C message with the supplied settings.
Definition: IRac.cpp:1001
Class for handling detailed Whirlpool A/C messages.
Definition: ir_Whirlpool.h:91
Class for handling detailed Hitachi 344-bit A/C messages.
Definition: ir_Hitachi.h:401
-
static String boolToString(const bool value)
Convert the supplied boolean into the appropriate String.
Definition: IRac.cpp:2785
-
stdAc::state_t next
The state we want the device to be in after we send.
Definition: IRac.h:95
-
std::string String
Definition: IRremoteESP8266.h:1128
+
static String boolToString(const bool value)
Convert the supplied boolean into the appropriate String.
Definition: IRac.cpp:2893
+
stdAc::state_t next
The state we want the device to be in after we send.
Definition: IRac.h:97
+
std::string String
Definition: IRremoteESP8266.h:1148
Class for handling detailed Mitsubishi 144-bit A/C messages.
Definition: ir_Mitsubishi.h:168
-
void trotec(IRTrotecESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1)
Send a Trotec A/C message with the supplied settings.
Definition: IRac.cpp:1828
-
static int16_t strToModel(const char *str, const int16_t def=-1)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:2704
-
Class for handling detailed Amcor A/C messages.
Definition: ir_Amcor.h:81
+
void trotec(IRTrotecESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1)
Send a Trotec A/C message with the supplied settings.
Definition: IRac.cpp:1874
+
static int16_t strToModel(const char *str, const int16_t def=-1)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:2812
+
Class for handling detailed Amcor A/C messages.
Definition: ir_Amcor.h:89
Class for handling detailed Mitsubishi 122-bit A/C messages.
Definition: ir_Mitsubishi.h:286
Class for handling detailed TCL A/C messages.
Definition: ir_Tcl.h:63
-
void daikin176(IRDaikin176 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingh_t swingh)
Send a Daikin 176-bit A/C message with the supplied settings.
Definition: IRac.cpp:648
+
void daikin176(IRDaikin176 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingh_t swingh)
Send a Daikin 176-bit A/C message with the supplied settings.
Definition: IRac.cpp:656
Class for handling detailed Electra A/C messages.
Definition: ir_Electra.h:80
Support for TCL protocols.
-
bool hasStateChanged(void)
Check if the internal state has changed from what was previously sent.
Definition: IRac.cpp:2556
-
void haierYrwo2(IRHaierACYRW02 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1)
Send a Haier YRWO2 A/C message with the supplied settings.
Definition: IRac.cpp:1028
-
void daikin216(IRDaikin216 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo)
Send a Daikin 216-bit A/C message with the supplied settings.
Definition: IRac.cpp:719
+
bool hasStateChanged(void)
Check if the internal state has changed from what was previously sent.
Definition: IRac.cpp:2664
+
void haierYrwo2(IRHaierACYRW02 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1)
Send a Haier YRWO2 A/C message with the supplied settings.
Definition: IRac.cpp:1038
+
void daikin216(IRDaikin216 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo)
Send a Daikin 216-bit A/C message with the supplied settings.
Definition: IRac.cpp:727
+
Support for Transcold A/C protocols.
Support for Hitachi A/C protocols.
Support for Panasonic protocols.
-
static stdAc::state_t handleToggles(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)
Create a new state base on desired & previous states but handle any state changes for options that ne...
Definition: IRac.cpp:1992
+
static stdAc::state_t handleToggles(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)
Create a new state base on desired & previous states but handle any state changes for options that ne...
Definition: IRac.cpp:2080
Class for handling detailed Mitsubishi 136-bit A/C messages.
Definition: ir_Mitsubishi.h:232
panasonic_ac_remote_model_t
Panasonic A/C model numbers.
Definition: IRsend.h:141
swingh_t
Common A/C settings for Horizontal Swing.
Definition: IRsend.h:83
-
void mitsubishi112(IRMitsubishi112 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet)
Send a Mitsubishi 112-bit A/C message with the supplied settings.
Definition: IRac.cpp:1350
-
bool decodeToState(const decode_results *decode, stdAc::state_t *result, const stdAc::state_t *prev)
Convert a valid IR A/C remote message that we understand enough into a Common A/C state.
Definition: IRac.cpp:3227
+
void mitsubishi112(IRMitsubishi112 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet)
Send a Mitsubishi 112-bit A/C message with the supplied settings.
Definition: IRac.cpp:1360
+
bool decodeToState(const decode_results *decode, stdAc::state_t *result, const stdAc::state_t *prev)
Convert a valid IR A/C remote message that we understand enough into a Common A/C state.
Definition: IRac.cpp:3350
Class for handling detailed Hitachi 104-bit A/C messages.
Definition: ir_Hitachi.h:245
-
void hitachi424(IRHitachiAc424 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
Send a Hitachi 424-bit A/C message with the supplied settings.
Definition: IRac.cpp:1170
+
void hitachi424(IRHitachiAc424 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
Send a Hitachi 424-bit A/C message with the supplied settings.
Definition: IRac.cpp:1180
Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRre...
-
String resultAcToString(const decode_results *const result)
Display the human readable state of an A/C message if we can.
Definition: IRac.cpp:2889
-
void daikin152(IRDaikin152 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool econo)
Send a Daikin 152-bit A/C message with the supplied settings.
Definition: IRac.cpp:593
+
String resultAcToString(const decode_results *const result)
Display the human readable state of an A/C message if we can.
Definition: IRac.cpp:2997
+
void daikin152(IRDaikin152 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool econo)
Send a Daikin 152-bit A/C message with the supplied settings.
Definition: IRac.cpp:601
fujitsu_ac_remote_model_t
Fujitsu A/C model numbers.
Definition: IRsend.h:120
Support for Gree A/C protocols.
-
Class for handling detailed Carrier 64 bit A/C messages.
Definition: ir_Carrier.h:74
+
Class for handling detailed Carrier 64 bit A/C messages.
Definition: ir_Carrier.h:83
Class for handling detailed Midea A/C messages.
Definition: ir_Midea.h:99
Class for handling detailed Kelvinator A/C messages.
Definition: ir_Kelvinator.h:137
-
bool _inverted
IR LED is lit when GPIO is LOW (true) or HIGH (false)?
Definition: IRac.h:101
-
Class for handling detailed Fujitsu A/C messages.
Definition: ir_Fujitsu.h:101
+
bool _inverted
IR LED is lit when GPIO is LOW (true) or HIGH (false)?
Definition: IRac.h:103
+
Class for handling detailed Fujitsu A/C messages.
Definition: ir_Fujitsu.h:113
Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR r...
Class for handling detailed Coolix A/C messages.
Definition: ir_Coolix.h:105
-
void panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool filter, const int16_t clock=-1)
Send a Panasonic A/C message with the supplied settings.
Definition: IRac.cpp:1544
-
static String swingvToString(const stdAc::swingv_t swingv)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:2836
+
void panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool filter, const int16_t clock=-1)
Send a Panasonic A/C message with the supplied settings.
Definition: IRac.cpp:1557
+
static String swingvToString(const stdAc::swingv_t swingv)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:2944
Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github....
-
A universal/common/generic interface for controling supported A/Cs.
Definition: IRac.h:47
+
A universal/common/generic interface for controling supported A/Cs.
Definition: IRac.h:49
Support for Teco protocols.
-
void gree(IRGreeAC *ac, const gree_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const bool clean, const int16_t sleep=-1)
Send a Gree A/C message with the supplied settings.
Definition: IRac.cpp:953
+
void gree(IRGreeAC *ac, const gree_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const bool clean, const int16_t sleep=-1)
Send a Gree A/C message with the supplied settings.
Definition: IRac.cpp:963
Delonghi A/C.
-
void electra(IRElectraAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool lighttoggle, const bool clean)
Send an Electra A/C message with the supplied settings.
Definition: IRac.cpp:806
-
static stdAc::state_t cleanState(const stdAc::state_t state)
Create a new state base on the provided state that has been suitably fixed.
Definition: IRac.cpp:1979
+
void electra(IRElectraAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool lighttoggle, const bool clean)
Send an Electra A/C message with the supplied settings.
Definition: IRac.cpp:814
+
static stdAc::state_t cleanState(const stdAc::state_t state)
Create a new state base on the provided state that has been suitably fixed.
Definition: IRac.cpp:2067
Support for Argo Ulisse 13 DCI Mobile Split ACs.
-
void mitsubishi(IRMitsubishiAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const int16_t clock=-1)
Send a Mitsubishi A/C message with the supplied settings.
Definition: IRac.cpp:1315
-
void amcor(IRAmcorAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send an Amcor A/C message with the supplied settings.
Definition: IRac.cpp:319
+
void mitsubishi(IRMitsubishiAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const int16_t clock=-1)
Send a Mitsubishi A/C message with the supplied settings.
Definition: IRac.cpp:1325
+
void amcor(IRAmcorAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send an Amcor A/C message with the supplied settings.
Definition: IRac.cpp:327
+
Definition: ir_Technibel.h:107
Class for handling detailed Airwell A/C messages.
Definition: ir_Airwell.h:58
Support for Voltas A/C protocol.
Class for handling detailed Daikin 152-bit A/C messages.
Definition: ir_Daikin.h:943
Class for handling detailed LG A/C messages.
Definition: ir_LG.h:64
Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham.
Class for handling detailed Haier A/C messages.
Definition: ir_Haier.h:244
+
void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const bool filter, const int16_t sleep=-1)
Send a Neoclima A/C message with the supplied settings.
Definition: IRac.cpp:1516
Class for handling detailed Daikin 160-bit A/C messages.
Definition: ir_Daikin.h:760
-
static String opmodeToString(const stdAc::opmode_t mode)
Convert the supplied operation mode into the appropriate String.
Definition: IRac.cpp:2792
+
static String opmodeToString(const stdAc::opmode_t mode)
Convert the supplied operation mode into the appropriate String.
Definition: IRac.cpp:2900
Class for handling detailed Sharp A/C messages.
Definition: ir_Sharp.h:108
-
void toshiba(IRToshibaAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool econo)
Send a Toshiba A/C message with the supplied settings.
Definition: IRac.cpp:1792
+
void toshiba(IRToshibaAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool econo)
Send a Toshiba A/C message with the supplied settings.
Definition: IRac.cpp:1838
Support for Goodweather compatible HVAC protocols.
-
void argo(IRArgoAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const int16_t sleep=-1)
Send an Argo A/C message with the supplied settings.
Definition: IRac.cpp:351
+
void argo(IRArgoAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const int16_t sleep=-1)
Send an Argo A/C message with the supplied settings.
Definition: IRac.cpp:359
lg_ac_remote_model_t
LG A/C model numbers.
Definition: IRsend.h:164
-
void mitsubishi136(IRMitsubishi136 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet)
Send a Mitsubishi 136-bit A/C message with the supplied settings.
Definition: IRac.cpp:1386
+
void mitsubishi136(IRMitsubishi136 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet)
Send a Mitsubishi 136-bit A/C message with the supplied settings.
Definition: IRac.cpp:1396
-
bool _modulation
Is frequency modulation to be used?
Definition: IRac.h:102
-
void teco(IRTecoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool light, const int16_t sleep=-1)
Send a Teco A/C message with the supplied settings.
Definition: IRac.cpp:1759
-
static stdAc::opmode_t strToOpmode(const char *str, const stdAc::opmode_t def=stdAc::opmode_t::kAuto)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:2562
+
bool _modulation
Is frequency modulation to be used?
Definition: IRac.h:104
+
void teco(IRTecoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool light, const int16_t sleep=-1)
Send a Teco A/C message with the supplied settings.
Definition: IRac.cpp:1805
+
static stdAc::opmode_t strToOpmode(const char *str, const stdAc::opmode_t def=stdAc::opmode_t::kAuto)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:2670
Support for Sanyo protocols. Sanyo LC7461 support originally by marcosamarinho Sanyo SA 8650B origina...
-
void hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model, const bool on, const bool power_toggle, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool swing_toggle, const int16_t sleep=-1)
Send a Hitachi1 A/C message with the supplied settings.
Definition: IRac.cpp:1097
+
void hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model, const bool on, const bool power_toggle, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool swing_toggle, const int16_t sleep=-1)
Send a Hitachi1 A/C message with the supplied settings.
Definition: IRac.cpp:1107
+
Definition: ir_Transcold.h:110
Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea.
-
static bool strToBool(const char *str, const bool def=false)
Convert the supplied str into the appropriate boolean value.
Definition: IRac.cpp:2767
-
void mitsubishiHeavy88(IRMitsubishiHeavy88Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool clean)
Send a Mitsubishi Heavy 88-bit A/C message with the supplied settings.
Definition: IRac.cpp:1421
-
static stdAc::swingv_t strToSwingV(const char *str, const stdAc::swingv_t def=stdAc::swingv_t::kOff)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:2623
+
static bool strToBool(const char *str, const bool def=false)
Convert the supplied str into the appropriate boolean value.
Definition: IRac.cpp:2875
+
void mitsubishiHeavy88(IRMitsubishiHeavy88Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool clean)
Send a Mitsubishi Heavy 88-bit A/C message with the supplied settings.
Definition: IRac.cpp:1431
+
static stdAc::swingv_t strToSwingV(const char *str, const stdAc::swingv_t def=stdAc::swingv_t::kOff)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:2731
Class for handling detailed Vestel A/C messages.
Definition: ir_Vestel.h:116
-
void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool filter, const int16_t sleep=-1)
Send a Neoclima A/C message with the supplied settings.
Definition: IRac.cpp:1504
Class for handling detailed Trotec A/C messages.
Definition: ir_Trotec.h:76
Class for handling detailed Teco A/C messages.
Definition: ir_Teco.h:107
-
static String swinghToString(const stdAc::swingh_t swingh)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:2860
-
void delonghiac(IRDelonghiAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const bool turbo, const int16_t sleep=-1)
Send a Delonghi A/C message with the supplied settings.
Definition: IRac.cpp:779
-
stdAc::state_t _prev
The state we expect the device to currently be in.
Definition: IRac.h:103
+
static String swinghToString(const stdAc::swingh_t swingh)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:2968
+
void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
Send a Fujitsu A/C message with the supplied settings.
Definition: IRac.cpp:857
+
Support for Technibel protocol.
+
void delonghiac(IRDelonghiAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const bool turbo, const int16_t sleep=-1)
Send a Delonghi A/C message with the supplied settings.
Definition: IRac.cpp:787
+
stdAc::state_t _prev
The state we expect the device to currently be in.
Definition: IRac.h:105
Class for handling detailed Haier ACYRW02 A/C messages.
Definition: ir_Haier.h:314
-
void daikin160(IRDaikin160 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
Send a Daikin 160-bit A/C message with the supplied settings.
Definition: IRac.cpp:626
-
void corona(IRCoronaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool econo)
Send a Corona A/C message with the supplied settings.
Definition: IRac.cpp:481
-
static void initState(stdAc::state_t *state, const decode_type_t vendor, const int16_t model, const bool power, const stdAc::opmode_t mode, const float degrees, const bool celsius, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep, const int16_t clock)
Initialse the given state with the supplied settings.
Definition: IRac.cpp:83
-
void mitsubishiHeavy152(IRMitsubishiHeavy152Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
Send a Mitsubishi Heavy 152-bit A/C message with the supplied settings.
Definition: IRac.cpp:1462
+
void daikin160(IRDaikin160 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
Send a Daikin 160-bit A/C message with the supplied settings.
Definition: IRac.cpp:634
+
void corona(IRCoronaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool econo)
Send a Corona A/C message with the supplied settings.
Definition: IRac.cpp:489
+
static void initState(stdAc::state_t *state, const decode_type_t vendor, const int16_t model, const bool power, const stdAc::opmode_t mode, const float degrees, const bool celsius, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep, const int16_t clock)
Initialse the given state with the supplied settings.
Definition: IRac.cpp:85
+
void mitsubishiHeavy152(IRMitsubishiHeavy152Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
Send a Mitsubishi Heavy 152-bit A/C message with the supplied settings.
Definition: IRac.cpp:1472
Support for Haier A/C protocols. The specifics of reverse engineering the protocols details:
Class for handling detailed Mitsubishi Heavy 88-bit A/C messages.
Definition: ir_MitsubishiHeavy.h:220
Class for handling detailed Gree A/C messages.
Definition: ir_Gree.h:130
-
void coolix(IRCoolixAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool clean, const int16_t sleep=-1)
Send a Coolix A/C message with the supplied settings.
Definition: IRac.cpp:420
-
static stdAc::fanspeed_t strToFanspeed(const char *str, const stdAc::fanspeed_t def=stdAc::fanspeed_t::kAuto)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:2592
-
void midea(IRMideaAC *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool econo, const int16_t sleep=-1)
Send a Midea A/C message with the supplied settings.
Definition: IRac.cpp:1277
+
void coolix(IRCoolixAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool clean, const int16_t sleep=-1)
Send a Coolix A/C message with the supplied settings.
Definition: IRac.cpp:428
+
static stdAc::fanspeed_t strToFanspeed(const char *str, const stdAc::fanspeed_t def=stdAc::fanspeed_t::kAuto)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:2700
+
void midea(IRMideaAC *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool econo, const int16_t sleep=-1)
Send a Midea A/C message with the supplied settings.
Definition: IRac.cpp:1287
Support for Toshiba protocols.
-
void sharp(IRSharpAc *ac, const bool on, const bool prev_power, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const bool clean)
Send a Sharp A/C message with the supplied settings.
Definition: IRac.cpp:1671
-
void goodweather(IRGoodweatherAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1)
Send a Goodweather A/C message with the supplied settings.
Definition: IRac.cpp:911
+
void sharp(IRSharpAc *ac, const bool on, const bool prev_power, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const bool clean)
Send a Sharp A/C message with the supplied settings.
Definition: IRac.cpp:1684
+
void goodweather(IRGoodweatherAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1)
Send a Goodweather A/C message with the supplied settings.
Definition: IRac.cpp:921
Structure to hold a common A/C state.
Definition: IRsend.h:97
Class for handling detailed Goodweather A/C messages.
Definition: ir_Goodweather.h:90
Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.
-
Class for handling detailed Argo A/C messages.
Definition: ir_Argo.h:129
-
void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean)
Send a Fujitsu A/C message with the supplied settings.
Definition: IRac.cpp:848
-
Class for handling detailed Neoclima A/C messages.
Definition: ir_Neoclima.h:86
-
static bool isProtocolSupported(const decode_type_t protocol)
Is the given protocol supported by the IRac class?
Definition: IRac.cpp:136
+
Class for handling detailed Argo A/C messages.
Definition: ir_Argo.h:126
+
Class for handling detailed Neoclima A/C messages.
Definition: ir_Neoclima.h:94
+
static bool isProtocolSupported(const decode_type_t protocol)
Is the given protocol supported by the IRac class?
Definition: IRac.cpp:138
Class for handling detailed Daikin 176-bit A/C messages.
Definition: ir_Daikin.h:812
Amcor A/C protocol.
-
uint16_t _pin
The GPIO to use to transmit messages from.
Definition: IRac.h:100
+
uint16_t _pin
The GPIO to use to transmit messages from.
Definition: IRac.h:102
+
void technibel(IRTechnibelAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
Send a Technibel A/C message with the supplied settings.
Definition: IRac.cpp:1772
voltas_ac_remote_model_t
Voltas A/C model numbers.
Definition: IRsend.h:152
Support for LG protocols.
-
void carrier64(IRCarrierAc64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
Send a Carrier 64-bit A/C message with the supplied settings.
Definition: IRac.cpp:383
+
void carrier64(IRCarrierAc64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
Send a Carrier 64-bit A/C message with the supplied settings.
Definition: IRac.cpp:391
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
" // slqi @@ -1435,7 +1436,7 @@ void ZigbeeShow(bool json) bool pressure_ok = device.validPressure(); if (temperature_ok || humidity_ok || pressure_ok) { - WSContentSend_P(PSTR("┆")); + WSContentSend_P(PSTR("┆")); if (temperature_ok) { char buf[12]; dtostrf(device.temperature / 10.0f, 3, 1, buf); @@ -1456,7 +1457,7 @@ void ZigbeeShow(bool json) if (power_ok) { uint8_t channels = device.getLightChannels(); if (0xFF == channels) { channels = 5; } // if number of channel is unknown, display all known attributes - WSContentSend_P(PSTR("┆ %s"), device.getPower() ? PSTR(D_ON) : PSTR(D_OFF)); + WSContentSend_P(PSTR("┆ %s"), device.getPower() ? PSTR(D_ON) : PSTR(D_OFF)); if (device.validDimmer() && (channels >= 1)) { WSContentSend_P(PSTR(" 🔅 %d%%"), changeUIntScale(device.dimmer,0,254,0,100)); } From 6bfe06d6b1ad8ff519575281245f548dd0675e1e Mon Sep 17 00:00:00 2001 From: Staars Date: Fri, 25 Sep 2020 19:24:23 +0200 Subject: [PATCH 041/119] change verification of Flora packet --- tasmota/xsns_62_MI_HM10.ino | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/tasmota/xsns_62_MI_HM10.ino b/tasmota/xsns_62_MI_HM10.ino index 50f12fd12..b236a1d05 100644 --- a/tasmota/xsns_62_MI_HM10.ino +++ b/tasmota/xsns_62_MI_HM10.ino @@ -111,6 +111,7 @@ struct Flora_TLMF_t{ uint32_t lux; uint8_t moist; uint16_t fert; + uint32_t ID; }; // temperature, lux, moisture, fertility struct mi_beacon_t{ @@ -830,20 +831,18 @@ void HM10readHT_MJ_HT_V1(char *_buf){ } void HM10readTLMF(char *_buf){ - AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t*)_buf,10); - if(_buf[0]==0x4f && _buf[1]==0x4b) return; // "OK" - if(_buf[0] != 0 || _buf[1] != 0){ // this will lose 0.0 degree, but it is not possible to measure a successful reading - Flora_TLMF_t *_packet = (Flora_TLMF_t*)_buf; + AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t*)_buf,16); + Flora_TLMF_t *_packet = (Flora_TLMF_t*)_buf; + if(_packet->ID==0xFB003C02){ // this is a magic word ... hopefully independent of FW version AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: T * 10: %u, L: %u, M: %u, F: %u"),D_CMND_HM10,_packet->temp,_packet->lux,_packet->moist,_packet->fert); uint32_t _slot = HM10.state.sensor; - DEBUG_SENSOR_LOG(PSTR("MIBLE: Sensor slot: %u"), _slot); + MIBLEsensors[_slot].showedUp=255; // this sensor is real + static float _tempFloat; _tempFloat=(float)(_packet->temp)/10.0f; - if(_tempFloat<60){ - MIBLEsensors[_slot].temp=_tempFloat; - MIBLEsensors[_slot].showedUp=255; // this sensor is real - } + MIBLEsensors[_slot].temp=_tempFloat; + MIBLEsensors[_slot].lux = _packet->lux; MIBLEsensors[_slot].moisture = _packet->moist; MIBLEsensors[_slot].fertility = _packet->fert; From 1a9f0bfa33d64a7764616ad9d50cc95eebc58359 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sat, 26 Sep 2020 11:44:05 +0200 Subject: [PATCH 042/119] Change ``WakeUp`` uses 256 steps instead of 100 (#9241) --- tasmota/CHANGELOG.md | 1 + tasmota/xdrv_04_light.ino | 37 +++++++++++++++++++------------------ 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index 93e8da613..698888f81 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -19,6 +19,7 @@ - Add new shutter modes (#9244) - Add Zigbee auto-config when pairing - Add support for MLX90640 IR array temperature sensor by Christian Baars +- Change ``WakeUp`` uses 256 steps instead of 100 (#9241) ### 8.5.0 20200907 diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index 941659d62..b90d882c8 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -263,8 +263,6 @@ struct LIGHT { uint32_t strip_timer_counter = 0; // Bars and Gradient power_t power = 0; // Power for each channel if SetOption68, or boolean if single light - uint16_t wakeup_counter = 0; - uint8_t entry_color[LST_MAX]; uint8_t current_color[LST_MAX]; uint8_t new_color[LST_MAX]; @@ -276,11 +274,12 @@ struct LIGHT { uint8_t subtype = 0; // LST_ subtype uint8_t device = 0; uint8_t old_power = 1; - uint8_t wakeup_active = 0; - uint8_t wakeup_dimmer = 0; + uint8_t wakeup_active = 0; // 0=inctive, 1=on-going, 2=about to start, 3=will be triggered next cycle uint8_t fixed_color_index = 1; uint8_t pwm_offset = 0; // Offset in color buffer uint8_t max_scheme = LS_MAX -1; + + uint32_t wakeup_start_time = 0; bool update = true; bool pwm_multi_channels = false; // SetOption68, treat each PWM channel as an independant dimmer @@ -1866,25 +1865,27 @@ void LightAnimate(void) light_controller.calcLevels(Light.new_color); break; case LS_WAKEUP: - if (2 == Light.wakeup_active) { - Light.wakeup_active = 1; - for (uint32_t i = 0; i < Light.subtype; i++) { - Light.new_color[i] = 0; + { + if (2 == Light.wakeup_active) { + Light.wakeup_active = 1; + for (uint32_t i = 0; i < Light.subtype; i++) { + Light.new_color[i] = 0; + } + Light.wakeup_start_time = millis(); } - Light.wakeup_counter = 0; - Light.wakeup_dimmer = 0; - } - Light.wakeup_counter++; - if (Light.wakeup_counter > ((Settings.light_wakeup * STATES) / Settings.light_dimmer)) { - Light.wakeup_counter = 0; - Light.wakeup_dimmer++; - if (Light.wakeup_dimmer <= Settings.light_dimmer) { - light_state.setDimmer(Light.wakeup_dimmer); + // which step are we in a range 0..1023 + uint32_t step_10 = ((millis() - Light.wakeup_start_time) * 1023) / (Settings.light_wakeup * 1000); + if (step_10 > 1023) { step_10 = 1023; } // sanity check + uint8_t wakeup_bri = changeUIntScale(step_10, 0, 1023, 0, LightStateClass::DimmerToBri(Settings.light_dimmer)); + + if (wakeup_bri != light_state.getBri()) { + light_state.setBri(wakeup_bri); light_controller.calcLevels(); for (uint32_t i = 0; i < Light.subtype; i++) { Light.new_color[i] = Light.current_color[i]; } - } else { + } + if (1023 == step_10) { Response_P(PSTR("{\"" D_CMND_WAKEUP "\":\"" D_JSON_DONE "\"")); ResponseLightState(1); ResponseJsonEnd(); From 217addc2bb2cf46e7633c93e87954b245cb96556 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:28:09 +0200 Subject: [PATCH 043/119] Revert "Merge pull request #9391 from s-hadinger/fade_256_dev" This reverts commit 440976c993122d12587cc6a66ecacec5461a173b, reversing changes made to eb43fd56e3f5af83a9fc374eef0369652b04b2ef. --- tasmota/CHANGELOG.md | 1 - tasmota/xdrv_04_light.ino | 37 ++++++++++++++++++------------------- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index 698888f81..93e8da613 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -19,7 +19,6 @@ - Add new shutter modes (#9244) - Add Zigbee auto-config when pairing - Add support for MLX90640 IR array temperature sensor by Christian Baars -- Change ``WakeUp`` uses 256 steps instead of 100 (#9241) ### 8.5.0 20200907 diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index b90d882c8..941659d62 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -263,6 +263,8 @@ struct LIGHT { uint32_t strip_timer_counter = 0; // Bars and Gradient power_t power = 0; // Power for each channel if SetOption68, or boolean if single light + uint16_t wakeup_counter = 0; + uint8_t entry_color[LST_MAX]; uint8_t current_color[LST_MAX]; uint8_t new_color[LST_MAX]; @@ -274,12 +276,11 @@ struct LIGHT { uint8_t subtype = 0; // LST_ subtype uint8_t device = 0; uint8_t old_power = 1; - uint8_t wakeup_active = 0; // 0=inctive, 1=on-going, 2=about to start, 3=will be triggered next cycle + uint8_t wakeup_active = 0; + uint8_t wakeup_dimmer = 0; uint8_t fixed_color_index = 1; uint8_t pwm_offset = 0; // Offset in color buffer uint8_t max_scheme = LS_MAX -1; - - uint32_t wakeup_start_time = 0; bool update = true; bool pwm_multi_channels = false; // SetOption68, treat each PWM channel as an independant dimmer @@ -1865,27 +1866,25 @@ void LightAnimate(void) light_controller.calcLevels(Light.new_color); break; case LS_WAKEUP: - { - if (2 == Light.wakeup_active) { - Light.wakeup_active = 1; - for (uint32_t i = 0; i < Light.subtype; i++) { - Light.new_color[i] = 0; - } - Light.wakeup_start_time = millis(); + if (2 == Light.wakeup_active) { + Light.wakeup_active = 1; + for (uint32_t i = 0; i < Light.subtype; i++) { + Light.new_color[i] = 0; } - // which step are we in a range 0..1023 - uint32_t step_10 = ((millis() - Light.wakeup_start_time) * 1023) / (Settings.light_wakeup * 1000); - if (step_10 > 1023) { step_10 = 1023; } // sanity check - uint8_t wakeup_bri = changeUIntScale(step_10, 0, 1023, 0, LightStateClass::DimmerToBri(Settings.light_dimmer)); - - if (wakeup_bri != light_state.getBri()) { - light_state.setBri(wakeup_bri); + Light.wakeup_counter = 0; + Light.wakeup_dimmer = 0; + } + Light.wakeup_counter++; + if (Light.wakeup_counter > ((Settings.light_wakeup * STATES) / Settings.light_dimmer)) { + Light.wakeup_counter = 0; + Light.wakeup_dimmer++; + if (Light.wakeup_dimmer <= Settings.light_dimmer) { + light_state.setDimmer(Light.wakeup_dimmer); light_controller.calcLevels(); for (uint32_t i = 0; i < Light.subtype; i++) { Light.new_color[i] = Light.current_color[i]; } - } - if (1023 == step_10) { + } else { Response_P(PSTR("{\"" D_CMND_WAKEUP "\":\"" D_JSON_DONE "\"")); ResponseLightState(1); ResponseJsonEnd(); From ef890a40d42abdd1e01e75ad1a84309819edc477 Mon Sep 17 00:00:00 2001 From: S474N Date: Sat, 26 Sep 2020 17:41:13 +0200 Subject: [PATCH 044/119] Update cs_CZ.h MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Translate Neaktivní/Aktivní back to english original. https://github.com/arendst/Tasmota/issues/9395 --- tasmota/language/cs_CZ.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index 1200ceab5..c7190998c 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -125,10 +125,10 @@ #define D_NOISE "Hluk" #define D_NONE "Žádný" #define D_OFF "Vyp." -#define D_OFFLINE "Neaktivní" +#define D_OFFLINE "Offline" // Don't translate, LWT message! Nepředkládat, LWT zpráva! #define D_OK "OK" #define D_ON "Zap." -#define D_ONLINE "Aktivní" +#define D_ONLINE "Online" // Don't translate, LWT message! Nepředkládat, LWT zpráva! #define D_PASSWORD "Heslo" #define D_PORT "Port" #define D_POWER_FACTOR "Účiník" From 47f1b2fcd01a58ddc6603d5714033d4645adb3d5 Mon Sep 17 00:00:00 2001 From: Staars Date: Sat, 26 Sep 2020 19:24:22 +0200 Subject: [PATCH 045/119] add 2 global accessible states for running and finished discovery --- tasmota/xdrv_12_home_assistant.ino | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/xdrv_12_home_assistant.ino b/tasmota/xdrv_12_home_assistant.ino index ea3245444..0bc1c9c32 100644 --- a/tasmota/xdrv_12_home_assistant.ino +++ b/tasmota/xdrv_12_home_assistant.ino @@ -967,6 +967,7 @@ void HAssDiscovery(void) if (Settings.flag.hass_discovery || (1 == hass_mode)) { // SetOption19 - Control Home Assistantautomatic discovery (See SetOption59) + hass_mode = 2; // Send info about buttons HAssAnnounceButtons(); @@ -985,6 +986,7 @@ void HAssDiscovery(void) // Send info about status sensor HAssAnnounceDeviceInfoAndStatusSensor(); masterlog_level = 0; // Restores weblog level + hass_mode = 3; } } From 9842573ee5956ed937a18b16f28c973a7a1b70bd Mon Sep 17 00:00:00 2001 From: Staars Date: Sat, 26 Sep 2020 19:24:58 +0200 Subject: [PATCH 046/119] improve HA auto discovery --- tasmota/xsns_62_MI_ESP32.ino | 75 ++++++++++++++++++++++++++++++------ 1 file changed, 63 insertions(+), 12 deletions(-) diff --git a/tasmota/xsns_62_MI_ESP32.ino b/tasmota/xsns_62_MI_ESP32.ino index 2cbb653ee..941f52950 100644 --- a/tasmota/xsns_62_MI_ESP32.ino +++ b/tasmota/xsns_62_MI_ESP32.ino @@ -20,6 +20,8 @@ -------------------------------------------------------------------------------------------- Version yyyymmdd Action Description -------------------------------------------------------------------------------------------- + 0.9.1.3 20200926 changed - Improve HA discovery, make key+MAC case insensitive + ------- 0.9.1.3 20200916 changed - add ATC (custom FW for LYWSD03MMC), API adaption for NimBLE-Arduino 1.0.2 ------- 0.9.1.2 20200802 changed - add MHO-C303 @@ -421,6 +423,7 @@ void MI32_ReverseMAC(uint8_t _mac[]){ void MI32AddKey(char* payload){ mi_bindKey_t keyMAC; memset(keyMAC.buf,0,sizeof(keyMAC)); + UpperCase(payload,payload); MI32KeyMACStringToBytes(payload,keyMAC.buf); bool unknownKey = true; for(uint32_t i=0; i no lux + if (MIBLEsensors[i].lux!=0x0ffffff +#ifdef USE_HOME_ASSISTANT + ||(hass_mode==2) +#endif //USE_HOME_ASSISTANT + ) { // this is the error code -> no lux ResponseAppend_P(PSTR(",\"" D_JSON_ILLUMINANCE "\":%u"), MIBLEsensors[i].lux); } } } if (MIBLEsensors[i].feature.moist){ if(MIBLEsensors[i].eventType.moist || !MI32.mode.triggeredTele || MI32.option.allwaysAggregate){ - if (MIBLEsensors[i].moisture!=0xff) { + if (MIBLEsensors[i].moisture!=0xff +#ifdef USE_HOME_ASSISTANT + ||(hass_mode==2) +#endif //USE_HOME_ASSISTANT + ) { ResponseAppend_P(PSTR(",\"" D_JSON_MOISTURE "\":%u"), MIBLEsensors[i].moisture); } } } if (MIBLEsensors[i].feature.fert){ if(MIBLEsensors[i].eventType.fert || !MI32.mode.triggeredTele || MI32.option.allwaysAggregate){ - if (MIBLEsensors[i].fertility!=0xffff) { + if (MIBLEsensors[i].fertility!=0xffff +#ifdef USE_HOME_ASSISTANT + ||(hass_mode==2) +#endif //USE_HOME_ASSISTANT + ) { ResponseAppend_P(PSTR(",\"Fertility\":%u"), MIBLEsensors[i].fertility); } } } if (MIBLEsensors[i].feature.Btn){ - if(MIBLEsensors[i].eventType.Btn){ + if(MIBLEsensors[i].eventType.Btn +#ifdef USE_HOME_ASSISTANT + ||(hass_mode==2) +#endif //USE_HOME_ASSISTANT + ){ ResponseAppend_P(PSTR(",\"Btn\":%u"),MIBLEsensors[i].Btn); } } @@ -1710,7 +1750,11 @@ void MI32Show(bool json) } if (MIBLEsensors[i].feature.bat){ if(MIBLEsensors[i].eventType.bat || !MI32.mode.triggeredTele || MI32.option.allwaysAggregate){ - if (MIBLEsensors[i].bat != 0x00) { // this is the error code -> no battery + if (MIBLEsensors[i].bat != 0x00 +#ifdef USE_HOME_ASSISTANT + ||(hass_mode==2) +#endif //USE_HOME_ASSISTANT + ) { // this is the error code -> no battery ResponseAppend_P(PSTR(",\"Battery\":%u"), MIBLEsensors[i].bat); } } @@ -1724,11 +1768,16 @@ void MI32Show(bool json) MIBLEsensors[i].eventType.raw = 0; if(MIBLEsensors[i].shallSendMQTT==1){ MIBLEsensors[i].shallSendMQTT = 0; - break; + continue; } } MI32.mode.triggeredTele = 0; - // ResponseAppend_P(PSTR("}")); +#ifdef USE_HOME_ASSISTANT + if(hass_mode==2){ + MI32.option.noSummary = _noSummarySave; + MI32.option.minimalSummary = _minimalSummarySave; + } +#endif //USE_HOME_ASSISTANT #ifdef USE_WEBSERVER } else { static uint16_t _page = 0; @@ -1747,7 +1796,9 @@ void MI32Show(bool json) WSContentSend_PD(HTTP_MI32, i+1,stemp,MIBLEsensors.size()); for (i; i Date: Sat, 26 Sep 2020 23:20:55 +0200 Subject: [PATCH 047/119] Gitpod compile badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0bae6a0ef..4eb2a88a7 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ _Written for PlatformIO with limited support for Arduino IDE._ [![Chat](https://img.shields.io/discord/479389167382691863.svg)](https://discord.gg/Ks2Kzd4) [![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/arendst/Tasmota.svg)](http://isitmaintained.com/project/arendst/Tasmota "Average time to resolve an issue") [![Percentage of issues still open](http://isitmaintained.com/badge/open/arendst/Tasmota.svg)](http://isitmaintained.com/project/arendst/Tasmota "Percentage of issues still open") +[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/arendst/Tasmota) If you like **Tasmota**, give it a star, or fork it and contribute! From 32a2407b19f348b46aae77a97fc22539b02f7efc Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 27 Sep 2020 11:03:29 +0200 Subject: [PATCH 048/119] Revert "Revert "Merge pull request #9391 from s-hadinger/fade_256_dev"" This reverts commit 217addc2bb2cf46e7633c93e87954b245cb96556. --- tasmota/CHANGELOG.md | 1 + tasmota/xdrv_04_light.ino | 37 +++++++++++++++++++------------------ 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index 93e8da613..698888f81 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -19,6 +19,7 @@ - Add new shutter modes (#9244) - Add Zigbee auto-config when pairing - Add support for MLX90640 IR array temperature sensor by Christian Baars +- Change ``WakeUp`` uses 256 steps instead of 100 (#9241) ### 8.5.0 20200907 diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index 941659d62..b90d882c8 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -263,8 +263,6 @@ struct LIGHT { uint32_t strip_timer_counter = 0; // Bars and Gradient power_t power = 0; // Power for each channel if SetOption68, or boolean if single light - uint16_t wakeup_counter = 0; - uint8_t entry_color[LST_MAX]; uint8_t current_color[LST_MAX]; uint8_t new_color[LST_MAX]; @@ -276,11 +274,12 @@ struct LIGHT { uint8_t subtype = 0; // LST_ subtype uint8_t device = 0; uint8_t old_power = 1; - uint8_t wakeup_active = 0; - uint8_t wakeup_dimmer = 0; + uint8_t wakeup_active = 0; // 0=inctive, 1=on-going, 2=about to start, 3=will be triggered next cycle uint8_t fixed_color_index = 1; uint8_t pwm_offset = 0; // Offset in color buffer uint8_t max_scheme = LS_MAX -1; + + uint32_t wakeup_start_time = 0; bool update = true; bool pwm_multi_channels = false; // SetOption68, treat each PWM channel as an independant dimmer @@ -1866,25 +1865,27 @@ void LightAnimate(void) light_controller.calcLevels(Light.new_color); break; case LS_WAKEUP: - if (2 == Light.wakeup_active) { - Light.wakeup_active = 1; - for (uint32_t i = 0; i < Light.subtype; i++) { - Light.new_color[i] = 0; + { + if (2 == Light.wakeup_active) { + Light.wakeup_active = 1; + for (uint32_t i = 0; i < Light.subtype; i++) { + Light.new_color[i] = 0; + } + Light.wakeup_start_time = millis(); } - Light.wakeup_counter = 0; - Light.wakeup_dimmer = 0; - } - Light.wakeup_counter++; - if (Light.wakeup_counter > ((Settings.light_wakeup * STATES) / Settings.light_dimmer)) { - Light.wakeup_counter = 0; - Light.wakeup_dimmer++; - if (Light.wakeup_dimmer <= Settings.light_dimmer) { - light_state.setDimmer(Light.wakeup_dimmer); + // which step are we in a range 0..1023 + uint32_t step_10 = ((millis() - Light.wakeup_start_time) * 1023) / (Settings.light_wakeup * 1000); + if (step_10 > 1023) { step_10 = 1023; } // sanity check + uint8_t wakeup_bri = changeUIntScale(step_10, 0, 1023, 0, LightStateClass::DimmerToBri(Settings.light_dimmer)); + + if (wakeup_bri != light_state.getBri()) { + light_state.setBri(wakeup_bri); light_controller.calcLevels(); for (uint32_t i = 0; i < Light.subtype; i++) { Light.new_color[i] = Light.current_color[i]; } - } else { + } + if (1023 == step_10) { Response_P(PSTR("{\"" D_CMND_WAKEUP "\":\"" D_JSON_DONE "\"")); ResponseLightState(1); ResponseJsonEnd(); From da6d057cbb612cc16f354a851dd1dd9733698d9f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 27 Sep 2020 12:00:58 +0200 Subject: [PATCH 049/119] Fix PN532 data fieldname Fix PN532 data fieldname (#9401) --- tasmota/xsns_40_pn532.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xsns_40_pn532.ino b/tasmota/xsns_40_pn532.ino index 3c29d4c82..8fd4e450d 100644 --- a/tasmota/xsns_40_pn532.ino +++ b/tasmota/xsns_40_pn532.ino @@ -495,7 +495,7 @@ void PN532_ScanForTag(void) #endif // USE_PN532_DATA_FUNCTION #ifdef USE_PN532_DATA_FUNCTION - ResponseTime_P(PSTR(",\"PN532\":{\"UID\":\"%s\", \"DATA\":\"%s\"}}"), uids, card_datas); + ResponseTime_P(PSTR(",\"PN532\":{\"UID\":\"%s\", \"" D_JSON_DATA "\":\"%s\"}}"), uids, card_datas); #else ResponseTime_P(PSTR(",\"PN532\":{\"UID\":\"%s\"}}"), uids); #endif // USE_PN532_DATA_FUNCTION From 1da31e5f15621b97b1cb277434c604a8c4254551 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 27 Sep 2020 12:51:50 +0200 Subject: [PATCH 050/119] Make LWT state message user configurable Make LWT state message user configurable (#9395) --- tasmota/i18n.h | 2 +- tasmota/my_user_config.h | 7 +++++-- tasmota/xdrv_02_mqtt.ino | 16 ++++++++-------- tasmota/xdrv_12_home_assistant.ino | 8 ++++---- tasmota/xdrv_29_deepsleep.ino | 2 +- 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 24b26b032..50c87660f 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -724,7 +724,7 @@ const char S_RSLT_POWER[] PROGMEM = D_RSLT_POWER; const char S_RSLT_RESULT[] PROGMEM = D_RSLT_RESULT; const char S_RSLT_WARNING[] PROGMEM = D_RSLT_WARNING; const char S_LWT[] PROGMEM = D_LWT; -const char S_OFFLINE[] PROGMEM = D_OFFLINE; +const char S_LWT_OFFLINE[] PROGMEM = MQTT_LWT_OFFLINE; // support.ino static const char kMonthNames[] = D_MONTH3LIST; diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index f2673bda6..efdf9ca8c 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -369,8 +369,11 @@ //#define USE_ARDUINO_OTA // Add optional support for Arduino OTA (+13k code) // -- MQTT ---------------------------------------- -#define MQTT_TELE_RETAIN 0 // Tele messages may send retain flag (0 = off, 1 = on) -#define MQTT_CLEAN_SESSION 1 // Mqtt clean session connection (0 = No clean session, 1 = Clean session (default)) +#define MQTT_LWT_OFFLINE "Offline" // MQTT LWT offline topic message +#define MQTT_LWT_ONLINE "Online" // MQTT LWT online topic message + +#define MQTT_TELE_RETAIN 0 // Tele messages may send retain flag (0 = off, 1 = on) +#define MQTT_CLEAN_SESSION 1 // Mqtt clean session connection (0 = No clean session, 1 = Clean session (default)) // -- MQTT - Domoticz ----------------------------- #define USE_DOMOTICZ // Enable Domoticz (+6k code, +0.3k mem) diff --git a/tasmota/xdrv_02_mqtt.ino b/tasmota/xdrv_02_mqtt.ino index 58fd04c2c..cc0ed8e62 100644 --- a/tasmota/xdrv_02_mqtt.ino +++ b/tasmota/xdrv_02_mqtt.ino @@ -494,7 +494,7 @@ void MqttConnected(void) Mqtt.connect_count++; GetTopic_P(stopic, TELE, mqtt_topic, S_LWT); - Response_P(PSTR(D_ONLINE)); + Response_P(PSTR(MQTT_LWT_ONLINE)); MqttPublish(stopic, true); if (!Settings.flag4.only_json_message) { // SetOption90 - Disable non-json MQTT response @@ -581,7 +581,7 @@ void MqttReconnect(void) #if defined(USE_MQTT_TLS) && defined(USE_MQTT_AWS_IOT) // don't enable MQTT for AWS IoT if Private Key or Certificate are not set if (Mqtt.mqtt_tls) { - if (0 == strlen(SettingsText(SET_MQTT_PWD))) { // we anticipate that an empty password does not make sense with TLS. This avoids failed connections + if (0 == strlen(SettingsText(SET_MQTT_PWD))) { // we anticipate that an empty password does not make sense with TLS. This avoids failed connections Mqtt.allowed = false; } } @@ -612,7 +612,7 @@ void MqttReconnect(void) } GetTopic_P(stopic, TELE, mqtt_topic, S_LWT); - Response_P(S_OFFLINE); + Response_P(S_LWT_OFFLINE); if (MqttClient.connected()) { MqttClient.disconnect(); } #ifdef USE_MQTT_TLS @@ -895,8 +895,8 @@ void CmndFullTopic(void) char stemp1[TOPSZ]; strlcpy(stemp1, (SC_DEFAULT == Shortcut()) ? MQTT_FULLTOPIC : XdrvMailbox.data, sizeof(stemp1)); if (strcmp(stemp1, SettingsText(SET_MQTT_FULLTOPIC))) { - Response_P((Settings.flag.mqtt_offline) ? S_OFFLINE : ""); // SetOption10 - Control MQTT LWT message format - MqttPublishPrefixTopic_P(TELE, PSTR(D_LWT), true); // Offline or remove previous retained topic + Response_P((Settings.flag.mqtt_offline) ? S_LWT_OFFLINE : ""); // SetOption10 - Control MQTT LWT message format + MqttPublishPrefixTopic_P(TELE, S_LWT, true); // Offline or remove previous retained topic SettingsUpdateText(SET_MQTT_FULLTOPIC, stemp1); restart_flag = 2; } @@ -999,8 +999,8 @@ void CmndTopic(void) char stemp1[TOPSZ]; strlcpy(stemp1, (SC_DEFAULT == Shortcut()) ? MQTT_TOPIC : XdrvMailbox.data, sizeof(stemp1)); if (strcmp(stemp1, SettingsText(SET_MQTT_TOPIC))) { - Response_P((Settings.flag.mqtt_offline) ? S_OFFLINE : ""); // SetOption10 - Control MQTT LWT message format - MqttPublishPrefixTopic_P(TELE, PSTR(D_LWT), true); // Offline or remove previous retained topic + Response_P((Settings.flag.mqtt_offline) ? S_LWT_OFFLINE : ""); // SetOption10 - Control MQTT LWT message format + MqttPublishPrefixTopic_P(TELE, S_LWT, true); // Offline or remove previous retained topic SettingsUpdateText(SET_MQTT_TOPIC, stemp1); restart_flag = 2; } @@ -1342,7 +1342,7 @@ void MqttSaveSettings(void) strlcpy(stemp2, (!strlen(tmp)) ? MQTT_FULLTOPIC : tmp, sizeof(stemp2)); MakeValidMqtt(1, stemp2); if ((strcmp(stemp, SettingsText(SET_MQTT_TOPIC))) || (strcmp(stemp2, SettingsText(SET_MQTT_FULLTOPIC)))) { - Response_P((Settings.flag.mqtt_offline) ? S_OFFLINE : ""); // SetOption10 - Control MQTT LWT message format + Response_P((Settings.flag.mqtt_offline) ? S_LWT_OFFLINE : ""); // SetOption10 - Control MQTT LWT message format MqttPublishPrefixTopic_P(TELE, S_LWT, true); // Offline or remove previous retained topic } SettingsUpdateText(SET_MQTT_TOPIC, stemp); diff --git a/tasmota/xdrv_12_home_assistant.ino b/tasmota/xdrv_12_home_assistant.ino index 0bc1c9c32..1c2cf7fad 100644 --- a/tasmota/xdrv_12_home_assistant.ino +++ b/tasmota/xdrv_12_home_assistant.ino @@ -59,8 +59,8 @@ const char HASS_DISCOVER_SENSOR[] PROGMEM = const char HASS_DISCOVER_SENSOR_LWT[] PROGMEM = ",\"avty_t\":\"%s\"," // tele/dualr2/LWT - "\"pl_avail\":\"" D_ONLINE "\"," // Online - "\"pl_not_avail\":\"" D_OFFLINE "\""; // Offline + "\"pl_avail\":\"" MQTT_LWT_ONLINE "\"," // Online + "\"pl_not_avail\":\"" MQTT_LWT_OFFLINE "\""; // Offline const char HASS_DISCOVER_RELAY[] PROGMEM = ",\"cmd_t\":\"%s\"," // cmnd/dualr2/POWER2 @@ -184,8 +184,8 @@ const char HASS_DISCOVER_DEVICE[] PROGMEM = // Basic par "\"hn\":\"%s\"," // Host Name "\"mac\":\"%s\"," // Full MAC as Device id "\"md\":\"%s\"," // Module Name - "\"ofln\":\"" D_OFFLINE "\"," // Payload Offline - "\"onln\":\"" D_ONLINE "\"," // Payload Online + "\"ofln\":\"" MQTT_LWT_OFFLINE "\"," // Payload Offline + "\"onln\":\"" MQTT_LWT_ONLINE "\"," // Payload Online "\"state\":[\"%s\",\"%s\",\"%s\",\"%s\"]," // State text for "OFF","ON","TOGGLE","HOLD" "\"sw\":\"%s\"," // Software Version "\"t\":\"%s\"," // Topic diff --git a/tasmota/xdrv_29_deepsleep.ino b/tasmota/xdrv_29_deepsleep.ino index 84b30f740..bb1a7744c 100644 --- a/tasmota/xdrv_29_deepsleep.ino +++ b/tasmota/xdrv_29_deepsleep.ino @@ -130,7 +130,7 @@ void DeepSleepPrepare(void) Response_P(PSTR("{\"" D_PRFX_DEEPSLEEP "\":{\"" D_JSON_TIME "\":\"%s\",\"Epoch\":%d}}"), (char*)dt.c_str(), RtcSettings.nextwakeup); MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_CMND_STATUS)); -// Response_P(S_OFFLINE); +// Response_P(S_LWT_OFFLINE); // MqttPublishPrefixTopic_P(TELE, PSTR(D_LWT), true); // Offline or remove previous retained topic } From b95a1937119c414273264ef5f73e825f2b238c94 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 27 Sep 2020 12:57:49 +0200 Subject: [PATCH 051/119] Update changelog --- RELEASENOTES.md | 2 ++ tasmota/CHANGELOG.md | 3 ++- tasmota/tasmota_globals.h | 6 ++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 89c68c062..14e82b6f3 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -65,10 +65,12 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Fix ``status 13`` json message - Fix Shelly 2.5 higher temperature regression from 8.2.0.1 (#7991) - Change replace ArduinoJson with JSMN for JSON parsing +- Change ``WakeUp`` uses 256 steps instead of 100 (#9241) - Add command ``SetOption110 1`` to disable Zigbee auto-config when pairing new devices - Add command ``SetOption111 1`` to enable frequency output for buzzer GPIO (#8994) - Add command ``SetOption112 1`` to enable friendly name in zigbee topic (use with SetOption89) - Add ``#define USE_MQTT_AWS_IOT_LIGHT`` for password based AWS IoT authentication +- Add ``#define MQTT_LWT_OFFLINE`` and ``#define MQTT_LWT_ONLINE`` to user_config.h (#9395) - Add new shutter modes (#9244) - Add Zigbee auto-config when pairing - Add support for MLX90640 IR array temperature sensor by Christian Baars diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index 698888f81..f555c1324 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -12,14 +12,15 @@ - Fix ``status 13`` json message - Fix Shelly 2.5 higher temperature regression from 8.2.0.1 (#7991) - Change replace ArduinoJson with JSMN for JSON parsing +- Change ``WakeUp`` uses 256 steps instead of 100 (#9241) - Add command ``SetOption110 1`` to disable Zigbee auto-config when pairing new devices - Add command ``SetOption111 1`` to enable frequency output for buzzer GPIO (#8994) - Add command ``SetOption112 1`` to enable friendly name in zigbee topic (use with SetOption89) - Add ``#define USE_MQTT_AWS_IOT_LIGHT`` for password based AWS IoT authentication +- Add ``#define MQTT_LWT_OFFLINE`` and ``#define MQTT_LWT_ONLINE`` to user_config.h (#9395) - Add new shutter modes (#9244) - Add Zigbee auto-config when pairing - Add support for MLX90640 IR array temperature sensor by Christian Baars -- Change ``WakeUp`` uses 256 steps instead of 100 (#9241) ### 8.5.0 20200907 diff --git a/tasmota/tasmota_globals.h b/tasmota/tasmota_globals.h index 40b04a99c..8c6215eab 100644 --- a/tasmota/tasmota_globals.h +++ b/tasmota/tasmota_globals.h @@ -144,6 +144,12 @@ String EthernetMacAddress(void); #ifndef MQTT_CLEAN_SESSION #define MQTT_CLEAN_SESSION 1 // 0 = No clean session, 1 = Clean session (default) #endif +#ifndef MQTT_LWT_OFFLINE +#define MQTT_LWT_OFFLINE "Offline" // MQTT LWT offline topic message +#endif +#ifndef MQTT_LWT_ONLINE +#define MQTT_LWT_ONLINE "Online" // MQTT LWT online topic message +#endif #ifndef MESSZ //#define MESSZ 1040 // Max number of characters in JSON message string (Hass discovery and nice MQTT_MAX_PACKET_SIZE = 1200) From d48f4b938bdd2c2047f8acd684c016821faf9df9 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 27 Sep 2020 15:26:06 +0200 Subject: [PATCH 052/119] Zigbee support for Thermostat cluster --- tasmota/xdrv_23_zigbee_5__constants.ino | 384 +++++++++++++----------- tasmota/xdrv_23_zigbee_5_converters.ino | 32 +- 2 files changed, 238 insertions(+), 178 deletions(-) diff --git a/tasmota/xdrv_23_zigbee_5__constants.ino b/tasmota/xdrv_23_zigbee_5__constants.ino index 12a299a5f..367b67287 100644 --- a/tasmota/xdrv_23_zigbee_5__constants.ino +++ b/tasmota/xdrv_23_zigbee_5__constants.ino @@ -259,6 +259,25 @@ const char Z_strings[] PROGMEM = "DecelerationTimeLift" "\x00" "IntermediateSetpointsLift" "\x00" "IntermediateSetpointsTilt" "\x00" + "LocalTemperature" "\x00" + "OutdoorTemperature" "\x00" + "PICoolingDemand" "\x00" + "PIHeatingDemand" "\x00" + "LocalTemperatureCalibration" "\x00" + "OccupiedCoolingSetpoint" "\x00" + "OccupiedHeatingSetpoint" "\x00" + "UnoccupiedCoolingSetpoint" "\x00" + "UnoccupiedHeatingSetpoint" "\x00" + "MinHeatSetpointLimit" "\x00" + "MaxHeatSetpointLimit" "\x00" + "MinCoolSetpointLimit" "\x00" + "MaxCoolSetpointLimit" "\x00" + "ControlSequenceOfOperation" "\x00" + "SystemMode" "\x00" + "TRVMode" "\x00" + "SetValvePosition" "\x00" + "ThErrors" "\x00" + "CurrentTemperatureSetPoint" "\x00" "Hue" "\x00" "Sat" "\x00" "RemainingTime" "\x00" @@ -300,7 +319,6 @@ const char Z_strings[] PROGMEM = "TemperatureMinMeasuredValue" "\x00" "TemperatureMaxMeasuredValue" "\x00" "TemperatureTolerance" "\x00" - "PressureUnit" "\x00" "Pressure" "\x00" "PressureMinMeasuredValue" "\x00" "PressureMaxMeasuredValue" "\x00" @@ -620,179 +638,197 @@ enum Z_offsets { Zo_DecelerationTimeLift = 3144, Zo_IntermediateSetpointsLift = 3165, Zo_IntermediateSetpointsTilt = 3191, - Zo_Hue = 3217, - Zo_Sat = 3221, - Zo_RemainingTime = 3225, - Zo_X = 3239, - Zo_Y = 3241, - Zo_DriftCompensation = 3243, - Zo_CompensationText = 3261, - Zo_CT = 3278, - Zo_ColorMode = 3281, - Zo_NumberOfPrimaries = 3291, - Zo_Primary1X = 3309, - Zo_Primary1Y = 3319, - Zo_Primary1Intensity = 3329, - Zo_Primary2X = 3347, - Zo_Primary2Y = 3357, - Zo_Primary2Intensity = 3367, - Zo_Primary3X = 3385, - Zo_Primary3Y = 3395, - Zo_Primary3Intensity = 3405, - Zo_WhitePointX = 3423, - Zo_WhitePointY = 3435, - Zo_ColorPointRX = 3447, - Zo_ColorPointRY = 3460, - Zo_ColorPointRIntensity = 3473, - Zo_ColorPointGX = 3494, - Zo_ColorPointGY = 3507, - Zo_ColorPointGIntensity = 3520, - Zo_ColorPointBX = 3541, - Zo_ColorPointBY = 3554, - Zo_ColorPointBIntensity = 3567, - Zo_Illuminance = 3588, - Zo_IlluminanceMinMeasuredValue = 3600, - Zo_IlluminanceMaxMeasuredValue = 3628, - Zo_IlluminanceTolerance = 3656, - Zo_IlluminanceLightSensorType = 3677, - Zo_IlluminanceLevelStatus = 3704, - Zo_IlluminanceTargetLevel = 3727, - Zo_Temperature = 3750, - Zo_TemperatureMinMeasuredValue = 3762, - Zo_TemperatureMaxMeasuredValue = 3790, - Zo_TemperatureTolerance = 3818, - Zo_PressureUnit = 3839, - Zo_Pressure = 3852, - Zo_PressureMinMeasuredValue = 3861, - Zo_PressureMaxMeasuredValue = 3886, - Zo_PressureTolerance = 3911, - Zo_PressureScaledValue = 3929, - Zo_PressureMinScaledValue = 3949, - Zo_PressureMaxScaledValue = 3972, - Zo_PressureScaledTolerance = 3995, - Zo_PressureScale = 4019, - Zo_FlowRate = 4033, - Zo_FlowMinMeasuredValue = 4042, - Zo_FlowMaxMeasuredValue = 4063, - Zo_FlowTolerance = 4084, - Zo_Humidity = 4098, - Zo_HumidityMinMeasuredValue = 4107, - Zo_HumidityMaxMeasuredValue = 4132, - Zo_HumidityTolerance = 4157, - Zo_Occupancy = 4175, - Zo_OccupancySensorType = 4185, - Zo_ZoneState = 4205, - Zo_ZoneType = 4215, - Zo_ZoneStatus = 4224, - Zo_CurrentSummDelivered = 4235, - Zo_CompanyName = 4256, - Zo_MeterTypeID = 4268, - Zo_DataQualityID = 4280, - Zo_CustomerName = 4294, - Zo_Model = 4307, - Zo_PartNumber = 4313, - Zo_ProductRevision = 4324, - Zo_SoftwareRevision = 4340, - Zo_UtilityName = 4357, - Zo_POD = 4369, - Zo_AvailablePower = 4373, - Zo_PowerThreshold = 4388, - Zo_RMSVoltage = 4403, - Zo_RMSCurrent = 4414, - Zo_ActivePower = 4425, - Zo_NumberOfResets = 4437, - Zo_PersistentMemoryWrites = 4452, - Zo_LastMessageLQI = 4475, - Zo_LastMessageRSSI = 4490, - Zo_Identify = 4506, - Zo_xxxx = 4515, - Zo_IdentifyQuery = 4520, - Zo_AddGroup = 4534, - Zo_xxxx00 = 4543, - Zo_ViewGroup = 4550, - Zo_GetGroup = 4560, - Zo_01xxxx = 4569, - Zo_GetAllGroups = 4576, - Zo_00 = 4589, - Zo_RemoveGroup = 4592, - Zo_RemoveAllGroups = 4604, - Zo_ViewScene = 4620, - Zo_xxxxyy = 4630, - Zo_RemoveScene = 4637, - Zo_RemoveAllScenes = 4649, - Zo_RecallScene = 4665, - Zo_GetSceneMembership = 4677, - Zo_PowerOffEffect = 4696, - Zo_xxyy = 4711, - Zo_PowerOnRecall = 4716, - Zo_PowerOnTimer = 4730, - Zo_xxyyyyzzzz = 4743, - Zo_xx0A00 = 4754, - Zo_DimmerUp = 4761, - Zo_00190200 = 4770, - Zo_DimmerDown = 4779, - Zo_01190200 = 4790, - Zo_DimmerStop = 4799, - Zo_ResetAlarm = 4810, - Zo_xxyyyy = 4821, - Zo_ResetAllAlarms = 4828, - Zo_xx000A00 = 4843, - Zo_HueSat = 4852, - Zo_xxyy0A00 = 4859, - Zo_Color = 4868, - Zo_xxxxyyyy0A00 = 4874, - Zo_xxxx0A00 = 4887, - Zo_ShutterOpen = 4896, - Zo_ShutterClose = 4908, - Zo_ShutterStop = 4921, - Zo_ShutterLift = 4933, - Zo_xx = 4945, - Zo_ShutterTilt = 4948, - Zo_Shutter = 4960, - Zo_DimmerMove = 4968, - Zo_xx0A = 4979, - Zo_DimmerStepUp = 4984, - Zo_00xx0A00 = 4997, - Zo_DimmerStepDown = 5006, - Zo_01xx0A00 = 5021, - Zo_DimmerStep = 5030, - Zo_xx190A00 = 5041, - Zo_01 = 5050, - Zo_HueMove = 5053, - Zo_xx19 = 5061, - Zo_HueStepUp = 5066, - Zo_HueStepDown = 5076, - Zo_03xx0A00 = 5088, - Zo_HueStep = 5097, - Zo_SatMove = 5105, - Zo_SatStep = 5113, - Zo_xx190A = 5121, - Zo_ColorMove = 5128, - Zo_xxxxyyyy = 5138, - Zo_ColorStep = 5147, - Zo_ColorTempMoveUp = 5157, - Zo_01xxxx000000000000 = 5173, - Zo_ColorTempMoveDown = 5192, - Zo_03xxxx000000000000 = 5210, - Zo_ColorTempMoveStop = 5229, - Zo_00xxxx000000000000 = 5247, - Zo_ColorTempMove = 5266, - Zo_xxyyyy000000000000 = 5280, - Zo_ColorTempStepUp = 5299, - Zo_01xxxx0A0000000000 = 5315, - Zo_ColorTempStepDown = 5334, - Zo_03xxxx0A0000000000 = 5352, - Zo_ColorTempStep = 5371, - Zo_xxyyyy0A0000000000 = 5385, - Zo_ArrowClick = 5404, - Zo_ArrowHold = 5415, - Zo_ArrowRelease = 5425, - Zo_ZoneStatusChange = 5438, - Zo_xxxxyyzz = 5455, - Zo_xxyyzzzz = 5464, - Zo_AddScene = 5473, - Zo_xxyyyyzz = 5482, - Zo_StoreScene = 5491, + Zo_LocalTemperature = 3217, + Zo_OutdoorTemperature = 3234, + Zo_PICoolingDemand = 3253, + Zo_PIHeatingDemand = 3269, + Zo_LocalTemperatureCalibration = 3285, + Zo_OccupiedCoolingSetpoint = 3313, + Zo_OccupiedHeatingSetpoint = 3337, + Zo_UnoccupiedCoolingSetpoint = 3361, + Zo_UnoccupiedHeatingSetpoint = 3387, + Zo_MinHeatSetpointLimit = 3413, + Zo_MaxHeatSetpointLimit = 3434, + Zo_MinCoolSetpointLimit = 3455, + Zo_MaxCoolSetpointLimit = 3476, + Zo_ControlSequenceOfOperation = 3497, + Zo_SystemMode = 3524, + Zo_TRVMode = 3535, + Zo_SetValvePosition = 3543, + Zo_ThErrors = 3560, + Zo_CurrentTemperatureSetPoint = 3569, + Zo_Hue = 3596, + Zo_Sat = 3600, + Zo_RemainingTime = 3604, + Zo_X = 3618, + Zo_Y = 3620, + Zo_DriftCompensation = 3622, + Zo_CompensationText = 3640, + Zo_CT = 3657, + Zo_ColorMode = 3660, + Zo_NumberOfPrimaries = 3670, + Zo_Primary1X = 3688, + Zo_Primary1Y = 3698, + Zo_Primary1Intensity = 3708, + Zo_Primary2X = 3726, + Zo_Primary2Y = 3736, + Zo_Primary2Intensity = 3746, + Zo_Primary3X = 3764, + Zo_Primary3Y = 3774, + Zo_Primary3Intensity = 3784, + Zo_WhitePointX = 3802, + Zo_WhitePointY = 3814, + Zo_ColorPointRX = 3826, + Zo_ColorPointRY = 3839, + Zo_ColorPointRIntensity = 3852, + Zo_ColorPointGX = 3873, + Zo_ColorPointGY = 3886, + Zo_ColorPointGIntensity = 3899, + Zo_ColorPointBX = 3920, + Zo_ColorPointBY = 3933, + Zo_ColorPointBIntensity = 3946, + Zo_Illuminance = 3967, + Zo_IlluminanceMinMeasuredValue = 3979, + Zo_IlluminanceMaxMeasuredValue = 4007, + Zo_IlluminanceTolerance = 4035, + Zo_IlluminanceLightSensorType = 4056, + Zo_IlluminanceLevelStatus = 4083, + Zo_IlluminanceTargetLevel = 4106, + Zo_Temperature = 4129, + Zo_TemperatureMinMeasuredValue = 4141, + Zo_TemperatureMaxMeasuredValue = 4169, + Zo_TemperatureTolerance = 4197, + Zo_Pressure = 4218, + Zo_PressureMinMeasuredValue = 4227, + Zo_PressureMaxMeasuredValue = 4252, + Zo_PressureTolerance = 4277, + Zo_PressureScaledValue = 4295, + Zo_PressureMinScaledValue = 4315, + Zo_PressureMaxScaledValue = 4338, + Zo_PressureScaledTolerance = 4361, + Zo_PressureScale = 4385, + Zo_FlowRate = 4399, + Zo_FlowMinMeasuredValue = 4408, + Zo_FlowMaxMeasuredValue = 4429, + Zo_FlowTolerance = 4450, + Zo_Humidity = 4464, + Zo_HumidityMinMeasuredValue = 4473, + Zo_HumidityMaxMeasuredValue = 4498, + Zo_HumidityTolerance = 4523, + Zo_Occupancy = 4541, + Zo_OccupancySensorType = 4551, + Zo_ZoneState = 4571, + Zo_ZoneType = 4581, + Zo_ZoneStatus = 4590, + Zo_CurrentSummDelivered = 4601, + Zo_CompanyName = 4622, + Zo_MeterTypeID = 4634, + Zo_DataQualityID = 4646, + Zo_CustomerName = 4660, + Zo_Model = 4673, + Zo_PartNumber = 4679, + Zo_ProductRevision = 4690, + Zo_SoftwareRevision = 4706, + Zo_UtilityName = 4723, + Zo_POD = 4735, + Zo_AvailablePower = 4739, + Zo_PowerThreshold = 4754, + Zo_RMSVoltage = 4769, + Zo_RMSCurrent = 4780, + Zo_ActivePower = 4791, + Zo_NumberOfResets = 4803, + Zo_PersistentMemoryWrites = 4818, + Zo_LastMessageLQI = 4841, + Zo_LastMessageRSSI = 4856, + Zo_Identify = 4872, + Zo_xxxx = 4881, + Zo_IdentifyQuery = 4886, + Zo_AddGroup = 4900, + Zo_xxxx00 = 4909, + Zo_ViewGroup = 4916, + Zo_GetGroup = 4926, + Zo_01xxxx = 4935, + Zo_GetAllGroups = 4942, + Zo_00 = 4955, + Zo_RemoveGroup = 4958, + Zo_RemoveAllGroups = 4970, + Zo_ViewScene = 4986, + Zo_xxxxyy = 4996, + Zo_RemoveScene = 5003, + Zo_RemoveAllScenes = 5015, + Zo_RecallScene = 5031, + Zo_GetSceneMembership = 5043, + Zo_PowerOffEffect = 5062, + Zo_xxyy = 5077, + Zo_PowerOnRecall = 5082, + Zo_PowerOnTimer = 5096, + Zo_xxyyyyzzzz = 5109, + Zo_xx0A00 = 5120, + Zo_DimmerUp = 5127, + Zo_00190200 = 5136, + Zo_DimmerDown = 5145, + Zo_01190200 = 5156, + Zo_DimmerStop = 5165, + Zo_ResetAlarm = 5176, + Zo_xxyyyy = 5187, + Zo_ResetAllAlarms = 5194, + Zo_xx000A00 = 5209, + Zo_HueSat = 5218, + Zo_xxyy0A00 = 5225, + Zo_Color = 5234, + Zo_xxxxyyyy0A00 = 5240, + Zo_xxxx0A00 = 5253, + Zo_ShutterOpen = 5262, + Zo_ShutterClose = 5274, + Zo_ShutterStop = 5287, + Zo_ShutterLift = 5299, + Zo_xx = 5311, + Zo_ShutterTilt = 5314, + Zo_Shutter = 5326, + Zo_DimmerMove = 5334, + Zo_xx0A = 5345, + Zo_DimmerStepUp = 5350, + Zo_00xx0A00 = 5363, + Zo_DimmerStepDown = 5372, + Zo_01xx0A00 = 5387, + Zo_DimmerStep = 5396, + Zo_xx190A00 = 5407, + Zo_01 = 5416, + Zo_HueMove = 5419, + Zo_xx19 = 5427, + Zo_HueStepUp = 5432, + Zo_HueStepDown = 5442, + Zo_03xx0A00 = 5454, + Zo_HueStep = 5463, + Zo_SatMove = 5471, + Zo_SatStep = 5479, + Zo_xx190A = 5487, + Zo_ColorMove = 5494, + Zo_xxxxyyyy = 5504, + Zo_ColorStep = 5513, + Zo_ColorTempMoveUp = 5523, + Zo_01xxxx000000000000 = 5539, + Zo_ColorTempMoveDown = 5558, + Zo_03xxxx000000000000 = 5576, + Zo_ColorTempMoveStop = 5595, + Zo_00xxxx000000000000 = 5613, + Zo_ColorTempMove = 5632, + Zo_xxyyyy000000000000 = 5646, + Zo_ColorTempStepUp = 5665, + Zo_01xxxx0A0000000000 = 5681, + Zo_ColorTempStepDown = 5700, + Zo_03xxxx0A0000000000 = 5718, + Zo_ColorTempStep = 5737, + Zo_xxyyyy0A0000000000 = 5751, + Zo_ArrowClick = 5770, + Zo_ArrowHold = 5781, + Zo_ArrowRelease = 5791, + Zo_ZoneStatusChange = 5804, + Zo_xxxxyyzz = 5821, + Zo_xxyyzzzz = 5830, + Zo_AddScene = 5839, + Zo_xxyyyyzz = 5848, + Zo_StoreScene = 5857, }; diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index f29c514d5..7ed4e73df 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -106,16 +106,16 @@ enum Cx_cluster_short { Cx0000, Cx0001, Cx0002, Cx0003, Cx0004, Cx0005, Cx0006, Cx0007, Cx0008, Cx0009, Cx000A, Cx000B, Cx000C, Cx000D, Cx000E, Cx000F, Cx0010, Cx0011, Cx0012, Cx0013, Cx0014, Cx001A, Cx0020, Cx0100, - Cx0101, Cx0102, Cx0300, Cx0400, Cx0401, Cx0402, Cx0403, Cx0404, - Cx0405, Cx0406, Cx0500, Cx0702, Cx0B01, Cx0B04, Cx0B05, + Cx0101, Cx0102, Cx0201, Cx0300, Cx0400, Cx0401, Cx0402, Cx0403, + Cx0404, Cx0405, Cx0406, Cx0500, Cx0702, Cx0B01, Cx0B04, Cx0B05, }; const uint16_t Cx_cluster[] PROGMEM = { 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x001A, 0x0020, 0x0100, - 0x0101, 0x0102, 0x0300, 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, - 0x0405, 0x0406, 0x0500, 0x0702, 0x0B01, 0x0B04, 0x0B05, + 0x0101, 0x0102, 0x0201, 0x0300, 0x0400, 0x0401, 0x0402, 0x0403, + 0x0404, 0x0405, 0x0406, 0x0500, 0x0702, 0x0B01, 0x0B04, 0x0B05, }; uint16_t CxToCluster(uint8_t cx) { @@ -403,6 +403,29 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { { Zoctstr, Cx0102, 0x0018, Z_(IntermediateSetpointsLift),1 }, { Zoctstr, Cx0102, 0x0019, Z_(IntermediateSetpointsTilt),1 }, + // Thermostat + { Zint16, Cx0201, 0x0000, Z_(LocalTemperature), -100 }, + { Zint16, Cx0201, 0x0001, Z_(OutdoorTemperature),-100 }, + { Zuint8, Cx0201, 0x0007, Z_(PICoolingDemand), 1 }, + { Zuint8, Cx0201, 0x0008, Z_(PIHeatingDemand), 1 }, + { Zint8, Cx0201, 0x0010, Z_(LocalTemperatureCalibration), -10 }, + { Zint16, Cx0201, 0x0011, Z_(OccupiedCoolingSetpoint), -100 }, + { Zint16, Cx0201, 0x0012, Z_(OccupiedHeatingSetpoint), -100 }, + { Zint16, Cx0201, 0x0013, Z_(UnoccupiedCoolingSetpoint), -100 }, + { Zint16, Cx0201, 0x0014, Z_(UnoccupiedHeatingSetpoint), -100 }, + { Zint16, Cx0201, 0x0015, Z_(MinHeatSetpointLimit), -100 }, + { Zint16, Cx0201, 0x0016, Z_(MaxHeatSetpointLimit), -100 }, + { Zint16, Cx0201, 0x0017, Z_(MinCoolSetpointLimit), -100 }, + { Zint16, Cx0201, 0x0018, Z_(MaxCoolSetpointLimit), -100 }, + { Zmap8, Cx0201, 0x001A, Z_(MaxCoolSetpointLimit), 1 }, + { Zenum8, Cx0201, 0x001B, Z_(ControlSequenceOfOperation), 1 }, + { Zenum8, Cx0201, 0x001C, Z_(SystemMode), 1 }, + // below is Eurotronic specific + { Zenum8, Cx0201, 0x4000, Z_(TRVMode), 1 }, + { Zuint8, Cx0201, 0x4001, Z_(SetValvePosition), 1 }, + { Zuint8, Cx0201, 0x4002, Z_(ThErrors), 1 }, + { Zint16, Cx0201, 0x4003, Z_(CurrentTemperatureSetPoint), -100 }, + // Color Control cluster { Zuint8, Cx0300, 0x0000, Z_(Hue), 1 }, { Zuint8, Cx0300, 0x0001, Z_(Sat), 1 }, @@ -1641,6 +1664,7 @@ void ZCLFrame::postProcessAttributes(uint16_t shortaddr, Z_attribute_list& attr_ case 0x00060000: case 0x00068000: device.setPower(attr.getBool()); break; case 0x00080000: device.dimmer = uval16; break; + case 0x02010000: device.temperature = fval * 10 + 0.5f; break; case 0x03000000: device.hue = changeUIntScale(uval16, 0, 254, 0, 360); break; case 0x03000001: device.sat = uval16; break; case 0x03000003: device.x = uval16; break; From e8466371ad996f87734012e5f769ca9cb21de2e9 Mon Sep 17 00:00:00 2001 From: stefanbode Date: Sun, 27 Sep 2020 15:36:56 +0200 Subject: [PATCH 053/119] Fix on Reboot and wrong operation during shutterstop fix #9340 --- tasmota/xdrv_27_shutter.ino | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/tasmota/xdrv_27_shutter.ino b/tasmota/xdrv_27_shutter.ino index a1625c786..44bbb5429 100644 --- a/tasmota/xdrv_27_shutter.ino +++ b/tasmota/xdrv_27_shutter.ino @@ -321,7 +321,6 @@ void ShutterInit(void) } ShutterLimitRealAndTargetPositions(i); Settings.shutter_accuracy = 1; - } } @@ -350,9 +349,7 @@ void ShutterReportPosition(bool always, uint32_t index) if (always || (rules_flag.shutter_moving)) { MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_PRFX_SHUTTER)); // RulesProcess() now re-entry protected } - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: rules_flag.shutter_moving: %d, moved %d"), rules_flag.shutter_moving, rules_flag.shutter_moved); - } void ShutterLimitRealAndTargetPositions(uint32_t i) { @@ -398,7 +395,7 @@ void ShutterDecellerateForStop(uint8_t i) case SHT_PWM_VALUE: case SHT_COUNTER: int16_t missing_steps; - Shutter[i].accelerator = -(ShutterGlobal.open_velocity_max / (Shutter[i].motordelay>0 ? Shutter[i].motordelay : 1) *11/10); + Shutter[i].accelerator = -(ShutterGlobal.open_velocity_max / (Shutter[i].motordelay>4 ? (Shutter[i].motordelay*11)/10 : 4) ); while (Shutter[i].pwm_velocity > -2*Shutter[i].accelerator ) { AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: velocity: %ld, delta: %d"), Shutter[i].pwm_velocity, Shutter[i].accelerator ); //Shutter[i].pwm_velocity = tmax(Shutter[i].pwm_velocity-Shutter[i].accelerator , 0); @@ -430,7 +427,7 @@ void ShutterDecellerateForStop(uint8_t i) } void ShutterPowerOff(uint8_t i) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: Stop Shutter %d .."), i); + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: Stop Shutter %d. Switchmode %d"), i,Shutter[i].switch_mode); ShutterDecellerateForStop(i); if (Shutter[i].direction !=0) { Shutter[i].direction = 0; @@ -474,21 +471,15 @@ void ShutterUpdatePosition(void) char scommand[CMDSZ]; char stopic[TOPSZ]; - for (uint32_t i = 0; i < shutters_present; i++) { if (Shutter[i].direction != 0) { - - // Calculate position with counter. Much more accurate and no need for motordelay workaround - // adding some steps to stop early - //Shutter[i].real_position = ShutterCalculatePosition(i); if (!ShutterGlobal.start_reported) { ShutterReportPosition(true, i); XdrvRulesProcess(); ShutterGlobal.start_reported = 1; } - //ShutterCalculateAccelerator(i); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: time: %d, toBeAcc %d, current_stop_way %d,vel_vur %d, vel_max %d, act_vel_change %d, min_runtime_ms %d, act.pos %d, next_stop %d, target: %d, velocity_change_per_step_max %d"),Shutter[i].time,toBeAcc,current_stop_way, - Shutter[i].pwm_velocity,velocity_max, Shutter[i].accelerator,min_runtime_ms,Shutter[i].real_position, next_possible_stop_position,Shutter[i].target_position,velocity_change_per_step_max); + AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: time: %d, toBeAcc %d, current_stop_way %d,vel_cur %d, vel_max %d, act_vel_change %d, min_runtime_ms %d, act.pos %d, next_stop %d, target: %d, max_vel_change %d, dir: %d"),Shutter[i].time,toBeAcc,current_stop_way, + Shutter[i].pwm_velocity,velocity_max, Shutter[i].accelerator,min_runtime_ms,Shutter[i].real_position, next_possible_stop_position,Shutter[i].target_position,velocity_change_per_step_max,Shutter[i].direction); if ( Shutter[i].real_position * Shutter[i].direction >= Shutter[i].target_position * Shutter[i].direction || Shutter[i].pwm_velocity 0 ? 100 : -Shutter[i].close_velocity)); + int32_t temp_realpos = ShutterCalculatePosition(i); XdrvMailbox.payload = ShutterRealToPercentPosition(temp_realpos, i); - //XdrvMailbox.payload = Settings.shuttercoeff[2][i] * 5 > temp_realpos ? temp_realpos / Settings.shuttercoeff[2][i] : (temp_realpos-Settings.shuttercoeff[0,i]) / Settings.shuttercoeff[1][i]; last_source = SRC_WEBGUI; CmndShutterPosition(); } else { From 35e70f92c45af4287876c62ca8a3167cfd711205 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 27 Sep 2020 16:50:48 +0200 Subject: [PATCH 054/119] Zigbee add SeaPressure --- tasmota/xdrv_23_zigbee_5__constants.ino | 246 ++++++++++++------------ tasmota/xdrv_23_zigbee_5_converters.ino | 38 +++- tasmota/xdrv_23_zigbee_8_parsers.ino | 1 + 3 files changed, 158 insertions(+), 127 deletions(-) diff --git a/tasmota/xdrv_23_zigbee_5__constants.ino b/tasmota/xdrv_23_zigbee_5__constants.ino index 367b67287..43182c90d 100644 --- a/tasmota/xdrv_23_zigbee_5__constants.ino +++ b/tasmota/xdrv_23_zigbee_5__constants.ino @@ -328,6 +328,7 @@ const char Z_strings[] PROGMEM = "PressureMaxScaledValue" "\x00" "PressureScaledTolerance" "\x00" "PressureScale" "\x00" + "SeaPressure" "\x00" "FlowRate" "\x00" "FlowMinMeasuredValue" "\x00" "FlowMaxMeasuredValue" "\x00" @@ -707,128 +708,129 @@ enum Z_offsets { Zo_PressureMaxScaledValue = 4338, Zo_PressureScaledTolerance = 4361, Zo_PressureScale = 4385, - Zo_FlowRate = 4399, - Zo_FlowMinMeasuredValue = 4408, - Zo_FlowMaxMeasuredValue = 4429, - Zo_FlowTolerance = 4450, - Zo_Humidity = 4464, - Zo_HumidityMinMeasuredValue = 4473, - Zo_HumidityMaxMeasuredValue = 4498, - Zo_HumidityTolerance = 4523, - Zo_Occupancy = 4541, - Zo_OccupancySensorType = 4551, - Zo_ZoneState = 4571, - Zo_ZoneType = 4581, - Zo_ZoneStatus = 4590, - Zo_CurrentSummDelivered = 4601, - Zo_CompanyName = 4622, - Zo_MeterTypeID = 4634, - Zo_DataQualityID = 4646, - Zo_CustomerName = 4660, - Zo_Model = 4673, - Zo_PartNumber = 4679, - Zo_ProductRevision = 4690, - Zo_SoftwareRevision = 4706, - Zo_UtilityName = 4723, - Zo_POD = 4735, - Zo_AvailablePower = 4739, - Zo_PowerThreshold = 4754, - Zo_RMSVoltage = 4769, - Zo_RMSCurrent = 4780, - Zo_ActivePower = 4791, - Zo_NumberOfResets = 4803, - Zo_PersistentMemoryWrites = 4818, - Zo_LastMessageLQI = 4841, - Zo_LastMessageRSSI = 4856, - Zo_Identify = 4872, - Zo_xxxx = 4881, - Zo_IdentifyQuery = 4886, - Zo_AddGroup = 4900, - Zo_xxxx00 = 4909, - Zo_ViewGroup = 4916, - Zo_GetGroup = 4926, - Zo_01xxxx = 4935, - Zo_GetAllGroups = 4942, - Zo_00 = 4955, - Zo_RemoveGroup = 4958, - Zo_RemoveAllGroups = 4970, - Zo_ViewScene = 4986, - Zo_xxxxyy = 4996, - Zo_RemoveScene = 5003, - Zo_RemoveAllScenes = 5015, - Zo_RecallScene = 5031, - Zo_GetSceneMembership = 5043, - Zo_PowerOffEffect = 5062, - Zo_xxyy = 5077, - Zo_PowerOnRecall = 5082, - Zo_PowerOnTimer = 5096, - Zo_xxyyyyzzzz = 5109, - Zo_xx0A00 = 5120, - Zo_DimmerUp = 5127, - Zo_00190200 = 5136, - Zo_DimmerDown = 5145, - Zo_01190200 = 5156, - Zo_DimmerStop = 5165, - Zo_ResetAlarm = 5176, - Zo_xxyyyy = 5187, - Zo_ResetAllAlarms = 5194, - Zo_xx000A00 = 5209, - Zo_HueSat = 5218, - Zo_xxyy0A00 = 5225, - Zo_Color = 5234, - Zo_xxxxyyyy0A00 = 5240, - Zo_xxxx0A00 = 5253, - Zo_ShutterOpen = 5262, - Zo_ShutterClose = 5274, - Zo_ShutterStop = 5287, - Zo_ShutterLift = 5299, - Zo_xx = 5311, - Zo_ShutterTilt = 5314, - Zo_Shutter = 5326, - Zo_DimmerMove = 5334, - Zo_xx0A = 5345, - Zo_DimmerStepUp = 5350, - Zo_00xx0A00 = 5363, - Zo_DimmerStepDown = 5372, - Zo_01xx0A00 = 5387, - Zo_DimmerStep = 5396, - Zo_xx190A00 = 5407, - Zo_01 = 5416, - Zo_HueMove = 5419, - Zo_xx19 = 5427, - Zo_HueStepUp = 5432, - Zo_HueStepDown = 5442, - Zo_03xx0A00 = 5454, - Zo_HueStep = 5463, - Zo_SatMove = 5471, - Zo_SatStep = 5479, - Zo_xx190A = 5487, - Zo_ColorMove = 5494, - Zo_xxxxyyyy = 5504, - Zo_ColorStep = 5513, - Zo_ColorTempMoveUp = 5523, - Zo_01xxxx000000000000 = 5539, - Zo_ColorTempMoveDown = 5558, - Zo_03xxxx000000000000 = 5576, - Zo_ColorTempMoveStop = 5595, - Zo_00xxxx000000000000 = 5613, - Zo_ColorTempMove = 5632, - Zo_xxyyyy000000000000 = 5646, - Zo_ColorTempStepUp = 5665, - Zo_01xxxx0A0000000000 = 5681, - Zo_ColorTempStepDown = 5700, - Zo_03xxxx0A0000000000 = 5718, - Zo_ColorTempStep = 5737, - Zo_xxyyyy0A0000000000 = 5751, - Zo_ArrowClick = 5770, - Zo_ArrowHold = 5781, - Zo_ArrowRelease = 5791, - Zo_ZoneStatusChange = 5804, - Zo_xxxxyyzz = 5821, - Zo_xxyyzzzz = 5830, - Zo_AddScene = 5839, - Zo_xxyyyyzz = 5848, - Zo_StoreScene = 5857, + Zo_SeaPressure = 4399, + Zo_FlowRate = 4411, + Zo_FlowMinMeasuredValue = 4420, + Zo_FlowMaxMeasuredValue = 4441, + Zo_FlowTolerance = 4462, + Zo_Humidity = 4476, + Zo_HumidityMinMeasuredValue = 4485, + Zo_HumidityMaxMeasuredValue = 4510, + Zo_HumidityTolerance = 4535, + Zo_Occupancy = 4553, + Zo_OccupancySensorType = 4563, + Zo_ZoneState = 4583, + Zo_ZoneType = 4593, + Zo_ZoneStatus = 4602, + Zo_CurrentSummDelivered = 4613, + Zo_CompanyName = 4634, + Zo_MeterTypeID = 4646, + Zo_DataQualityID = 4658, + Zo_CustomerName = 4672, + Zo_Model = 4685, + Zo_PartNumber = 4691, + Zo_ProductRevision = 4702, + Zo_SoftwareRevision = 4718, + Zo_UtilityName = 4735, + Zo_POD = 4747, + Zo_AvailablePower = 4751, + Zo_PowerThreshold = 4766, + Zo_RMSVoltage = 4781, + Zo_RMSCurrent = 4792, + Zo_ActivePower = 4803, + Zo_NumberOfResets = 4815, + Zo_PersistentMemoryWrites = 4830, + Zo_LastMessageLQI = 4853, + Zo_LastMessageRSSI = 4868, + Zo_Identify = 4884, + Zo_xxxx = 4893, + Zo_IdentifyQuery = 4898, + Zo_AddGroup = 4912, + Zo_xxxx00 = 4921, + Zo_ViewGroup = 4928, + Zo_GetGroup = 4938, + Zo_01xxxx = 4947, + Zo_GetAllGroups = 4954, + Zo_00 = 4967, + Zo_RemoveGroup = 4970, + Zo_RemoveAllGroups = 4982, + Zo_ViewScene = 4998, + Zo_xxxxyy = 5008, + Zo_RemoveScene = 5015, + Zo_RemoveAllScenes = 5027, + Zo_RecallScene = 5043, + Zo_GetSceneMembership = 5055, + Zo_PowerOffEffect = 5074, + Zo_xxyy = 5089, + Zo_PowerOnRecall = 5094, + Zo_PowerOnTimer = 5108, + Zo_xxyyyyzzzz = 5121, + Zo_xx0A00 = 5132, + Zo_DimmerUp = 5139, + Zo_00190200 = 5148, + Zo_DimmerDown = 5157, + Zo_01190200 = 5168, + Zo_DimmerStop = 5177, + Zo_ResetAlarm = 5188, + Zo_xxyyyy = 5199, + Zo_ResetAllAlarms = 5206, + Zo_xx000A00 = 5221, + Zo_HueSat = 5230, + Zo_xxyy0A00 = 5237, + Zo_Color = 5246, + Zo_xxxxyyyy0A00 = 5252, + Zo_xxxx0A00 = 5265, + Zo_ShutterOpen = 5274, + Zo_ShutterClose = 5286, + Zo_ShutterStop = 5299, + Zo_ShutterLift = 5311, + Zo_xx = 5323, + Zo_ShutterTilt = 5326, + Zo_Shutter = 5338, + Zo_DimmerMove = 5346, + Zo_xx0A = 5357, + Zo_DimmerStepUp = 5362, + Zo_00xx0A00 = 5375, + Zo_DimmerStepDown = 5384, + Zo_01xx0A00 = 5399, + Zo_DimmerStep = 5408, + Zo_xx190A00 = 5419, + Zo_01 = 5428, + Zo_HueMove = 5431, + Zo_xx19 = 5439, + Zo_HueStepUp = 5444, + Zo_HueStepDown = 5454, + Zo_03xx0A00 = 5466, + Zo_HueStep = 5475, + Zo_SatMove = 5483, + Zo_SatStep = 5491, + Zo_xx190A = 5499, + Zo_ColorMove = 5506, + Zo_xxxxyyyy = 5516, + Zo_ColorStep = 5525, + Zo_ColorTempMoveUp = 5535, + Zo_01xxxx000000000000 = 5551, + Zo_ColorTempMoveDown = 5570, + Zo_03xxxx000000000000 = 5588, + Zo_ColorTempMoveStop = 5607, + Zo_00xxxx000000000000 = 5625, + Zo_ColorTempMove = 5644, + Zo_xxyyyy000000000000 = 5658, + Zo_ColorTempStepUp = 5677, + Zo_01xxxx0A0000000000 = 5693, + Zo_ColorTempStepDown = 5712, + Zo_03xxxx0A0000000000 = 5730, + Zo_ColorTempStep = 5749, + Zo_xxyyyy0A0000000000 = 5763, + Zo_ArrowClick = 5782, + Zo_ArrowHold = 5793, + Zo_ArrowRelease = 5803, + Zo_ZoneStatusChange = 5816, + Zo_xxxxyyzz = 5833, + Zo_xxyyzzzz = 5842, + Zo_AddScene = 5851, + Zo_xxyyyyzz = 5860, + Zo_StoreScene = 5869, }; diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index 7ed4e73df..780ef979c 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -489,6 +489,7 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { { Zint16, Cx0403, 0x0012, Z_(PressureMaxScaledValue), 1 }, // { Zuint16, Cx0403, 0x0013, Z_(PressureScaledTolerance), 1 }, // { Zint8, Cx0403, 0x0014, Z_(PressureScale), 1 }, // + { Zint16, Cx0403, 0xFF00, Z_(SeaPressure), 1 }, // Pressure at Sea Level, Tasmota specific { Zunk, Cx0403, 0xFFFF, Z_(), 0 }, // Remove all other Pressure values // Flow Measurement cluster @@ -665,6 +666,7 @@ public: void parseReportAttributes(Z_attribute_list& attr_list); void generateSyntheticAttributes(Z_attribute_list& attr_list); + void computeSyntheticAttributes(Z_attribute_list& attr_list); void generateCallBacks(Z_attribute_list& attr_list); void parseReadAttributes(Z_attribute_list& attr_list); void parseReadAttributesResponse(Z_attribute_list& attr_list); @@ -1096,6 +1098,9 @@ void ZCLFrame::parseReportAttributes(Z_attribute_list& attr_list) { } } +// +// Extract attributes hidden in other compound attributes +// void ZCLFrame::generateSyntheticAttributes(Z_attribute_list& attr_list) { // scan through attributes and apply specific converters for (auto &attr : attr_list) { @@ -1103,11 +1108,6 @@ void ZCLFrame::generateSyntheticAttributes(Z_attribute_list& attr_list) { uint32_t ccccaaaa = (attr.key.id.cluster << 16) | attr.key.id.attr_id; switch (ccccaaaa) { // 0xccccaaaa . c=cluster, a=attribute - case 0x00010020: // BatteryVoltage - if (attr_list.countAttribute(0x0001,0x0021) == 0) { // if it does not already contain BatteryPercentage - uint32_t mv = attr.getUInt()*100; - attr_list.addAttribute(0x0001, 0x0021).setUInt(toPercentageCR2032(mv) * 2); - } case 0x0000FF01: syntheticAqaraSensor(attr_list, attr); break; @@ -1125,6 +1125,33 @@ void ZCLFrame::generateSyntheticAttributes(Z_attribute_list& attr_list) { } } +// +// Compute new attributes based on the standard set +// Note: both function are now split to compute on extracted attributes +// +void ZCLFrame::computeSyntheticAttributes(Z_attribute_list& attr_list) { + // scan through attributes and apply specific converters + for (auto &attr : attr_list) { + if (attr.key_is_str) { continue; } // pass if key is a name + uint32_t ccccaaaa = (attr.key.id.cluster << 16) | attr.key.id.attr_id; + + switch (ccccaaaa) { // 0xccccaaaa . c=cluster, a=attribute + case 0x00010020: // BatteryVoltage + if (attr_list.countAttribute(0x0001,0x0021) == 0) { // if it does not already contain BatteryPercentage + uint32_t mv = attr.getUInt()*100; + attr_list.addAttribute(0x0001, 0x0021).setUInt(toPercentageCR2032(mv) * 2); + } + break; + case 0x04030000: // Pressure + int16_t pressure = attr.getInt(); + int16_t pressure_sealevel = (pressure / FastPrecisePow(1.0 - ((float)Settings.altitude / 44330.0f), 5.255f)) - 21.6f; + attr_list.addAttribute(0x0403, 0xFF00).setInt(pressure_sealevel); + // We create a synthetic attribute 0403/FF00 to indicate sea level + break; + } + } +} + // Set deferred callbacks for Occupancy // TODO make delay a parameter void ZCLFrame::generateCallBacks(Z_attribute_list& attr_list) { @@ -1672,6 +1699,7 @@ void ZCLFrame::postProcessAttributes(uint16_t shortaddr, Z_attribute_list& attr_ case 0x03000007: device.ct = uval16; break; case 0x03000008: device.colormode = uval16; break; case 0x04020000: device.temperature = fval * 10 + 0.5f; break; + case 0x0403FF00: device.pressure = fval + 0.5f; break; // give priority to sea level case 0x04030000: device.pressure = fval + 0.5f; break; case 0x04050000: device.humidity = fval + 0.5f; break; case 0x0B040505: device.mains_voltage = uval16; break; diff --git a/tasmota/xdrv_23_zigbee_8_parsers.ino b/tasmota/xdrv_23_zigbee_8_parsers.ino index b37d9bc86..2ce98cd01 100644 --- a/tasmota/xdrv_23_zigbee_8_parsers.ino +++ b/tasmota/xdrv_23_zigbee_8_parsers.ino @@ -1396,6 +1396,7 @@ void Z_IncomingMessage(class ZCLFrame &zcl_received) { } zcl_received.generateSyntheticAttributes(attr_list); + zcl_received.computeSyntheticAttributes(attr_list); zcl_received.generateCallBacks(attr_list); // set deferred callbacks, ex: Occupancy zcl_received.postProcessAttributes(srcaddr, attr_list); From dc3d84b266137673f79e57839a383c17ab5c66c1 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 27 Sep 2020 18:26:30 +0200 Subject: [PATCH 055/119] Fix ESP32 OneWire driver Fix ESP32 OneWire driver (#9302) --- .../OneWire.cpp | 170 +++++++----- .../OneWire.h | 34 +-- .../README.md | 11 + .../DS18x20_Temperature.pde | 0 .../examples/DS2408_Switch/DS2408_Switch.pde | 0 .../examples/DS250x_PROM/DS250x_PROM.pde | 0 .../keywords.txt | 0 .../library.json | 0 .../library.properties | 4 +- tasmota/xsns_05_ds18x20.ino | 2 + tasmota/xsns_05_ds18x20_esp32.ino | 254 ++++++++++++++++++ 11 files changed, 385 insertions(+), 90 deletions(-) rename lib/{OneWire-2.3.3.06 => OneWire-Stickbreaker-20190506-1.1}/OneWire.cpp (86%) rename lib/{OneWire-2.3.3.06 => OneWire-Stickbreaker-20190506-1.1}/OneWire.h (95%) create mode 100644 lib/OneWire-Stickbreaker-20190506-1.1/README.md rename lib/{OneWire-2.3.3.06 => OneWire-Stickbreaker-20190506-1.1}/examples/DS18x20_Temperature/DS18x20_Temperature.pde (100%) rename lib/{OneWire-2.3.3.06 => OneWire-Stickbreaker-20190506-1.1}/examples/DS2408_Switch/DS2408_Switch.pde (100%) rename lib/{OneWire-2.3.3.06 => OneWire-Stickbreaker-20190506-1.1}/examples/DS250x_PROM/DS250x_PROM.pde (100%) rename lib/{OneWire-2.3.3.06 => OneWire-Stickbreaker-20190506-1.1}/keywords.txt (100%) rename lib/{OneWire-2.3.3.06 => OneWire-Stickbreaker-20190506-1.1}/library.json (100%) rename lib/{OneWire-2.3.3.06 => OneWire-Stickbreaker-20190506-1.1}/library.properties (83%) create mode 100644 tasmota/xsns_05_ds18x20_esp32.ino diff --git a/lib/OneWire-2.3.3.06/OneWire.cpp b/lib/OneWire-Stickbreaker-20190506-1.1/OneWire.cpp similarity index 86% rename from lib/OneWire-2.3.3.06/OneWire.cpp rename to lib/OneWire-Stickbreaker-20190506-1.1/OneWire.cpp index 5c9945d51..4476ff53a 100644 --- a/lib/OneWire-2.3.3.06/OneWire.cpp +++ b/lib/OneWire-Stickbreaker-20190506-1.1/OneWire.cpp @@ -32,6 +32,17 @@ private email about OneWire). OneWire is now very mature code. No changes other than adding definitions for newer hardware support are anticipated. +======= +Version 2.3.3 ESP32 Stickbreaker 06MAY2019 + Add a #ifdef to isolate ESP32 mods +Version 2.3.1 ESP32 everslick 30APR2018 + add IRAM_ATTR attribute to write_bit/read_bit to fix icache miss delay + https://github.com/espressif/arduino-esp32/issues/1335 + +Version 2.3 ESP32 stickbreaker 28DEC2017 + adjust to use portENTER_CRITICAL(&mux) instead of noInterrupts(); + adjust to use portEXIT_CRITICAL(&mux) instead of Interrupts(); + Version 2.3: Unknown chip fallback mode, Roger Clark Teensy-LC compatibility, Paul Stoffregen @@ -141,14 +152,18 @@ sample code bearing this copyright. #include "OneWire.h" +#ifdef ARDUINO_ARCH_ESP32 +#define noInterrupts() {portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED;portENTER_CRITICAL(&mux) +#define interrupts() portEXIT_CRITICAL(&mux);} +#endif OneWire::OneWire(uint8_t pin) { - pinMode(pin, INPUT); - bitmask = PIN_TO_BITMASK(pin); - baseReg = PIN_TO_BASEREG(pin); + pinMode(pin, INPUT); + bitmask = PIN_TO_BITMASK(pin); + baseReg = PIN_TO_BASEREG(pin); #if ONEWIRE_SEARCH - reset_search(); + reset_search(); #endif } @@ -159,60 +174,65 @@ OneWire::OneWire(uint8_t pin) // // Returns 1 if a device asserted a presence pulse, 0 otherwise. // +#ifdef ARDUINO_ARCH_ESP32 +uint8_t IRAM_ATTR OneWire::reset(void) +#else uint8_t OneWire::reset(void) +#endif { - IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask; - volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg; - uint8_t r; - uint8_t retries = 125; - - noInterrupts(); - DIRECT_MODE_INPUT(reg, mask); - interrupts(); - // wait until the wire is high... just in case - do { - if (--retries == 0) return 0; - delayMicroseconds(2); - } while ( !DIRECT_READ(reg, mask)); - - noInterrupts(); - DIRECT_WRITE_LOW(reg, mask); - DIRECT_MODE_OUTPUT(reg, mask); // drive output low - interrupts(); - delayMicroseconds(480); - noInterrupts(); - DIRECT_MODE_INPUT(reg, mask); // allow it to float - delayMicroseconds(70); - r = !DIRECT_READ(reg, mask); - interrupts(); - delayMicroseconds(410); - return r; + IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask; + volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg; + uint8_t r; + uint8_t retries = 125; + noInterrupts(); + DIRECT_MODE_INPUT(reg, mask); + interrupts(); + // wait until the wire is high... just in case + do { + if (--retries == 0) return 0; + delayMicroseconds(2); + } while ( !DIRECT_READ(reg, mask)); + + noInterrupts(); + DIRECT_WRITE_LOW(reg, mask); + DIRECT_MODE_OUTPUT(reg, mask); // drive output low + delayMicroseconds(480); + DIRECT_MODE_INPUT(reg, mask); // allow it to float + delayMicroseconds(70); + r = !DIRECT_READ(reg, mask); + interrupts(); + delayMicroseconds(410); + return r; } // // Write a bit. Port and bit is used to cut lookup time and provide // more certain timing. // +#ifdef ARDUINO_ARCH_ESP32 +void IRAM_ATTR OneWire::write_bit(uint8_t v) +#else void OneWire::write_bit(uint8_t v) +#endif { IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask; volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg; if (v & 1) { - noInterrupts(); + noInterrupts(); DIRECT_WRITE_LOW(reg, mask); DIRECT_MODE_OUTPUT(reg, mask); // drive output low delayMicroseconds(10); DIRECT_WRITE_HIGH(reg, mask); // drive output high - interrupts(); + interrupts(); delayMicroseconds(55); } else { - noInterrupts(); + noInterrupts(); DIRECT_WRITE_LOW(reg, mask); DIRECT_MODE_OUTPUT(reg, mask); // drive output low delayMicroseconds(65); DIRECT_WRITE_HIGH(reg, mask); // drive output high - interrupts(); + interrupts(); delayMicroseconds(5); } } @@ -221,20 +241,24 @@ void OneWire::write_bit(uint8_t v) // Read a bit. Port and bit is used to cut lookup time and provide // more certain timing. // +#ifdef ARDUINO_ARCH_ESP32 +uint8_t IRAM_ATTR OneWire::read_bit(void) +#else uint8_t OneWire::read_bit(void) +#endif { IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask; volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg; uint8_t r; - noInterrupts(); + noInterrupts(); DIRECT_MODE_OUTPUT(reg, mask); DIRECT_WRITE_LOW(reg, mask); delayMicroseconds(3); DIRECT_MODE_INPUT(reg, mask); // let pin float, pull up will raise delayMicroseconds(10); r = DIRECT_READ(reg, mask); - interrupts(); + interrupts(); delayMicroseconds(53); return r; } @@ -247,17 +271,17 @@ uint8_t OneWire::read_bit(void) // other mishap. // void OneWire::write(uint8_t v, uint8_t power /* = 0 */) { - uint8_t bitMask; + uint8_t bitMask; - for (bitMask = 0x01; bitMask; bitMask <<= 1) { - OneWire::write_bit( (bitMask & v)?1:0); - } - if ( !power) { - noInterrupts(); - DIRECT_MODE_INPUT(baseReg, bitmask); - DIRECT_WRITE_LOW(baseReg, bitmask); - interrupts(); - } + for (bitMask = 0x01; bitMask; bitMask <<= 1) { + OneWire::write_bit( (bitMask & v)?1:0); + } + if ( !power) { + noInterrupts(); + DIRECT_MODE_INPUT(baseReg, bitmask); + DIRECT_WRITE_LOW(baseReg, bitmask); + interrupts(); + } } void OneWire::write_bytes(const uint8_t *buf, uint16_t count, bool power /* = 0 */) { @@ -279,7 +303,7 @@ uint8_t OneWire::read() { uint8_t r = 0; for (bitMask = 0x01; bitMask; bitMask <<= 1) { - if ( OneWire::read_bit()) r |= bitMask; + if ( OneWire::read_bit()) r |= bitMask; } return r; } @@ -311,9 +335,9 @@ void OneWire::skip() void OneWire::depower() { - noInterrupts(); - DIRECT_MODE_INPUT(baseReg, bitmask); - interrupts(); + noInterrupts(); + DIRECT_MODE_INPUT(baseReg, bitmask); + interrupts(); } #if ONEWIRE_SEARCH @@ -391,13 +415,12 @@ uint8_t OneWire::search(uint8_t *newAddr, bool search_mode /* = true */) LastFamilyDiscrepancy = 0; return FALSE; } - // issue the search command if (search_mode == true) { write(0xF0); // NORMAL SEARCH } else { write(0xEC); // CONDITIONAL SEARCH - } + } // loop to do the search do @@ -405,7 +428,7 @@ uint8_t OneWire::search(uint8_t *newAddr, bool search_mode /* = true */) // read a bit and its complement id_bit = read_bit(); cmp_id_bit = read_bit(); - + // check for no devices on 1-wire if ((id_bit == 1) && (cmp_id_bit == 1)) break; @@ -459,7 +482,6 @@ uint8_t OneWire::search(uint8_t *newAddr, bool search_mode /* = true */) } } while(rom_byte_number < 8); // loop until through all ROM bytes 0-7 - // if the search was successful then if (!(id_bit_number < 65)) { @@ -524,12 +546,12 @@ static const uint8_t PROGMEM dscrc_table[] = { // uint8_t OneWire::crc8(const uint8_t *addr, uint8_t len) { - uint8_t crc = 0; + uint8_t crc = 0; - while (len--) { - crc = pgm_read_byte(dscrc_table + (crc ^ *addr++)); - } - return crc; + while (len--) { + crc = pgm_read_byte(dscrc_table + (crc ^ *addr++)); + } + return crc; } #else // @@ -538,22 +560,22 @@ uint8_t OneWire::crc8(const uint8_t *addr, uint8_t len) // uint8_t OneWire::crc8(const uint8_t *addr, uint8_t len) { - uint8_t crc = 0; + uint8_t crc = 0; - while (len--) { + while (len--) { #if defined(__AVR__) - crc = _crc_ibutton_update(crc, *addr++); + crc = _crc_ibutton_update(crc, *addr++); #else - uint8_t inbyte = *addr++; - for (uint8_t i = 8; i; i--) { - uint8_t mix = (crc ^ inbyte) & 0x01; - crc >>= 1; - if (mix) crc ^= 0x8C; - inbyte >>= 1; - } + uint8_t inbyte = *addr++; + for (uint8_t i = 8; i; i--) { + uint8_t mix = (crc ^ inbyte) & 0x01; + crc >>= 1; + if (mix) crc ^= 0x8C; + inbyte >>= 1; + } #endif - } - return crc; + } + return crc; } #endif @@ -594,4 +616,10 @@ uint16_t OneWire::crc16(const uint8_t* input, uint16_t len, uint16_t crc) } #endif + +#ifdef ARDUINO_ARCH_ESP32 +#undef noInterrupts() +#undef interrupts() +#endif + #endif diff --git a/lib/OneWire-2.3.3.06/OneWire.h b/lib/OneWire-Stickbreaker-20190506-1.1/OneWire.h similarity index 95% rename from lib/OneWire-2.3.3.06/OneWire.h rename to lib/OneWire-Stickbreaker-20190506-1.1/OneWire.h index 47bf7c1cb..119ac5413 100644 --- a/lib/OneWire-2.3.3.06/OneWire.h +++ b/lib/OneWire-Stickbreaker-20190506-1.1/OneWire.h @@ -275,18 +275,18 @@ void directModeOutput(IO_REG_TYPE pin) #include "portable.h" #include "avr/pgmspace.h" -#define GPIO_ID(pin) (g_APinDescription[pin].ulGPIOId) -#define GPIO_TYPE(pin) (g_APinDescription[pin].ulGPIOType) -#define GPIO_BASE(pin) (g_APinDescription[pin].ulGPIOBase) -#define DIR_OFFSET_SS 0x01 -#define DIR_OFFSET_SOC 0x04 -#define EXT_PORT_OFFSET_SS 0x0A -#define EXT_PORT_OFFSET_SOC 0x50 +#define GPIO_ID(pin) (g_APinDescription[pin].ulGPIOId) +#define GPIO_TYPE(pin) (g_APinDescription[pin].ulGPIOType) +#define GPIO_BASE(pin) (g_APinDescription[pin].ulGPIOBase) +#define DIR_OFFSET_SS 0x01 +#define DIR_OFFSET_SOC 0x04 +#define EXT_PORT_OFFSET_SS 0x0A +#define EXT_PORT_OFFSET_SOC 0x50 /* GPIO registers base address */ -#define PIN_TO_BASEREG(pin) ((volatile uint32_t *)g_APinDescription[pin].ulGPIOBase) -#define PIN_TO_BITMASK(pin) pin -#define IO_REG_TYPE uint32_t +#define PIN_TO_BASEREG(pin) ((volatile uint32_t *)g_APinDescription[pin].ulGPIOBase) +#define PIN_TO_BITMASK(pin) pin +#define IO_REG_TYPE uint32_t #define IO_REG_BASE_ATTR #define IO_REG_MASK_ATTR @@ -307,7 +307,7 @@ void directModeInput(volatile IO_REG_TYPE *base, IO_REG_TYPE pin) { if (SS_GPIO == GPIO_TYPE(pin)) { WRITE_ARC_REG(READ_ARC_REG((((IO_REG_TYPE)base) + DIR_OFFSET_SS)) & ~(0x01 << GPIO_ID(pin)), - ((IO_REG_TYPE)(base) + DIR_OFFSET_SS)); + ((IO_REG_TYPE)(base) + DIR_OFFSET_SS)); } else { MMIO_REG_VAL_FROM_BASE((IO_REG_TYPE)base, DIR_OFFSET_SOC) &= ~(0x01 << GPIO_ID(pin)); } @@ -318,7 +318,7 @@ void directModeOutput(volatile IO_REG_TYPE *base, IO_REG_TYPE pin) { if (SS_GPIO == GPIO_TYPE(pin)) { WRITE_ARC_REG(READ_ARC_REG(((IO_REG_TYPE)(base) + DIR_OFFSET_SS)) | (0x01 << GPIO_ID(pin)), - ((IO_REG_TYPE)(base) + DIR_OFFSET_SS)); + ((IO_REG_TYPE)(base) + DIR_OFFSET_SS)); } else { MMIO_REG_VAL_FROM_BASE((IO_REG_TYPE)base, DIR_OFFSET_SOC) |= (0x01 << GPIO_ID(pin)); } @@ -344,11 +344,11 @@ void directWriteHigh(volatile IO_REG_TYPE *base, IO_REG_TYPE pin) } } -#define DIRECT_READ(base, pin) directRead(base, pin) -#define DIRECT_MODE_INPUT(base, pin) directModeInput(base, pin) -#define DIRECT_MODE_OUTPUT(base, pin) directModeOutput(base, pin) -#define DIRECT_WRITE_LOW(base, pin) directWriteLow(base, pin) -#define DIRECT_WRITE_HIGH(base, pin) directWriteHigh(base, pin) +#define DIRECT_READ(base, pin) directRead(base, pin) +#define DIRECT_MODE_INPUT(base, pin) directModeInput(base, pin) +#define DIRECT_MODE_OUTPUT(base, pin) directModeOutput(base, pin) +#define DIRECT_WRITE_LOW(base, pin) directWriteLow(base, pin) +#define DIRECT_WRITE_HIGH(base, pin) directWriteHigh(base, pin) #elif defined(__riscv) diff --git a/lib/OneWire-Stickbreaker-20190506-1.1/README.md b/lib/OneWire-Stickbreaker-20190506-1.1/README.md new file mode 100644 index 000000000..fcc566fbf --- /dev/null +++ b/lib/OneWire-Stickbreaker-20190506-1.1/README.md @@ -0,0 +1,11 @@ +# OneWire library + A modification of the Arduino OneWire library maintained by @PaulStoffregen. This modifications supports the ESP32 under the Arduino-esp32 Environment. + + No changes are required for compatibility with Arduino coding. + +Original Source is Paul's 2.3 version. Forked 28DEC2017 + +@stickbreaker +V2.3.1 30APR2018 add IRAM_ATTR to read_bit() write_bit() to solve ICache miss timing failure. + thanks @everslick re: https://github.com/espressif/arduino-esp32/issues/1335 +V2.3 28DEC2017 original mods to support ESP32 diff --git a/lib/OneWire-2.3.3.06/examples/DS18x20_Temperature/DS18x20_Temperature.pde b/lib/OneWire-Stickbreaker-20190506-1.1/examples/DS18x20_Temperature/DS18x20_Temperature.pde similarity index 100% rename from lib/OneWire-2.3.3.06/examples/DS18x20_Temperature/DS18x20_Temperature.pde rename to lib/OneWire-Stickbreaker-20190506-1.1/examples/DS18x20_Temperature/DS18x20_Temperature.pde diff --git a/lib/OneWire-2.3.3.06/examples/DS2408_Switch/DS2408_Switch.pde b/lib/OneWire-Stickbreaker-20190506-1.1/examples/DS2408_Switch/DS2408_Switch.pde similarity index 100% rename from lib/OneWire-2.3.3.06/examples/DS2408_Switch/DS2408_Switch.pde rename to lib/OneWire-Stickbreaker-20190506-1.1/examples/DS2408_Switch/DS2408_Switch.pde diff --git a/lib/OneWire-2.3.3.06/examples/DS250x_PROM/DS250x_PROM.pde b/lib/OneWire-Stickbreaker-20190506-1.1/examples/DS250x_PROM/DS250x_PROM.pde similarity index 100% rename from lib/OneWire-2.3.3.06/examples/DS250x_PROM/DS250x_PROM.pde rename to lib/OneWire-Stickbreaker-20190506-1.1/examples/DS250x_PROM/DS250x_PROM.pde diff --git a/lib/OneWire-2.3.3.06/keywords.txt b/lib/OneWire-Stickbreaker-20190506-1.1/keywords.txt similarity index 100% rename from lib/OneWire-2.3.3.06/keywords.txt rename to lib/OneWire-Stickbreaker-20190506-1.1/keywords.txt diff --git a/lib/OneWire-2.3.3.06/library.json b/lib/OneWire-Stickbreaker-20190506-1.1/library.json similarity index 100% rename from lib/OneWire-2.3.3.06/library.json rename to lib/OneWire-Stickbreaker-20190506-1.1/library.json diff --git a/lib/OneWire-2.3.3.06/library.properties b/lib/OneWire-Stickbreaker-20190506-1.1/library.properties similarity index 83% rename from lib/OneWire-2.3.3.06/library.properties rename to lib/OneWire-Stickbreaker-20190506-1.1/library.properties index cd8fc05f7..2a8b08e53 100644 --- a/lib/OneWire-2.3.3.06/library.properties +++ b/lib/OneWire-Stickbreaker-20190506-1.1/library.properties @@ -3,8 +3,8 @@ version=2.3.3 author=Jim Studt, Tom Pollard, Robin James, Glenn Trewitt, Jason Dangel, Guillermo Lovato, Paul Stoffregen, Scott Roberts, Bertrik Sikken, Mark Tillotson, Ken Butcher, Roger Clark, Love Nystrom maintainer=Paul Stoffregen sentence=Access 1-wire temperature sensors, memory and other chips. -paragraph= +paragraph= Mod of Paul Stoffregen code to support ESP32 category=Communication url=http://www.pjrc.com/teensy/td_libs_OneWire.html -architectures=* +architectures=esp32 diff --git a/tasmota/xsns_05_ds18x20.ino b/tasmota/xsns_05_ds18x20.ino index 361847932..e828c55d6 100644 --- a/tasmota/xsns_05_ds18x20.ino +++ b/tasmota/xsns_05_ds18x20.ino @@ -17,6 +17,7 @@ along with this program. If not, see . */ +#ifdef ESP8266 #ifdef USE_DS18x20 /*********************************************************************************************\ * DS18B20 - Temperature - Multiple sensors @@ -547,3 +548,4 @@ bool Xsns05(uint8_t function) } #endif // USE_DS18x20 +#endif // ESP8266 diff --git a/tasmota/xsns_05_ds18x20_esp32.ino b/tasmota/xsns_05_ds18x20_esp32.ino new file mode 100644 index 000000000..b12e2ceb0 --- /dev/null +++ b/tasmota/xsns_05_ds18x20_esp32.ino @@ -0,0 +1,254 @@ +/* + xsns_05_ds18x20_esp32.ino - DS18x20 temperature sensor support for Tasmota + + Copyright (C) 2019 Heiko Krupp 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 . +*/ + +#ifdef ESP32 +#ifdef USE_DS18x20 +/*********************************************************************************************\ + * DS18B20 - Temperature - Multiple sensors +\*********************************************************************************************/ + +#define XSNS_05 5 + +#define DS18S20_CHIPID 0x10 // +/-0.5C 9-bit +#define DS1822_CHIPID 0x22 // +/-2C 12-bit +#define DS18B20_CHIPID 0x28 // +/-0.5C 12-bit +#define MAX31850_CHIPID 0x3B // +/-0.25C 14-bit + +#define W1_SKIP_ROM 0xCC +#define W1_CONVERT_TEMP 0x44 +#define W1_READ_SCRATCHPAD 0xBE + +#define DS18X20_MAX_SENSORS 8 + +const char kDs18x20Types[] PROGMEM = "DS18x20|DS18S20|DS1822|DS18B20|MAX31850"; + +uint8_t ds18x20_chipids[] = { 0, DS18S20_CHIPID, DS1822_CHIPID, DS18B20_CHIPID, MAX31850_CHIPID }; + +uint8_t ds18x20_address[DS18X20_MAX_SENSORS][8]; +uint8_t ds18x20_index[DS18X20_MAX_SENSORS]; +uint8_t ds18x20_valid[DS18X20_MAX_SENSORS]; +uint8_t ds18x20_sensors = 0; +char ds18x20_types[12]; + +/********************************************************************************************/ + +#include + +OneWire *ds = nullptr; + +void Ds18x20Init(void) { + ds = new OneWire(Pin(GPIO_DSB)); + + Ds18x20Search(); + AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DSB D_SENSORS_FOUND " %d"), ds18x20_sensors); +} + +void Ds18x20Search(void) { + uint8_t num_sensors=0; + uint8_t sensor = 0; + + ds->reset_search(); + for (num_sensors = 0; num_sensors < DS18X20_MAX_SENSORS; num_sensors) { + if (!ds->search(ds18x20_address[num_sensors])) { + ds->reset_search(); + break; + } + // If CRC Ok and Type DS18S20, DS1822, DS18B20 or MAX31850 + if ((OneWire::crc8(ds18x20_address[num_sensors], 7) == ds18x20_address[num_sensors][7]) && + ((ds18x20_address[num_sensors][0]==DS18S20_CHIPID) || + (ds18x20_address[num_sensors][0]==DS1822_CHIPID) || + (ds18x20_address[num_sensors][0]==DS18B20_CHIPID) || + (ds18x20_address[num_sensors][0]==MAX31850_CHIPID))) { + num_sensors++; + } + } + for (uint32_t i = 0; i < num_sensors; i++) { + ds18x20_index[i] = i; + } + for (uint32_t i = 0; i < num_sensors; i++) { + for (uint32_t j = i + 1; j < num_sensors; j++) { + if (uint32_t(ds18x20_address[ds18x20_index[i]]) > uint32_t(ds18x20_address[ds18x20_index[j]])) { + std::swap(ds18x20_index[i], ds18x20_index[j]); + } + } + } + ds18x20_sensors = num_sensors; +} + +void Ds18x20Convert(void) { + ds->reset(); + ds->write(W1_SKIP_ROM); // Address all Sensors on Bus + ds->write(W1_CONVERT_TEMP); // start conversion, no parasite power on at the end +// delay(750); // 750ms should be enough for 12bit conv +} + +bool Ds18x20Read(uint8_t sensor, float &t) +{ + uint8_t data[12]; + int8_t sign = 1; + + t = NAN; + + uint8_t index = ds18x20_index[sensor]; + if (ds18x20_valid[index]) { ds18x20_valid[index]--; } + + ds->reset(); + ds->select(ds18x20_address[index]); + ds->write(W1_READ_SCRATCHPAD); // Read Scratchpad + + for (uint32_t i = 0; i < 9; i++) { + data[i] = ds->read(); + } + if (OneWire::crc8(data, 8) == data[8]) { + switch(ds18x20_address[index][0]) { + case DS18S20_CHIPID: { + int16_t tempS = (((data[1] << 8) | (data[0] & 0xFE)) << 3) | ((0x10 - data[6]) & 0x0F); + t = ConvertTemp(tempS * 0.0625 - 0.250); + ds18x20_valid[index] = SENSOR_MAX_MISS; + return true; + } + case DS1822_CHIPID: + case DS18B20_CHIPID: { + uint16_t temp12 = (data[1] << 8) + data[0]; + if (temp12 > 2047) { + temp12 = (~temp12) +1; + sign = -1; + } + t = ConvertTemp(sign * temp12 * 0.0625); // Divide by 16 + ds18x20_valid[index] = SENSOR_MAX_MISS; + return true; + } + case MAX31850_CHIPID: { + int16_t temp14 = (data[1] << 8) + (data[0] & 0xFC); + t = ConvertTemp(temp14 * 0.0625); // Divide by 16 + ds18x20_valid[index] = SENSOR_MAX_MISS; + return true; + } + } + } + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DSB D_SENSOR_CRC_ERROR)); + return false; +} + +void Ds18x20Name(uint8_t sensor) +{ + uint8_t index = sizeof(ds18x20_chipids); + while (index) { + if (ds18x20_address[ds18x20_index[sensor]][0] == ds18x20_chipids[index]) { + break; + } + index--; + } + GetTextIndexed(ds18x20_types, sizeof(ds18x20_types), index, kDs18x20Types); + if (ds18x20_sensors > 1) { + snprintf_P(ds18x20_types, sizeof(ds18x20_types), PSTR("%s%c%d"), ds18x20_types, IndexSeparator(), sensor +1); + } +} + +/********************************************************************************************/ + +void Ds18x20EverySecond(void) +{ + if (!ds18x20_sensors) { return; } + + if (uptime & 1) { + // 2mS +// Ds18x20Search(); // Check for changes in sensors number + Ds18x20Convert(); // Start Conversion, takes up to one second + } else { + float t; + for (uint32_t i = 0; i < ds18x20_sensors; i++) { + // 12mS per device + if (!Ds18x20Read(i, t)) { // Read temperature + Ds18x20Name(i); + AddLogMissed(ds18x20_types, ds18x20_valid[ds18x20_index[i]]); + } + } + } +} + +void Ds18x20Show(bool json) +{ + float t; + + uint8_t dsxflg = 0; + for (uint32_t i = 0; i < ds18x20_sensors; i++) { + if (Ds18x20Read(i, t)) { // Check if read failed + char temperature[33]; + dtostrfd(t, Settings.flag2.temperature_resolution, temperature); + + Ds18x20Name(i); + + if (json) { + char address[17]; + for (uint32_t j = 0; j < 6; j++) { + sprintf(address+2*j, "%02X", ds18x20_address[ds18x20_index[i]][6-j]); // Skip sensor type and crc + } + ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_ID "\":\"%s\",\"" D_JSON_TEMPERATURE "\":%s}"), ds18x20_types, address, temperature); + dsxflg++; +#ifdef USE_DOMOTICZ + if ((0 == tele_period) && (1 == dsxflg)) { + DomoticzSensor(DZ_TEMP, temperature); + } +#endif // USE_DOMOTICZ +#ifdef USE_KNX + if ((0 == tele_period) && (1 == dsxflg)) { + KnxSensor(KNX_TEMPERATURE, t); + } +#endif // USE_KNX +#ifdef USE_WEBSERVER + } else { + WSContentSend_PD(HTTP_SNS_TEMP, ds18x20_types, temperature, TempUnit()); +#endif // USE_WEBSERVER + } + } + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +bool Xsns05(uint8_t function) +{ + bool result = false; + + if (PinUsed(GPIO_DSB)) { + switch (function) { + case FUNC_INIT: + Ds18x20Init(); + break; + case FUNC_EVERY_SECOND: + Ds18x20EverySecond(); + break; + case FUNC_JSON_APPEND: + Ds18x20Show(1); + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_SENSOR: + Ds18x20Show(0); + break; +#endif // USE_WEBSERVER + } + } + return result; +} + +#endif // USE_DS18x20 +#endif // ESP32 From ccc24ed305d6374657a49ae1703b372e330df018 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 27 Sep 2020 18:39:39 +0200 Subject: [PATCH 056/119] Update copyright --- tasmota/xsns_05_ds18x20_esp32.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xsns_05_ds18x20_esp32.ino b/tasmota/xsns_05_ds18x20_esp32.ino index b12e2ceb0..1d622448c 100644 --- a/tasmota/xsns_05_ds18x20_esp32.ino +++ b/tasmota/xsns_05_ds18x20_esp32.ino @@ -1,7 +1,7 @@ /* xsns_05_ds18x20_esp32.ino - DS18x20 temperature sensor support for Tasmota - Copyright (C) 2019 Heiko Krupp and Theo Arends + Copyright (C) 2020 Heiko Krupp 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 From c77f0a267b0c28e65e57f30d5fbfa9cdb1f3562f Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 27 Sep 2020 18:42:19 +0200 Subject: [PATCH 057/119] Zigbee Thermostat Eurotronic fixes --- tasmota/xdrv_23_zigbee_2_devices.ino | 12 +- tasmota/xdrv_23_zigbee_5__constants.ino | 370 ++++++++++++------------ tasmota/xdrv_23_zigbee_5_converters.ino | 35 ++- 3 files changed, 217 insertions(+), 200 deletions(-) diff --git a/tasmota/xdrv_23_zigbee_2_devices.ino b/tasmota/xdrv_23_zigbee_2_devices.ino index 0067744d3..4e16ea11f 100644 --- a/tasmota/xdrv_23_zigbee_2_devices.ino +++ b/tasmota/xdrv_23_zigbee_2_devices.ino @@ -72,10 +72,13 @@ public: int16_t temperature; // temperature in 1/10th of Celsius, 0x8000 if unknown uint16_t pressure; // air pressure in hPa, 0xFFFF if unknown uint8_t humidity; // humidity in percent, 0..100, 0xFF if unknown - // powe plug data + // power plug data uint16_t mains_voltage; // AC voltage int16_t mains_power; // Active power uint32_t last_seen; // Last seen time (epoch) + // thermostat + int16_t temperature_target; // settings for the temparature + uint8_t th_setpoint; // percentage of heat/cool in percent // Constructor with all defaults Z_Device(uint16_t _shortaddr = BAD_SHORTADDR, uint64_t _longaddr = 0x00): @@ -105,7 +108,9 @@ public: humidity(0xFF), mains_voltage(0xFFFF), mains_power(-0x8000), - last_seen(0) + last_seen(0), + temperature_target(-0x8000), + th_setpoint(0xFF) { }; inline bool valid(void) const { return BAD_SHORTADDR != shortaddr; } // is the device known, valid and found? @@ -132,6 +137,9 @@ public: inline bool validHumidity(void) const { return 0xFF != humidity; } inline bool validLastSeen(void) const { return 0x0 != last_seen; } + inline bool validTemperatureTarget(void) const { return -0x8000 != temperature_target; } + inline bool validThSetpoint(void) const { return 0xFF != th_setpoint; } + inline bool validMainsVoltage(void) const { return 0xFFFF != mains_voltage; } inline bool validMainsPower(void) const { return -0x8000 != mains_power; } diff --git a/tasmota/xdrv_23_zigbee_5__constants.ino b/tasmota/xdrv_23_zigbee_5__constants.ino index 43182c90d..7d35d7862 100644 --- a/tasmota/xdrv_23_zigbee_5__constants.ino +++ b/tasmota/xdrv_23_zigbee_5__constants.ino @@ -268,15 +268,12 @@ const char Z_strings[] PROGMEM = "OccupiedHeatingSetpoint" "\x00" "UnoccupiedCoolingSetpoint" "\x00" "UnoccupiedHeatingSetpoint" "\x00" - "MinHeatSetpointLimit" "\x00" - "MaxHeatSetpointLimit" "\x00" - "MinCoolSetpointLimit" "\x00" - "MaxCoolSetpointLimit" "\x00" + "RemoteSensing" "\x00" "ControlSequenceOfOperation" "\x00" "SystemMode" "\x00" "TRVMode" "\x00" "SetValvePosition" "\x00" - "ThErrors" "\x00" + "EurotronicErrors" "\x00" "CurrentTemperatureSetPoint" "\x00" "Hue" "\x00" "Sat" "\x00" @@ -648,189 +645,186 @@ enum Z_offsets { Zo_OccupiedHeatingSetpoint = 3337, Zo_UnoccupiedCoolingSetpoint = 3361, Zo_UnoccupiedHeatingSetpoint = 3387, - Zo_MinHeatSetpointLimit = 3413, - Zo_MaxHeatSetpointLimit = 3434, - Zo_MinCoolSetpointLimit = 3455, - Zo_MaxCoolSetpointLimit = 3476, - Zo_ControlSequenceOfOperation = 3497, - Zo_SystemMode = 3524, - Zo_TRVMode = 3535, - Zo_SetValvePosition = 3543, - Zo_ThErrors = 3560, - Zo_CurrentTemperatureSetPoint = 3569, - Zo_Hue = 3596, - Zo_Sat = 3600, - Zo_RemainingTime = 3604, - Zo_X = 3618, - Zo_Y = 3620, - Zo_DriftCompensation = 3622, - Zo_CompensationText = 3640, - Zo_CT = 3657, - Zo_ColorMode = 3660, - Zo_NumberOfPrimaries = 3670, - Zo_Primary1X = 3688, - Zo_Primary1Y = 3698, - Zo_Primary1Intensity = 3708, - Zo_Primary2X = 3726, - Zo_Primary2Y = 3736, - Zo_Primary2Intensity = 3746, - Zo_Primary3X = 3764, - Zo_Primary3Y = 3774, - Zo_Primary3Intensity = 3784, - Zo_WhitePointX = 3802, - Zo_WhitePointY = 3814, - Zo_ColorPointRX = 3826, - Zo_ColorPointRY = 3839, - Zo_ColorPointRIntensity = 3852, - Zo_ColorPointGX = 3873, - Zo_ColorPointGY = 3886, - Zo_ColorPointGIntensity = 3899, - Zo_ColorPointBX = 3920, - Zo_ColorPointBY = 3933, - Zo_ColorPointBIntensity = 3946, - Zo_Illuminance = 3967, - Zo_IlluminanceMinMeasuredValue = 3979, - Zo_IlluminanceMaxMeasuredValue = 4007, - Zo_IlluminanceTolerance = 4035, - Zo_IlluminanceLightSensorType = 4056, - Zo_IlluminanceLevelStatus = 4083, - Zo_IlluminanceTargetLevel = 4106, - Zo_Temperature = 4129, - Zo_TemperatureMinMeasuredValue = 4141, - Zo_TemperatureMaxMeasuredValue = 4169, - Zo_TemperatureTolerance = 4197, - Zo_Pressure = 4218, - Zo_PressureMinMeasuredValue = 4227, - Zo_PressureMaxMeasuredValue = 4252, - Zo_PressureTolerance = 4277, - Zo_PressureScaledValue = 4295, - Zo_PressureMinScaledValue = 4315, - Zo_PressureMaxScaledValue = 4338, - Zo_PressureScaledTolerance = 4361, - Zo_PressureScale = 4385, - Zo_SeaPressure = 4399, - Zo_FlowRate = 4411, - Zo_FlowMinMeasuredValue = 4420, - Zo_FlowMaxMeasuredValue = 4441, - Zo_FlowTolerance = 4462, - Zo_Humidity = 4476, - Zo_HumidityMinMeasuredValue = 4485, - Zo_HumidityMaxMeasuredValue = 4510, - Zo_HumidityTolerance = 4535, - Zo_Occupancy = 4553, - Zo_OccupancySensorType = 4563, - Zo_ZoneState = 4583, - Zo_ZoneType = 4593, - Zo_ZoneStatus = 4602, - Zo_CurrentSummDelivered = 4613, - Zo_CompanyName = 4634, - Zo_MeterTypeID = 4646, - Zo_DataQualityID = 4658, - Zo_CustomerName = 4672, - Zo_Model = 4685, - Zo_PartNumber = 4691, - Zo_ProductRevision = 4702, - Zo_SoftwareRevision = 4718, - Zo_UtilityName = 4735, - Zo_POD = 4747, - Zo_AvailablePower = 4751, - Zo_PowerThreshold = 4766, - Zo_RMSVoltage = 4781, - Zo_RMSCurrent = 4792, - Zo_ActivePower = 4803, - Zo_NumberOfResets = 4815, - Zo_PersistentMemoryWrites = 4830, - Zo_LastMessageLQI = 4853, - Zo_LastMessageRSSI = 4868, - Zo_Identify = 4884, - Zo_xxxx = 4893, - Zo_IdentifyQuery = 4898, - Zo_AddGroup = 4912, - Zo_xxxx00 = 4921, - Zo_ViewGroup = 4928, - Zo_GetGroup = 4938, - Zo_01xxxx = 4947, - Zo_GetAllGroups = 4954, - Zo_00 = 4967, - Zo_RemoveGroup = 4970, - Zo_RemoveAllGroups = 4982, - Zo_ViewScene = 4998, - Zo_xxxxyy = 5008, - Zo_RemoveScene = 5015, - Zo_RemoveAllScenes = 5027, - Zo_RecallScene = 5043, - Zo_GetSceneMembership = 5055, - Zo_PowerOffEffect = 5074, - Zo_xxyy = 5089, - Zo_PowerOnRecall = 5094, - Zo_PowerOnTimer = 5108, - Zo_xxyyyyzzzz = 5121, - Zo_xx0A00 = 5132, - Zo_DimmerUp = 5139, - Zo_00190200 = 5148, - Zo_DimmerDown = 5157, - Zo_01190200 = 5168, - Zo_DimmerStop = 5177, - Zo_ResetAlarm = 5188, - Zo_xxyyyy = 5199, - Zo_ResetAllAlarms = 5206, - Zo_xx000A00 = 5221, - Zo_HueSat = 5230, - Zo_xxyy0A00 = 5237, - Zo_Color = 5246, - Zo_xxxxyyyy0A00 = 5252, - Zo_xxxx0A00 = 5265, - Zo_ShutterOpen = 5274, - Zo_ShutterClose = 5286, - Zo_ShutterStop = 5299, - Zo_ShutterLift = 5311, - Zo_xx = 5323, - Zo_ShutterTilt = 5326, - Zo_Shutter = 5338, - Zo_DimmerMove = 5346, - Zo_xx0A = 5357, - Zo_DimmerStepUp = 5362, - Zo_00xx0A00 = 5375, - Zo_DimmerStepDown = 5384, - Zo_01xx0A00 = 5399, - Zo_DimmerStep = 5408, - Zo_xx190A00 = 5419, - Zo_01 = 5428, - Zo_HueMove = 5431, - Zo_xx19 = 5439, - Zo_HueStepUp = 5444, - Zo_HueStepDown = 5454, - Zo_03xx0A00 = 5466, - Zo_HueStep = 5475, - Zo_SatMove = 5483, - Zo_SatStep = 5491, - Zo_xx190A = 5499, - Zo_ColorMove = 5506, - Zo_xxxxyyyy = 5516, - Zo_ColorStep = 5525, - Zo_ColorTempMoveUp = 5535, - Zo_01xxxx000000000000 = 5551, - Zo_ColorTempMoveDown = 5570, - Zo_03xxxx000000000000 = 5588, - Zo_ColorTempMoveStop = 5607, - Zo_00xxxx000000000000 = 5625, - Zo_ColorTempMove = 5644, - Zo_xxyyyy000000000000 = 5658, - Zo_ColorTempStepUp = 5677, - Zo_01xxxx0A0000000000 = 5693, - Zo_ColorTempStepDown = 5712, - Zo_03xxxx0A0000000000 = 5730, - Zo_ColorTempStep = 5749, - Zo_xxyyyy0A0000000000 = 5763, - Zo_ArrowClick = 5782, - Zo_ArrowHold = 5793, - Zo_ArrowRelease = 5803, - Zo_ZoneStatusChange = 5816, - Zo_xxxxyyzz = 5833, - Zo_xxyyzzzz = 5842, - Zo_AddScene = 5851, - Zo_xxyyyyzz = 5860, - Zo_StoreScene = 5869, + Zo_RemoteSensing = 3413, + Zo_ControlSequenceOfOperation = 3427, + Zo_SystemMode = 3454, + Zo_TRVMode = 3465, + Zo_SetValvePosition = 3473, + Zo_EurotronicErrors = 3490, + Zo_CurrentTemperatureSetPoint = 3507, + Zo_Hue = 3534, + Zo_Sat = 3538, + Zo_RemainingTime = 3542, + Zo_X = 3556, + Zo_Y = 3558, + Zo_DriftCompensation = 3560, + Zo_CompensationText = 3578, + Zo_CT = 3595, + Zo_ColorMode = 3598, + Zo_NumberOfPrimaries = 3608, + Zo_Primary1X = 3626, + Zo_Primary1Y = 3636, + Zo_Primary1Intensity = 3646, + Zo_Primary2X = 3664, + Zo_Primary2Y = 3674, + Zo_Primary2Intensity = 3684, + Zo_Primary3X = 3702, + Zo_Primary3Y = 3712, + Zo_Primary3Intensity = 3722, + Zo_WhitePointX = 3740, + Zo_WhitePointY = 3752, + Zo_ColorPointRX = 3764, + Zo_ColorPointRY = 3777, + Zo_ColorPointRIntensity = 3790, + Zo_ColorPointGX = 3811, + Zo_ColorPointGY = 3824, + Zo_ColorPointGIntensity = 3837, + Zo_ColorPointBX = 3858, + Zo_ColorPointBY = 3871, + Zo_ColorPointBIntensity = 3884, + Zo_Illuminance = 3905, + Zo_IlluminanceMinMeasuredValue = 3917, + Zo_IlluminanceMaxMeasuredValue = 3945, + Zo_IlluminanceTolerance = 3973, + Zo_IlluminanceLightSensorType = 3994, + Zo_IlluminanceLevelStatus = 4021, + Zo_IlluminanceTargetLevel = 4044, + Zo_Temperature = 4067, + Zo_TemperatureMinMeasuredValue = 4079, + Zo_TemperatureMaxMeasuredValue = 4107, + Zo_TemperatureTolerance = 4135, + Zo_Pressure = 4156, + Zo_PressureMinMeasuredValue = 4165, + Zo_PressureMaxMeasuredValue = 4190, + Zo_PressureTolerance = 4215, + Zo_PressureScaledValue = 4233, + Zo_PressureMinScaledValue = 4253, + Zo_PressureMaxScaledValue = 4276, + Zo_PressureScaledTolerance = 4299, + Zo_PressureScale = 4323, + Zo_SeaPressure = 4337, + Zo_FlowRate = 4349, + Zo_FlowMinMeasuredValue = 4358, + Zo_FlowMaxMeasuredValue = 4379, + Zo_FlowTolerance = 4400, + Zo_Humidity = 4414, + Zo_HumidityMinMeasuredValue = 4423, + Zo_HumidityMaxMeasuredValue = 4448, + Zo_HumidityTolerance = 4473, + Zo_Occupancy = 4491, + Zo_OccupancySensorType = 4501, + Zo_ZoneState = 4521, + Zo_ZoneType = 4531, + Zo_ZoneStatus = 4540, + Zo_CurrentSummDelivered = 4551, + Zo_CompanyName = 4572, + Zo_MeterTypeID = 4584, + Zo_DataQualityID = 4596, + Zo_CustomerName = 4610, + Zo_Model = 4623, + Zo_PartNumber = 4629, + Zo_ProductRevision = 4640, + Zo_SoftwareRevision = 4656, + Zo_UtilityName = 4673, + Zo_POD = 4685, + Zo_AvailablePower = 4689, + Zo_PowerThreshold = 4704, + Zo_RMSVoltage = 4719, + Zo_RMSCurrent = 4730, + Zo_ActivePower = 4741, + Zo_NumberOfResets = 4753, + Zo_PersistentMemoryWrites = 4768, + Zo_LastMessageLQI = 4791, + Zo_LastMessageRSSI = 4806, + Zo_Identify = 4822, + Zo_xxxx = 4831, + Zo_IdentifyQuery = 4836, + Zo_AddGroup = 4850, + Zo_xxxx00 = 4859, + Zo_ViewGroup = 4866, + Zo_GetGroup = 4876, + Zo_01xxxx = 4885, + Zo_GetAllGroups = 4892, + Zo_00 = 4905, + Zo_RemoveGroup = 4908, + Zo_RemoveAllGroups = 4920, + Zo_ViewScene = 4936, + Zo_xxxxyy = 4946, + Zo_RemoveScene = 4953, + Zo_RemoveAllScenes = 4965, + Zo_RecallScene = 4981, + Zo_GetSceneMembership = 4993, + Zo_PowerOffEffect = 5012, + Zo_xxyy = 5027, + Zo_PowerOnRecall = 5032, + Zo_PowerOnTimer = 5046, + Zo_xxyyyyzzzz = 5059, + Zo_xx0A00 = 5070, + Zo_DimmerUp = 5077, + Zo_00190200 = 5086, + Zo_DimmerDown = 5095, + Zo_01190200 = 5106, + Zo_DimmerStop = 5115, + Zo_ResetAlarm = 5126, + Zo_xxyyyy = 5137, + Zo_ResetAllAlarms = 5144, + Zo_xx000A00 = 5159, + Zo_HueSat = 5168, + Zo_xxyy0A00 = 5175, + Zo_Color = 5184, + Zo_xxxxyyyy0A00 = 5190, + Zo_xxxx0A00 = 5203, + Zo_ShutterOpen = 5212, + Zo_ShutterClose = 5224, + Zo_ShutterStop = 5237, + Zo_ShutterLift = 5249, + Zo_xx = 5261, + Zo_ShutterTilt = 5264, + Zo_Shutter = 5276, + Zo_DimmerMove = 5284, + Zo_xx0A = 5295, + Zo_DimmerStepUp = 5300, + Zo_00xx0A00 = 5313, + Zo_DimmerStepDown = 5322, + Zo_01xx0A00 = 5337, + Zo_DimmerStep = 5346, + Zo_xx190A00 = 5357, + Zo_01 = 5366, + Zo_HueMove = 5369, + Zo_xx19 = 5377, + Zo_HueStepUp = 5382, + Zo_HueStepDown = 5392, + Zo_03xx0A00 = 5404, + Zo_HueStep = 5413, + Zo_SatMove = 5421, + Zo_SatStep = 5429, + Zo_xx190A = 5437, + Zo_ColorMove = 5444, + Zo_xxxxyyyy = 5454, + Zo_ColorStep = 5463, + Zo_ColorTempMoveUp = 5473, + Zo_01xxxx000000000000 = 5489, + Zo_ColorTempMoveDown = 5508, + Zo_03xxxx000000000000 = 5526, + Zo_ColorTempMoveStop = 5545, + Zo_00xxxx000000000000 = 5563, + Zo_ColorTempMove = 5582, + Zo_xxyyyy000000000000 = 5596, + Zo_ColorTempStepUp = 5615, + Zo_01xxxx0A0000000000 = 5631, + Zo_ColorTempStepDown = 5650, + Zo_03xxxx0A0000000000 = 5668, + Zo_ColorTempStep = 5687, + Zo_xxyyyy0A0000000000 = 5701, + Zo_ArrowClick = 5720, + Zo_ArrowHold = 5731, + Zo_ArrowRelease = 5741, + Zo_ZoneStatusChange = 5754, + Zo_xxxxyyzz = 5771, + Zo_xxyyzzzz = 5780, + Zo_AddScene = 5789, + Zo_xxyyyyzz = 5798, + Zo_StoreScene = 5807, }; diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index 780ef979c..217a003c4 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -413,17 +413,13 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { { Zint16, Cx0201, 0x0012, Z_(OccupiedHeatingSetpoint), -100 }, { Zint16, Cx0201, 0x0013, Z_(UnoccupiedCoolingSetpoint), -100 }, { Zint16, Cx0201, 0x0014, Z_(UnoccupiedHeatingSetpoint), -100 }, - { Zint16, Cx0201, 0x0015, Z_(MinHeatSetpointLimit), -100 }, - { Zint16, Cx0201, 0x0016, Z_(MaxHeatSetpointLimit), -100 }, - { Zint16, Cx0201, 0x0017, Z_(MinCoolSetpointLimit), -100 }, - { Zint16, Cx0201, 0x0018, Z_(MaxCoolSetpointLimit), -100 }, - { Zmap8, Cx0201, 0x001A, Z_(MaxCoolSetpointLimit), 1 }, + { Zmap8, Cx0201, 0x001A, Z_(RemoteSensing), 1 }, { Zenum8, Cx0201, 0x001B, Z_(ControlSequenceOfOperation), 1 }, { Zenum8, Cx0201, 0x001C, Z_(SystemMode), 1 }, // below is Eurotronic specific { Zenum8, Cx0201, 0x4000, Z_(TRVMode), 1 }, { Zuint8, Cx0201, 0x4001, Z_(SetValvePosition), 1 }, - { Zuint8, Cx0201, 0x4002, Z_(ThErrors), 1 }, + { Zuint8, Cx0201, 0x4002, Z_(EurotronicErrors), 1 }, { Zint16, Cx0201, 0x4003, Z_(CurrentTemperatureSetPoint), -100 }, // Color Control cluster @@ -1142,11 +1138,26 @@ void ZCLFrame::computeSyntheticAttributes(Z_attribute_list& attr_list) { attr_list.addAttribute(0x0001, 0x0021).setUInt(toPercentageCR2032(mv) * 2); } break; + case 0x02010008: // Pi Heating Demand - solve Eutotronic bug + { + const char * manufacturer_c = zigbee_devices.getManufacturerId(_srcaddr); // null if unknown + String manufacturerId((char*) manufacturer_c); + if (manufacturerId.equals(F("Eurotronic"))) { + // Eurotronic does not report 0..100 but 0..255, including 255 which is normally an ivalid value + uint8_t valve = attr.getUInt(); + if (attr.isNone()) { valve = 255; } + uint8_t valve_100 = changeUIntScale(valve, 0, 255, 0, 100); + attr.setUInt(valve_100); + } + } + break; case 0x04030000: // Pressure - int16_t pressure = attr.getInt(); - int16_t pressure_sealevel = (pressure / FastPrecisePow(1.0 - ((float)Settings.altitude / 44330.0f), 5.255f)) - 21.6f; - attr_list.addAttribute(0x0403, 0xFF00).setInt(pressure_sealevel); - // We create a synthetic attribute 0403/FF00 to indicate sea level + { + int16_t pressure = attr.getInt(); + int16_t pressure_sealevel = (pressure / FastPrecisePow(1.0 - ((float)Settings.altitude / 44330.0f), 5.255f)) - 21.6f; + attr_list.addAttribute(0x0403, 0xFF00).setInt(pressure_sealevel); + // We create a synthetic attribute 0403/FF00 to indicate sea level + } break; } } @@ -1692,6 +1703,10 @@ void ZCLFrame::postProcessAttributes(uint16_t shortaddr, Z_attribute_list& attr_ case 0x00068000: device.setPower(attr.getBool()); break; case 0x00080000: device.dimmer = uval16; break; case 0x02010000: device.temperature = fval * 10 + 0.5f; break; + case 0x02010008: device.th_setpoint = uval16; break; + case 0x02010012: device.temperature_target = fval * 10 + 0.5f; break; + case 0x02010007: device.th_setpoint = uval16; break; + case 0x02010011: device.temperature_target = fval * 10 + 0.5f; break; case 0x03000000: device.hue = changeUIntScale(uval16, 0, 254, 0, 360); break; case 0x03000001: device.sat = uval16; break; case 0x03000003: device.x = uval16; break; From b2443ec548f58d62d01406dac0f8f976aca270fd Mon Sep 17 00:00:00 2001 From: Justin Monroe Date: Sun, 27 Sep 2020 17:23:54 +0000 Subject: [PATCH 058/119] Fixed last_seen calculation with zigbee devices. The specific circumstances of this bug typically involve a restart, after which a zigbee device pings the bridge before the Rtc.utc_time is set by NTP. This results in a large "last seen" time calculation. This is cosmetic only. This patch ensures the "last seen" time is after 2020-01-01 0000 UTC when pulled from the Rtc.utc_time field, otherwise, last_seen updates are ignored. --- tasmota/xdrv_23_zigbee_2_devices.ino | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tasmota/xdrv_23_zigbee_2_devices.ino b/tasmota/xdrv_23_zigbee_2_devices.ino index 4e16ea11f..506962f3a 100644 --- a/tasmota/xdrv_23_zigbee_2_devices.ino +++ b/tasmota/xdrv_23_zigbee_2_devices.ino @@ -645,7 +645,12 @@ void Z_Devices::setLQI(uint16_t shortaddr, uint8_t lqi) { void Z_Devices::setLastSeenNow(uint16_t shortaddr) { if (shortaddr == localShortAddr) { return; } - getShortAddr(shortaddr).last_seen= Rtc.utc_time; + // Only update time if after 2020-01-01 0000. + // Fixes issue where zigbee device pings before WiFi/NTP has set utc_time + // to the correct time, and "last seen" calculations are based on the + // pre-corrected last_seen time and the since-corrected utc_time. + if (Rtc.utc_time < 1577836800) { return; } + getShortAddr(shortaddr).last_seen = Rtc.utc_time; } From 9cbcec0844aa6d7ba5660187205065af2e47f6db Mon Sep 17 00:00:00 2001 From: Hedda Date: Mon, 28 Sep 2020 08:35:22 +0200 Subject: [PATCH 059/119] Update readme.txt with EZSP protocol versions information Update readme.txt with EZSP protocol versions information Text copied from https://github.com/zigpy/bellows/blob/dev/README.md --- tools/fw_zbbridge/readme.txt | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tools/fw_zbbridge/readme.txt b/tools/fw_zbbridge/readme.txt index af1ed724f..ef30d727a 100644 --- a/tools/fw_zbbridge/readme.txt +++ b/tools/fw_zbbridge/readme.txt @@ -1,3 +1,15 @@ -The ncp-uart-sw-6.8.0.1_115200.ota is the latest version for EZSP v8 compatible hosts -The ncp-uart-sw_6.7.6_115200.ota is for EZSP v8 compatible hosts -The ncp-uart-sw_6.5.5_115200.ota its for older like current ZHA +# EmberZNet NCP UART EZSP firmware + +## EmberZNet NCP UART EZSP firmware signed for Sonoff ZBBridge + +The ncp-uart-sw-6.8.0.1_115200.ota is the latest development version, only testing with for EZSP v8 compatible hosts. +The ncp-uart-sw_6.7.6_115200.ota is the recommended stable version for EZSP v6, EZSP v7, and EZSP v8 compatible hosts. +The ncp-uart-sw_6.5.5_115200.ota it the legacy version for EZSP v4, EZSP v5, EZSP v6, or EZSP v7 compatible hosts. + +## EmberZNet and EZSP Protocol Versions + +Silicon Labs do not currently have a consolidated list of changes by EmberZNet SDK or EZSP protocol version. The EZSP additions, changes and deletions have only ever been listed in the "Zigbee EmberZNet Release Notes" (EmberZNet SDK) under the "New items" section as well as the matching UG100 EZSP Reference Guide included with each EmberZNet SDK release. + +The largest change was between EZSP v4 (first added in EmberZNet 4.7.2 SDK) and EZSP v5 that was added in EmberZNet 5.9.0 SDK which requires the Legacy Frame ID 0xFF. The change from EZSP v5 to EZSP v6 was done in EmberZNet 6.0.0 SDK. The change from EZSP v6 to EZSP v7 was in EmberZNet 6.4.0 SDK. EmberZNet 6.7.0 SDK added EZSP v8 (and Secure EZSP Protocol Version 2). + +Perhaps more important to know today is that EZSP v5, v6 and v7 (EmberZNet 6.6.x.x) use the same framing format, but EmberZNet 6.7.x.x/EZSP v8 introduced new framing format and expanded command id field from 8 bits to 16 bits. From 223ab6dc63cf68c9ed0dafecdff9e34a6f2cfa92 Mon Sep 17 00:00:00 2001 From: Hedda Date: Mon, 28 Sep 2020 09:24:47 +0200 Subject: [PATCH 060/119] Update readme.txt mention 6.8.x.x is experimental and untested Update readme.txt mention 6.8.x.x is experimental and untested. --- tools/fw_zbbridge/readme.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/fw_zbbridge/readme.txt b/tools/fw_zbbridge/readme.txt index ef30d727a..345da663e 100644 --- a/tools/fw_zbbridge/readme.txt +++ b/tools/fw_zbbridge/readme.txt @@ -2,7 +2,7 @@ ## EmberZNet NCP UART EZSP firmware signed for Sonoff ZBBridge -The ncp-uart-sw-6.8.0.1_115200.ota is the latest development version, only testing with for EZSP v8 compatible hosts. +The ncp-uart-sw-6.8.0.1_115200.ota is the latest cutting-edge version, still untested and only for experimental testing with EZSP v8 compatible hosts. The ncp-uart-sw_6.7.6_115200.ota is the recommended stable version for EZSP v6, EZSP v7, and EZSP v8 compatible hosts. The ncp-uart-sw_6.5.5_115200.ota it the legacy version for EZSP v4, EZSP v5, EZSP v6, or EZSP v7 compatible hosts. From cbc073c78e086bf740697f0ef8e4cfcf28e41638 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 28 Sep 2020 14:46:59 +0200 Subject: [PATCH 061/119] Fix JSMN boolean parsing --- lib/jsmn-shadinger-1.0/src/jsmn.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/jsmn-shadinger-1.0/src/jsmn.cpp b/lib/jsmn-shadinger-1.0/src/jsmn.cpp index 8f7a59708..905d102f4 100644 --- a/lib/jsmn-shadinger-1.0/src/jsmn.cpp +++ b/lib/jsmn-shadinger-1.0/src/jsmn.cpp @@ -300,6 +300,10 @@ JSMN_API int jsmn_parse(jsmn_parser *parser, const char *js, const size_t len, case 't': case 'f': case 'n': +// Add uppercase variants + case 'T': + case 'F': + case 'N': /* And they must not be keys of the object */ if (tokens != NULL && parser->toksuper != -1) { const jsmntok_t *t = &tokens[parser->toksuper]; From 68899ecf15c8f92d72db2c87dd41966bd443a32a Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Mon, 28 Sep 2020 16:29:54 +0200 Subject: [PATCH 062/119] Gitpod optimize --- .gitpod.Dockerfile | 10 + .gitpod.yml | 13 +- uncrustify.cfg | 2807 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 2829 insertions(+), 1 deletion(-) create mode 100644 .gitpod.Dockerfile create mode 100644 uncrustify.cfg diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile new file mode 100644 index 000000000..9ca5bdf5c --- /dev/null +++ b/.gitpod.Dockerfile @@ -0,0 +1,10 @@ +FROM gitpod/workspace-full + +USER gitpod + +# Install custom tools, runtime, etc. using apt-get +# For example, the command below would install "bastet" - a command line tetris clone: +# +# RUN sudo apt-get -q update && # sudo apt-get install -yq bastet && # sudo rm -rf /var/lib/apt/lists/* +# +# More information: https://www.gitpod.io/docs/config-docker/ diff --git a/.gitpod.yml b/.gitpod.yml index 8ac16a8ad..78437404c 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -1,3 +1,14 @@ tasks: - - before: pip3 install -U platformio + - before: pip3 install -U platformio && brew install uncrustify command: platformio run -e tasmota + +image: + file: .gitpod.Dockerfile + +vscode: + extensions: + - ms-vscode.cpptools@0.26.3:u3GsZ5PK12Ddr79vh4TWgQ== + - eamodio.gitlens@10.2.1:e0IYyp0efFqVsrZwsIe8CA== + - LaurentTreguier.uncrustify@2.18.0:/k8Osjj/XSuz09F+pEu7wg== + - Atishay-Jain.All-Autocomplete@0.0.23:fbZNfSpnd8XkAHGfAPS2rA== + - 2gua.rainbow-brackets@0.0.6:Tbu8dTz0i+/bgcKQTQ5b8g== diff --git a/uncrustify.cfg b/uncrustify.cfg new file mode 100644 index 000000000..fbd5cab07 --- /dev/null +++ b/uncrustify.cfg @@ -0,0 +1,2807 @@ +# Uncrustify-0.69.0-1-72de5fdb + +# +# General options +# + +# The type of line endings. +# +# Default: auto +newlines = auto # lf/crlf/cr/auto + +# The original size of tabs in the input. +# +# Default: 8 +input_tab_size = 8 # unsigned number + +# The size of tabs in the output (only used if align_with_tabs=true). +# +# Default: 8 +output_tab_size = 8 # unsigned number + +# The ASCII value of the string escape char, usually 92 (\) or (Pawn) 94 (^). +# +# Default: 92 +string_escape_char = 92 # unsigned number + +# Alternate string escape char (usually only used for Pawn). +# Only works right before the quote char. +string_escape_char2 = 0 # unsigned number + +# Replace tab characters found in string literals with the escape sequence \t +# instead. +string_replace_tab_chars = false # true/false + +# Allow interpreting '>=' and '>>=' as part of a template in code like +# 'void f(list>=val);'. If true, 'assert(x<0 && y>=3)' will be broken. +# Improvements to template detection may make this option obsolete. +tok_split_gte = false # true/false + +# Specify the marker used in comments to disable processing of part of the +# file. +# +# Default: *INDENT-OFF* +disable_processing_cmt = " *INDENT-OFF*" # string + +# Specify the marker used in comments to (re)enable processing in a file. +# +# Default: *INDENT-ON* +enable_processing_cmt = " *INDENT-ON*" # string + +# Enable parsing of digraphs. +enable_digraphs = false # true/false + +# Add or remove the UTF-8 BOM (recommend 'remove'). +utf8_bom = ignore # ignore/add/remove/force + +# If the file contains bytes with values between 128 and 255, but is not +# UTF-8, then output as UTF-8. +utf8_byte = false # true/false + +# Force the output encoding to UTF-8. +utf8_force = false # true/false + +# +# Spacing options +# + +# Add or remove space around non-assignment symbolic operators ('+', '/', '%', +# '<<', and so forth). +sp_arith = add # ignore/add/remove/force + +# Add or remove space around arithmetic operators '+' and '-'. +# +# Overrides sp_arith. +sp_arith_additive = ignore # ignore/add/remove/force + +# Add or remove space around assignment operator '=', '+=', etc. +sp_assign = add # ignore/add/remove/force + +# Add or remove space around '=' in C++11 lambda capture specifications. +# +# Overrides sp_assign. +sp_cpp_lambda_assign = ignore # ignore/add/remove/force + +# Add or remove space after the capture specification in C++11 lambda. +sp_cpp_lambda_paren = ignore # ignore/add/remove/force + +# Add or remove space around assignment operator '=' in a prototype. +# +# If set to ignore, use sp_assign. +sp_assign_default = ignore # ignore/add/remove/force + +# Add or remove space before assignment operator '=', '+=', etc. +# +# Overrides sp_assign. +sp_before_assign = ignore # ignore/add/remove/force + +# Add or remove space after assignment operator '=', '+=', etc. +# +# Overrides sp_assign. +sp_after_assign = ignore # ignore/add/remove/force + +# Add or remove space in 'NS_ENUM ('. +sp_enum_paren = ignore # ignore/add/remove/force + +# Add or remove space around assignment '=' in enum. +sp_enum_assign = add # ignore/add/remove/force + +# Add or remove space before assignment '=' in enum. +# +# Overrides sp_enum_assign. +sp_enum_before_assign = ignore # ignore/add/remove/force + +# Add or remove space after assignment '=' in enum. +# +# Overrides sp_enum_assign. +sp_enum_after_assign = ignore # ignore/add/remove/force + +# Add or remove space around assignment ':' in enum. +sp_enum_colon = ignore # ignore/add/remove/force + +# Add or remove space around preprocessor '##' concatenation operator. +# +# Default: add +sp_pp_concat = add # ignore/add/remove/force + +# Add or remove space after preprocessor '#' stringify operator. +# Also affects the '#@' charizing operator. +sp_pp_stringify = add # ignore/add/remove/force + +# Add or remove space before preprocessor '#' stringify operator +# as in '#define x(y) L#y'. +sp_before_pp_stringify = ignore # ignore/add/remove/force + +# Add or remove space around boolean operators '&&' and '||'. +sp_bool = add # ignore/add/remove/force + +# Add or remove space around compare operator '<', '>', '==', etc. +sp_compare = add # ignore/add/remove/force + +# Add or remove space inside '(' and ')'. +sp_inside_paren = remove # ignore/add/remove/force + +# Add or remove space between nested parentheses, i.e. '((' vs. ') )'. +sp_paren_paren = remove # ignore/add/remove/force + +# Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('. +sp_cparen_oparen = ignore # ignore/add/remove/force + +# Whether to balance spaces inside nested parentheses. +sp_balance_nested_parens = false # true/false + +# Add or remove space between ')' and '{'. +sp_paren_brace = add # ignore/add/remove/force + +# Add or remove space between nested braces, i.e. '{{' vs '{ {'. +sp_brace_brace = ignore # ignore/add/remove/force + +# Add or remove space before pointer star '*'. +sp_before_ptr_star = add # ignore/add/remove/force + +# Add or remove space before pointer star '*' that isn't followed by a +# variable name. If set to 'ignore', sp_before_ptr_star is used instead. +sp_before_unnamed_ptr_star = add # ignore/add/remove/force + +# Add or remove space between pointer stars '*'. +sp_between_ptr_star = remove # ignore/add/remove/force + +# Add or remove space after pointer star '*', if followed by a word. +sp_after_ptr_star = remove # ignore/add/remove/force + +# Add or remove space after pointer caret '^', if followed by a word. +sp_after_ptr_block_caret = ignore # ignore/add/remove/force + +# Add or remove space after pointer star '*', if followed by a qualifier. +sp_after_ptr_star_qualifier = ignore # ignore/add/remove/force + +# Add or remove space after a pointer star '*', if followed by a function +# prototype or function definition. +sp_after_ptr_star_func = add # ignore/add/remove/force + +# Add or remove space after a pointer star '*', if followed by an open +# parenthesis, as in 'void* (*)(). +sp_ptr_star_paren = ignore # ignore/add/remove/force + +# Add or remove space before a pointer star '*', if followed by a function +# prototype or function definition. +sp_before_ptr_star_func = remove # ignore/add/remove/force + +# Add or remove space before a reference sign '&'. +sp_before_byref = remove # ignore/add/remove/force + +# Add or remove space before a reference sign '&' that isn't followed by a +# variable name. If set to 'ignore', sp_before_byref is used instead. +sp_before_unnamed_byref = remove # ignore/add/remove/force + +# Add or remove space after reference sign '&', if followed by a word. +sp_after_byref = add # ignore/add/remove/force + +# Add or remove space after a reference sign '&', if followed by a function +# prototype or function definition. +sp_after_byref_func = add # ignore/add/remove/force + +# Add or remove space before a reference sign '&', if followed by a function +# prototype or function definition. +sp_before_byref_func = remove # ignore/add/remove/force + +# Add or remove space between type and word. +# +# Default: force +sp_after_type = add # ignore/add/remove/force + +# Add or remove space between 'decltype(...)' and word. +sp_after_decltype = ignore # ignore/add/remove/force + +# (D) Add or remove space before the parenthesis in the D constructs +# 'template Foo(' and 'class Foo('. +sp_before_template_paren = ignore # ignore/add/remove/force + +# Add or remove space between 'template' and '<'. +# If set to ignore, sp_before_angle is used. +sp_template_angle = ignore # ignore/add/remove/force + +# Add or remove space before '<'. +sp_before_angle = remove # ignore/add/remove/force + +# Add or remove space inside '<' and '>'. +sp_inside_angle = remove # ignore/add/remove/force + +# Add or remove space inside '<>'. +sp_inside_angle_empty = ignore # ignore/add/remove/force + +# Add or remove space between '>' and ':'. +sp_angle_colon = ignore # ignore/add/remove/force + +# Add or remove space after '<>'. +sp_after_angle = remove # ignore/add/remove/force + +# Add or remove space between '>' and '(' as found in 'new List(foo);'. +sp_angle_paren = remove # ignore/add/remove/force + +# Add or remove space between '>' and '()' as found in 'new List();'. +sp_angle_paren_empty = ignore # ignore/add/remove/force + +# Add or remove space between '>' and a word as in 'List m;' or +# 'template static ...'. +sp_angle_word = remove # ignore/add/remove/force + +# Add or remove space between '>' and '>' in '>>' (template stuff). +# +# Default: add +sp_angle_shift = add # ignore/add/remove/force + +# (C++11) Permit removal of the space between '>>' in 'foo >'. Note +# that sp_angle_shift cannot remove the space without this option. +sp_permit_cpp11_shift = false # true/false + +# Add or remove space before '(' of control statements ('if', 'for', 'switch', +# 'while', etc.). +sp_before_sparen = add # ignore/add/remove/force + +# Add or remove space inside '(' and ')' of control statements. +sp_inside_sparen = remove # ignore/add/remove/force + +# Add or remove space after '(' of control statements. +# +# Overrides sp_inside_sparen. +sp_inside_sparen_open = ignore # ignore/add/remove/force + +# Add or remove space before ')' of control statements. +# +# Overrides sp_inside_sparen. +sp_inside_sparen_close = ignore # ignore/add/remove/force + +# Add or remove space after ')' of control statements. +sp_after_sparen = ignore # ignore/add/remove/force + +# Add or remove space between ')' and '{' of of control statements. +sp_sparen_brace = add # ignore/add/remove/force + +# (D) Add or remove space between 'invariant' and '('. +sp_invariant_paren = ignore # ignore/add/remove/force + +# (D) Add or remove space after the ')' in 'invariant (C) c'. +sp_after_invariant_paren = ignore # ignore/add/remove/force + +# Add or remove space before empty statement ';' on 'if', 'for' and 'while'. +sp_special_semi = remove # ignore/add/remove/force + +# Add or remove space before ';'. +# +# Default: remove +sp_before_semi = remove # ignore/add/remove/force + +# Add or remove space before ';' in non-empty 'for' statements. +sp_before_semi_for = remove # ignore/add/remove/force + +# Add or remove space before a semicolon of an empty part of a for statement. +sp_before_semi_for_empty = remove # ignore/add/remove/force + +# Add or remove space after ';', except when followed by a comment. +# +# Default: add +sp_after_semi = add # ignore/add/remove/force + +# Add or remove space after ';' in non-empty 'for' statements. +# +# Default: force +sp_after_semi_for = force # ignore/add/remove/force + +# Add or remove space after the final semicolon of an empty part of a for +# statement, as in 'for ( ; ; )'. +sp_after_semi_for_empty = remove # ignore/add/remove/force + +# Add or remove space before '[' (except '[]'). +sp_before_square = remove # ignore/add/remove/force + +# Add or remove space before '[]'. +sp_before_squares = remove # ignore/add/remove/force + +# Add or remove space before C++17 structured bindings. +sp_cpp_before_struct_binding = ignore # ignore/add/remove/force + +# Add or remove space inside a non-empty '[' and ']'. +sp_inside_square = remove # ignore/add/remove/force + +# (OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and +# ']'. If set to ignore, sp_inside_square is used. +sp_inside_square_oc_array = ignore # ignore/add/remove/force + +# Add or remove space after ',', i.e. 'a,b' vs. 'a, b'. +sp_after_comma = add # ignore/add/remove/force + +# Add or remove space before ','. +# +# Default: remove +sp_before_comma = remove # ignore/add/remove/force + +# (C#) Add or remove space between ',' and ']' in multidimensional array type +# like 'int[,,]'. +sp_after_mdatype_commas = ignore # ignore/add/remove/force + +# (C#) Add or remove space between '[' and ',' in multidimensional array type +# like 'int[,,]'. +sp_before_mdatype_commas = ignore # ignore/add/remove/force + +# (C#) Add or remove space between ',' in multidimensional array type +# like 'int[,,]'. +sp_between_mdatype_commas = ignore # ignore/add/remove/force + +# Add or remove space between an open parenthesis and comma, +# i.e. '(,' vs. '( ,'. +# +# Default: force +sp_paren_comma = force # ignore/add/remove/force + +# Add or remove space before the variadic '...' when preceded by a +# non-punctuator. +sp_before_ellipsis = ignore # ignore/add/remove/force + +# Add or remove space between a type and '...'. +sp_type_ellipsis = ignore # ignore/add/remove/force + +# (D) Add or remove space between a type and '?'. +sp_type_question = ignore # ignore/add/remove/force + +# Add or remove space between ')' and '...'. +sp_paren_ellipsis = ignore # ignore/add/remove/force + +# Add or remove space between ')' and a qualifier such as 'const'. +sp_paren_qualifier = ignore # ignore/add/remove/force + +# Add or remove space between ')' and 'noexcept'. +sp_paren_noexcept = ignore # ignore/add/remove/force + +# Add or remove space after class ':'. +sp_after_class_colon = add # ignore/add/remove/force + +# Add or remove space before class ':'. +sp_before_class_colon = add # ignore/add/remove/force + +# Add or remove space after class constructor ':'. +sp_after_constr_colon = ignore # ignore/add/remove/force + +# Add or remove space before class constructor ':'. +sp_before_constr_colon = ignore # ignore/add/remove/force + +# Add or remove space before case ':'. +# +# Default: remove +sp_before_case_colon = remove # ignore/add/remove/force + +# Add or remove space between 'operator' and operator sign. +sp_after_operator = remove # ignore/add/remove/force + +# Add or remove space between the operator symbol and the open parenthesis, as +# in 'operator ++('. +sp_after_operator_sym = remove # ignore/add/remove/force + +# Overrides sp_after_operator_sym when the operator has no arguments, as in +# 'operator *()'. +sp_after_operator_sym_empty = ignore # ignore/add/remove/force + +# Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or +# '(int)a' vs. '(int) a'. +sp_after_cast = remove # ignore/add/remove/force + +# Add or remove spaces inside cast parentheses. +sp_inside_paren_cast = remove # ignore/add/remove/force + +# Add or remove space between the type and open parenthesis in a C++ cast, +# i.e. 'int(exp)' vs. 'int (exp)'. +sp_cpp_cast_paren = remove # ignore/add/remove/force + +# Add or remove space between 'sizeof' and '('. +sp_sizeof_paren = remove # ignore/add/remove/force + +# Add or remove space between 'sizeof' and '...'. +sp_sizeof_ellipsis = ignore # ignore/add/remove/force + +# Add or remove space between 'sizeof...' and '('. +sp_sizeof_ellipsis_paren = ignore # ignore/add/remove/force + +# Add or remove space between 'decltype' and '('. +sp_decltype_paren = ignore # ignore/add/remove/force + +# (Pawn) Add or remove space after the tag keyword. +sp_after_tag = ignore # ignore/add/remove/force + +# Add or remove space inside enum '{' and '}'. +sp_inside_braces_enum = add # ignore/add/remove/force + +# Add or remove space inside struct/union '{' and '}'. +sp_inside_braces_struct = add # ignore/add/remove/force + +# (OC) Add or remove space inside Objective-C boxed dictionary '{' and '}' +sp_inside_braces_oc_dict = ignore # ignore/add/remove/force + +# Add or remove space after open brace in an unnamed temporary +# direct-list-initialization. +sp_after_type_brace_init_lst_open = ignore # ignore/add/remove/force + +# Add or remove space before close brace in an unnamed temporary +# direct-list-initialization. +sp_before_type_brace_init_lst_close = ignore # ignore/add/remove/force + +# Add or remove space inside an unnamed temporary direct-list-initialization. +sp_inside_type_brace_init_lst = ignore # ignore/add/remove/force + +# Add or remove space inside '{' and '}'. +sp_inside_braces = add # ignore/add/remove/force + +# Add or remove space inside '{}'. +sp_inside_braces_empty = remove # ignore/add/remove/force + +# Add or remove space between return type and function name. A minimum of 1 +# is forced except for pointer return types. +sp_type_func = add # ignore/add/remove/force + +# Add or remove space between type and open brace of an unnamed temporary +# direct-list-initialization. +sp_type_brace_init_lst = ignore # ignore/add/remove/force + +# Add or remove space between function name and '(' on function declaration. +sp_func_proto_paren = remove # ignore/add/remove/force + +# Add or remove space between function name and '()' on function declaration +# without parameters. +sp_func_proto_paren_empty = ignore # ignore/add/remove/force + +# Add or remove space between function name and '(' on function definition. +sp_func_def_paren = remove # ignore/add/remove/force + +# Add or remove space between function name and '()' on function definition +# without parameters. +sp_func_def_paren_empty = ignore # ignore/add/remove/force + +# Add or remove space inside empty function '()'. +sp_inside_fparens = remove # ignore/add/remove/force + +# Add or remove space inside function '(' and ')'. +sp_inside_fparen = remove # ignore/add/remove/force + +# Add or remove space inside the first parentheses in a function type, as in +# 'void (*x)(...)'. +sp_inside_tparen = ignore # ignore/add/remove/force + +# Add or remove space between the ')' and '(' in a function type, as in +# 'void (*x)(...)'. +sp_after_tparen_close = ignore # ignore/add/remove/force + +# Add or remove space between ']' and '(' when part of a function call. +sp_square_fparen = remove # ignore/add/remove/force + +# Add or remove space between ')' and '{' of function. +sp_fparen_brace = add # ignore/add/remove/force + +# Add or remove space between ')' and '{' of s function call in object +# initialization. +# +# Overrides sp_fparen_brace. +sp_fparen_brace_initializer = ignore # ignore/add/remove/force + +# (Java) Add or remove space between ')' and '{{' of double brace initializer. +sp_fparen_dbrace = ignore # ignore/add/remove/force + +# Add or remove space between function name and '(' on function calls. +sp_func_call_paren = remove # ignore/add/remove/force + +# Add or remove space between function name and '()' on function calls without +# parameters. If set to 'ignore' (the default), sp_func_call_paren is used. +sp_func_call_paren_empty = ignore # ignore/add/remove/force + +# Add or remove space between the user function name and '(' on function +# calls. You need to set a keyword to be a user function in the config file, +# like: +# set func_call_user tr _ i18n +sp_func_call_user_paren = remove # ignore/add/remove/force + +# Add or remove space inside user function '(' and ')'. +sp_func_call_user_inside_fparen = ignore # ignore/add/remove/force + +# Add or remove space between nested parentheses with user functions, +# i.e. '((' vs. '( ('. +sp_func_call_user_paren_paren = ignore # ignore/add/remove/force + +# Add or remove space between a constructor/destructor and the open +# parenthesis. +sp_func_class_paren = remove # ignore/add/remove/force + +# Add or remove space between a constructor without parameters or destructor +# and '()'. +sp_func_class_paren_empty = ignore # ignore/add/remove/force + +# Add or remove space between 'return' and '('. +sp_return_paren = add # ignore/add/remove/force + +# Add or remove space between 'return' and '{'. +sp_return_brace = ignore # ignore/add/remove/force + +# Add or remove space between '__attribute__' and '('. +sp_attribute_paren = remove # ignore/add/remove/force + +# Add or remove space between 'defined' and '(' in '#if defined (FOO)'. +sp_defined_paren = remove # ignore/add/remove/force + +# Add or remove space between 'throw' and '(' in 'throw (something)'. +sp_throw_paren = remove # ignore/add/remove/force + +# Add or remove space between 'throw' and anything other than '(' as in +# '@throw [...];'. +sp_after_throw = ignore # ignore/add/remove/force + +# Add or remove space between 'catch' and '(' in 'catch (something) { }'. +# If set to ignore, sp_before_sparen is used. +sp_catch_paren = ignore # ignore/add/remove/force + +# (OC) Add or remove space between '@catch' and '(' +# in '@catch (something) { }'. If set to ignore, sp_catch_paren is used. +sp_oc_catch_paren = ignore # ignore/add/remove/force + +# (OC) Add or remove space between class name and '(' +# in '@interface className(categoryName):BaseClass' +sp_oc_classname_paren = ignore # ignore/add/remove/force + +# (D) Add or remove space between 'version' and '(' +# in 'version (something) { }'. If set to ignore, sp_before_sparen is used. +sp_version_paren = ignore # ignore/add/remove/force + +# (D) Add or remove space between 'scope' and '(' +# in 'scope (something) { }'. If set to ignore, sp_before_sparen is used. +sp_scope_paren = ignore # ignore/add/remove/force + +# Add or remove space between 'super' and '(' in 'super (something)'. +# +# Default: remove +sp_super_paren = remove # ignore/add/remove/force + +# Add or remove space between 'this' and '(' in 'this (something)'. +# +# Default: remove +sp_this_paren = remove # ignore/add/remove/force + +# Add or remove space between a macro name and its definition. +sp_macro = add # ignore/add/remove/force + +# Add or remove space between a macro function ')' and its definition. +sp_macro_func = remove # ignore/add/remove/force + +# Add or remove space between 'else' and '{' if on the same line. +sp_else_brace = add # ignore/add/remove/force + +# Add or remove space between '}' and 'else' if on the same line. +sp_brace_else = add # ignore/add/remove/force + +# Add or remove space between '}' and the name of a typedef on the same line. +sp_brace_typedef = add # ignore/add/remove/force + +# Add or remove space before the '{' of a 'catch' statement, if the '{' and +# 'catch' are on the same line, as in 'catch (decl) {'. +sp_catch_brace = add # ignore/add/remove/force + +# (OC) Add or remove space before the '{' of a '@catch' statement, if the '{' +# and '@catch' are on the same line, as in '@catch (decl) {'. +# If set to ignore, sp_catch_brace is used. +sp_oc_catch_brace = ignore # ignore/add/remove/force + +# Add or remove space between '}' and 'catch' if on the same line. +sp_brace_catch = add # ignore/add/remove/force + +# (OC) Add or remove space between '}' and '@catch' if on the same line. +# If set to ignore, sp_brace_catch is used. +sp_oc_brace_catch = ignore # ignore/add/remove/force + +# Add or remove space between 'finally' and '{' if on the same line. +sp_finally_brace = add # ignore/add/remove/force + +# Add or remove space between '}' and 'finally' if on the same line. +sp_brace_finally = add # ignore/add/remove/force + +# Add or remove space between 'try' and '{' if on the same line. +sp_try_brace = add # ignore/add/remove/force + +# Add or remove space between get/set and '{' if on the same line. +sp_getset_brace = add # ignore/add/remove/force + +# Add or remove space between a variable and '{' for C++ uniform +# initialization. +# +# Default: add +sp_word_brace = add # ignore/add/remove/force + +# Add or remove space between a variable and '{' for a namespace. +# +# Default: add +sp_word_brace_ns = add # ignore/add/remove/force + +# Add or remove space before the '::' operator. +sp_before_dc = remove # ignore/add/remove/force + +# Add or remove space after the '::' operator. +sp_after_dc = remove # ignore/add/remove/force + +# (D) Add or remove around the D named array initializer ':' operator. +sp_d_array_colon = ignore # ignore/add/remove/force + +# Add or remove space after the '!' (not) unary operator. +# +# Default: remove +sp_not = remove # ignore/add/remove/force + +# Add or remove space after the '~' (invert) unary operator. +# +# Default: remove +sp_inv = remove # ignore/add/remove/force + +# Add or remove space after the '&' (address-of) unary operator. This does not +# affect the spacing after a '&' that is part of a type. +# +# Default: remove +sp_addr = remove # ignore/add/remove/force + +# Add or remove space around the '.' or '->' operators. +# +# Default: remove +sp_member = remove # ignore/add/remove/force + +# Add or remove space after the '*' (dereference) unary operator. This does +# not affect the spacing after a '*' that is part of a type. +# +# Default: remove +sp_deref = remove # ignore/add/remove/force + +# Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'. +# +# Default: remove +sp_sign = remove # ignore/add/remove/force + +# Add or remove space between '++' and '--' the word to which it is being +# applied, as in '(--x)' or 'y++;'. +# +# Default: remove +sp_incdec = remove # ignore/add/remove/force + +# Add or remove space before a backslash-newline at the end of a line. +# +# Default: add +sp_before_nl_cont = remove # ignore/add/remove/force + +# (OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;' +# or '+(int) bar;'. +sp_after_oc_scope = remove # ignore/add/remove/force + +# (OC) Add or remove space after the colon in message specs, +# i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'. +sp_after_oc_colon = remove # ignore/add/remove/force + +# (OC) Add or remove space before the colon in message specs, +# i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'. +sp_before_oc_colon = remove # ignore/add/remove/force + +# (OC) Add or remove space after the colon in immutable dictionary expression +# 'NSDictionary *test = @{@"foo" :@"bar"};'. +sp_after_oc_dict_colon = ignore # ignore/add/remove/force + +# (OC) Add or remove space before the colon in immutable dictionary expression +# 'NSDictionary *test = @{@"foo" :@"bar"};'. +sp_before_oc_dict_colon = ignore # ignore/add/remove/force + +# (OC) Add or remove space after the colon in message specs, +# i.e. '[object setValue:1];' vs. '[object setValue: 1];'. +sp_after_send_oc_colon = add # ignore/add/remove/force + +# (OC) Add or remove space before the colon in message specs, +# i.e. '[object setValue:1];' vs. '[object setValue :1];'. +sp_before_send_oc_colon = remove # ignore/add/remove/force + +# (OC) Add or remove space after the (type) in message specs, +# i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'. +sp_after_oc_type = remove # ignore/add/remove/force + +# (OC) Add or remove space after the first (type) in message specs, +# i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'. +sp_after_oc_return_type = ignore # ignore/add/remove/force + +# (OC) Add or remove space between '@selector' and '(', +# i.e. '@selector(msgName)' vs. '@selector (msgName)'. +# Also applies to '@protocol()' constructs. +sp_after_oc_at_sel = ignore # ignore/add/remove/force + +# (OC) Add or remove space between '@selector(x)' and the following word, +# i.e. '@selector(foo) a:' vs. '@selector(foo)a:'. +sp_after_oc_at_sel_parens = ignore # ignore/add/remove/force + +# (OC) Add or remove space inside '@selector' parentheses, +# i.e. '@selector(foo)' vs. '@selector( foo )'. +# Also applies to '@protocol()' constructs. +sp_inside_oc_at_sel_parens = ignore # ignore/add/remove/force + +# (OC) Add or remove space before a block pointer caret, +# i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'. +sp_before_oc_block_caret = ignore # ignore/add/remove/force + +# (OC) Add or remove space after a block pointer caret, +# i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'. +sp_after_oc_block_caret = ignore # ignore/add/remove/force + +# (OC) Add or remove space between the receiver and selector in a message, +# as in '[receiver selector ...]'. +sp_after_oc_msg_receiver = ignore # ignore/add/remove/force + +# (OC) Add or remove space after '@property'. +sp_after_oc_property = ignore # ignore/add/remove/force + +# (OC) Add or remove space between '@synchronized' and the open parenthesis, +# i.e. '@synchronized(foo)' vs. '@synchronized (foo)'. +sp_after_oc_synchronized = ignore # ignore/add/remove/force + +# Add or remove space around the ':' in 'b ? t : f'. +sp_cond_colon = add # ignore/add/remove/force + +# Add or remove space before the ':' in 'b ? t : f'. +# +# Overrides sp_cond_colon. +sp_cond_colon_before = ignore # ignore/add/remove/force + +# Add or remove space after the ':' in 'b ? t : f'. +# +# Overrides sp_cond_colon. +sp_cond_colon_after = ignore # ignore/add/remove/force + +# Add or remove space around the '?' in 'b ? t : f'. +sp_cond_question = add # ignore/add/remove/force + +# Add or remove space before the '?' in 'b ? t : f'. +# +# Overrides sp_cond_question. +sp_cond_question_before = ignore # ignore/add/remove/force + +# Add or remove space after the '?' in 'b ? t : f'. +# +# Overrides sp_cond_question. +sp_cond_question_after = ignore # ignore/add/remove/force + +# In the abbreviated ternary form '(a ?: b)', add or remove space between '?' +# and ':'. +# +# Overrides all other sp_cond_* options. +sp_cond_ternary_short = ignore # ignore/add/remove/force + +# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make +# sense here. +sp_case_label = ignore # ignore/add/remove/force + +# (D) Add or remove space around the D '..' operator. +sp_range = ignore # ignore/add/remove/force + +# Add or remove space after ':' in a Java/C++11 range-based 'for', +# as in 'for (Type var : expr)'. +sp_after_for_colon = ignore # ignore/add/remove/force + +# Add or remove space before ':' in a Java/C++11 range-based 'for', +# as in 'for (Type var : expr)'. +sp_before_for_colon = ignore # ignore/add/remove/force + +# (D) Add or remove space between 'extern' and '(' as in 'extern (C)'. +sp_extern_paren = ignore # ignore/add/remove/force + +# Add or remove space after the opening of a C++ comment, +# i.e. '// A' vs. '//A'. +sp_cmt_cpp_start = add # ignore/add/remove/force + +# If true, space is added with sp_cmt_cpp_start will be added after doxygen +# sequences like '///', '///<', '//!' and '//!<'. +sp_cmt_cpp_doxygen = false # true/false + +# If true, space is added with sp_cmt_cpp_start will be added after Qt +# translator or meta-data comments like '//:', '//=', and '//~'. +sp_cmt_cpp_qttr = false # true/false + +# Add or remove space between #else or #endif and a trailing comment. +sp_endif_cmt = ignore # ignore/add/remove/force + +# Add or remove space after 'new', 'delete' and 'delete[]'. +sp_after_new = ignore # ignore/add/remove/force + +# Add or remove space between 'new' and '(' in 'new()'. +sp_between_new_paren = ignore # ignore/add/remove/force + +# Add or remove space between ')' and type in 'new(foo) BAR'. +sp_after_newop_paren = ignore # ignore/add/remove/force + +# Add or remove space inside parenthesis of the new operator +# as in 'new(foo) BAR'. +sp_inside_newop_paren = ignore # ignore/add/remove/force + +# Add or remove space after the open parenthesis of the new operator, +# as in 'new(foo) BAR'. +# +# Overrides sp_inside_newop_paren. +sp_inside_newop_paren_open = ignore # ignore/add/remove/force + +# Add or remove space before the close parenthesis of the new operator, +# as in 'new(foo) BAR'. +# +# Overrides sp_inside_newop_paren. +sp_inside_newop_paren_close = ignore # ignore/add/remove/force + +# Add or remove space before a trailing or embedded comment. +sp_before_tr_emb_cmt = ignore # ignore/add/remove/force + +# Number of spaces before a trailing or embedded comment. +sp_num_before_tr_emb_cmt = 0 # unsigned number + +# (Java) Add or remove space between an annotation and the open parenthesis. +sp_annotation_paren = ignore # ignore/add/remove/force + +# If true, vbrace tokens are dropped to the previous token and skipped. +sp_skip_vbrace_tokens = false # true/false + +# Add or remove space after 'noexcept'. +sp_after_noexcept = ignore # ignore/add/remove/force + +# Add or remove space after '_'. +sp_vala_after_translation = ignore # ignore/add/remove/force + +# If true, a is inserted after #define. +force_tab_after_define = false # true/false + +# +# Indenting options +# + +# The number of columns to indent per level. Usually 2, 3, 4, or 8. +# +# Default: 8 +indent_columns = 2 # unsigned number + +# The continuation indent. If non-zero, this overrides the indent of '(', '[' +# and '=' continuation indents. Negative values are OK; negative value is +# absolute and not increased for each '(' or '[' level. +# +# For FreeBSD, this is set to 4. +indent_continue = 0 # number + +# The continuation indent, only for class header line(s). If non-zero, this +# overrides the indent of 'class' continuation indents. +indent_continue_class_head = 0 # unsigned number + +# Whether to indent empty lines (i.e. lines which contain only spaces before +# the newline character). +indent_single_newlines = false # true/false + +# The continuation indent for func_*_param if they are true. If non-zero, this +# overrides the indent. +indent_param = 0 # unsigned number + +# How to use tabs when indenting code. +# +# 0: Spaces only +# 1: Indent with tabs to brace level, align with spaces (default) +# 2: Indent and align with tabs, using spaces when not on a tabstop +# +# Default: 1 +indent_with_tabs = 0 # unsigned number + +# Whether to indent comments that are not at a brace level with tabs on a +# tabstop. Requires indent_with_tabs=2. If false, will use spaces. +indent_cmt_with_tabs = false # true/false + +# Whether to indent strings broken by '\' so that they line up. +indent_align_string = true # true/false + +# The number of spaces to indent multi-line XML strings. +# Requires indent_align_string=true. +indent_xml_string = 0 # unsigned number + +# Spaces to indent '{' from level. +indent_brace = 0 # unsigned number + +# Whether braces are indented to the body level. +indent_braces = false # true/false + +# Whether to disable indenting function braces if indent_braces=true. +indent_braces_no_func = false # true/false + +# Whether to disable indenting class braces if indent_braces=true. +indent_braces_no_class = false # true/false + +# Whether to disable indenting struct braces if indent_braces=true. +indent_braces_no_struct = false # true/false + +# Whether to indent based on the size of the brace parent, +# i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc. +indent_brace_parent = false # true/false + +# Whether to indent based on the open parenthesis instead of the open brace +# in '({\n'. +indent_paren_open_brace = false # true/false + +# (C#) Whether to indent the brace of a C# delegate by another level. +indent_cs_delegate_brace = false # true/false + +# (C#) Whether to indent a C# delegate (to handle delegates with no brace) by +# another level. +indent_cs_delegate_body = false # true/false + +# Whether to indent the body of a 'namespace'. +indent_namespace = false # true/false + +# Whether to indent only the first namespace, and not any nested namespaces. +# Requires indent_namespace=true. +indent_namespace_single_indent = false # true/false + +# The number of spaces to indent a namespace block. +# If set to zero, use the value indent_columns +indent_namespace_level = 0 # unsigned number + +# If the body of the namespace is longer than this number, it won't be +# indented. Requires indent_namespace=true. 0 means no limit. +indent_namespace_limit = 0 # unsigned number + +# Whether the 'extern "C"' body is indented. +indent_extern = false # true/false + +# Whether the 'class' body is indented. +indent_class = true # true/false + +# Whether to indent the stuff after a leading base class colon. +indent_class_colon = true # true/false + +# Whether to indent based on a class colon instead of the stuff after the +# colon. Requires indent_class_colon=true. +indent_class_on_colon = false # true/false + +# Whether to indent the stuff after a leading class initializer colon. +indent_constr_colon = false # true/false + +# Virtual indent from the ':' for member initializers. +# +# Default: 2 +indent_ctor_init_leading = 2 # unsigned number + +# Additional indent for constructor initializer list. +# Negative values decrease indent down to the first column. +indent_ctor_init = 0 # number + +# Whether to indent 'if' following 'else' as a new block under the 'else'. +# If false, 'else\nif' is treated as 'else if' for indenting purposes. +indent_else_if = false # true/false + +# Amount to indent variable declarations after a open brace. +# +# <0: Relative +# >=0: Absolute +indent_var_def_blk = 0 # number + +# Whether to indent continued variable declarations instead of aligning. +indent_var_def_cont = false # true/false + +# Whether to indent continued shift expressions ('<<' and '>>') instead of +# aligning. Set align_left_shift=false when enabling this. +indent_shift = false # true/false + +# Whether to force indentation of function definitions to start in column 1. +indent_func_def_force_col1 = false # true/false + +# Whether to indent continued function call parameters one indent level, +# rather than aligning parameters under the open parenthesis. +indent_func_call_param = false # true/false + +# Same as indent_func_call_param, but for function definitions. +indent_func_def_param = false # true/false + +# Same as indent_func_call_param, but for function prototypes. +indent_func_proto_param = false # true/false + +# Same as indent_func_call_param, but for class declarations. +indent_func_class_param = false # true/false + +# Same as indent_func_call_param, but for class variable constructors. +indent_func_ctor_var_param = false # true/false + +# Same as indent_func_call_param, but for template parameter lists. +indent_template_param = false # true/false + +# Double the indent for indent_func_xxx_param options. +# Use both values of the options indent_columns and indent_param. +indent_func_param_double = false # true/false + +# Indentation column for standalone 'const' qualifier on a function +# prototype. +indent_func_const = 0 # unsigned number + +# Indentation column for standalone 'throw' qualifier on a function +# prototype. +indent_func_throw = 0 # unsigned number + +# The number of spaces to indent a continued '->' or '.'. +# Usually set to 0, 1, or indent_columns. +indent_member = 0 # unsigned number + +# Whether lines broken at '.' or '->' should be indented by a single indent. +# The indent_member option will not be effective if this is set to true. +indent_member_single = false # true/false + +# Spaces to indent single line ('//') comments on lines before code. +indent_sing_line_comments = 0 # unsigned number + +# Whether to indent trailing single line ('//') comments relative to the code +# instead of trying to keep the same absolute column. +indent_relative_single_line_comments = false # true/false + +# Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns. +indent_switch_case = 2 # unsigned number + +# Whether to indent preprocessor statements inside of switch statements. +# +# Default: true +indent_switch_pp = true # true/false + +# Spaces to shift the 'case' line, without affecting any other lines. +# Usually 0. +indent_case_shift = 0 # unsigned number + +# Spaces to indent '{' from 'case'. By default, the brace will appear under +# the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK. +indent_case_brace = 0 # number + +# Whether to indent comments found in first column. +indent_col1_comment = true # true/false + +# Whether to indent multi string literal in first column. +indent_col1_multi_string_literal = false # true/false + +# How to indent goto labels. +# +# >0: Absolute column where 1 is the leftmost column +# <=0: Subtract from brace indent +# +# Default: 1 +indent_label = 1 # number + +# Same as indent_label, but for access specifiers that are followed by a +# colon. +# +# Default: 1 +indent_access_spec = 1 # number + +# Whether to indent the code after an access specifier by one level. +# If true, this option forces 'indent_access_spec=0'. +indent_access_spec_body = false # true/false + +# If an open parenthesis is followed by a newline, whether to indent the next +# line so that it lines up after the open parenthesis (not recommended). +indent_paren_nl = false # true/false + +# How to indent a close parenthesis after a newline. +# +# 0: Indent to body level (default) +# 1: Align under the open parenthesis +# 2: Indent to the brace level +indent_paren_close = 0 # unsigned number + +# Whether to indent the open parenthesis of a function definition, +# if the parenthesis is on its own line. +indent_paren_after_func_def = false # true/false + +# Whether to indent the open parenthesis of a function declaration, +# if the parenthesis is on its own line. +indent_paren_after_func_decl = false # true/false + +# Whether to indent the open parenthesis of a function call, +# if the parenthesis is on its own line. +indent_paren_after_func_call = false # true/false + +# Whether to indent a comma when inside a parenthesis. +# If true, aligns under the open parenthesis. +indent_comma_paren = false # true/false + +# Whether to indent a Boolean operator when inside a parenthesis. +# If true, aligns under the open parenthesis. +indent_bool_paren = false # true/false + +# Whether to indent a semicolon when inside a for parenthesis. +# If true, aligns under the open for parenthesis. +indent_semicolon_for_paren = false # true/false + +# Whether to align the first expression to following ones +# if indent_bool_paren=true. +indent_first_bool_expr = false # true/false + +# Whether to align the first expression to following ones +# if indent_semicolon_for_paren=true. +indent_first_for_expr = false # true/false + +# If an open square is followed by a newline, whether to indent the next line +# so that it lines up after the open square (not recommended). +indent_square_nl = false # true/false + +# (ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies. +indent_preserve_sql = false # true/false + +# Whether to align continued statements at the '='. If false or if the '=' is +# followed by a newline, the next line is indent one tab. +# +# Default: true +indent_align_assign = true # true/false + +# Whether to align continued statements at the '('. If false or the '(' is +# followed by a newline, the next line indent is one tab. +# +# Default: true +indent_align_paren = true # true/false + +# (OC) Whether to indent Objective-C blocks at brace level instead of usual +# rules. +indent_oc_block = false # true/false + +# (OC) Indent for Objective-C blocks in a message relative to the parameter +# name. +# +# =0: Use indent_oc_block rules +# >0: Use specified number of spaces to indent +indent_oc_block_msg = 0 # unsigned number + +# (OC) Minimum indent for subsequent parameters +indent_oc_msg_colon = 0 # unsigned number + +# (OC) Whether to prioritize aligning with initial colon (and stripping spaces +# from lines, if necessary). +# +# Default: true +indent_oc_msg_prioritize_first_colon = true # true/false + +# (OC) Whether to indent blocks the way that Xcode does by default +# (from the keyword if the parameter is on its own line; otherwise, from the +# previous indentation level). Requires indent_oc_block_msg=true. +indent_oc_block_msg_xcode_style = false # true/false + +# (OC) Whether to indent blocks from where the brace is, relative to a +# message keyword. Requires indent_oc_block_msg=true. +indent_oc_block_msg_from_keyword = false # true/false + +# (OC) Whether to indent blocks from where the brace is, relative to a message +# colon. Requires indent_oc_block_msg=true. +indent_oc_block_msg_from_colon = false # true/false + +# (OC) Whether to indent blocks from where the block caret is. +# Requires indent_oc_block_msg=true. +indent_oc_block_msg_from_caret = false # true/false + +# (OC) Whether to indent blocks from where the brace caret is. +# Requires indent_oc_block_msg=true. +indent_oc_block_msg_from_brace = false # true/false + +# When indenting after virtual brace open and newline add further spaces to +# reach this minimum indent. +indent_min_vbrace_open = 0 # unsigned number + +# Whether to add further spaces after regular indent to reach next tabstop +# when identing after virtual brace open and newline. +indent_vbrace_open_on_tabstop = false # true/false + +# How to indent after a brace followed by another token (not a newline). +# true: indent all contained lines to match the token +# false: indent all contained lines to match the brace +# +# Default: true +indent_token_after_brace = true # true/false + +# Whether to indent the body of a C++11 lambda. +indent_cpp_lambda_body = false # true/false + +# (C#) Whether to indent a 'using' block if no braces are used. +# +# Default: true +indent_using_block = true # true/false + +# How to indent the continuation of ternary operator. +# +# 0: Off (default) +# 1: When the `if_false` is a continuation, indent it under `if_false` +# 2: When the `:` is a continuation, indent it under `?` +indent_ternary_operator = 0 # unsigned number + +# If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column. +indent_off_after_return_new = false # true/false + +# If true, the tokens after return are indented with regular single indentation. By default (false) the indentation is after the return token. +indent_single_after_return = false # true/false + +# Whether to ignore indent and alignment for 'asm' blocks (i.e. assume they +# have their own indentation). +indent_ignore_asm_block = false # true/false + +# +# Newline adding and removing options +# + +# Whether to collapse empty blocks between '{' and '}'. +nl_collapse_empty_body = true # true/false + +# Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'. +nl_assign_leave_one_liners = false # true/false + +# Don't split one-line braced statements inside a 'class xx { }' body. +nl_class_leave_one_liners = false # true/false + +# Don't split one-line enums, as in 'enum foo { BAR = 15 };' +nl_enum_leave_one_liners = false # true/false + +# Don't split one-line get or set functions. +nl_getset_leave_one_liners = false # true/false + +# (C#) Don't split one-line property get or set functions. +nl_cs_property_leave_one_liners = false # true/false + +# Don't split one-line function definitions, as in 'int foo() { return 0; }'. +nl_func_leave_one_liners = false # true/false + +# Don't split one-line C++11 lambdas, as in '[]() { return 0; }'. +nl_cpp_lambda_leave_one_liners = false # true/false + +# Don't split one-line if/else statements, as in 'if(...) b++;'. +nl_if_leave_one_liners = false # true/false + +# Don't split one-line while statements, as in 'while(...) b++;'. +nl_while_leave_one_liners = false # true/false + +# Don't split one-line for statements, as in 'for(...) b++;'. +nl_for_leave_one_liners = false # true/false + +# (OC) Don't split one-line Objective-C messages. +nl_oc_msg_leave_one_liner = false # true/false + +# (OC) Add or remove newline between method declaration and '{'. +nl_oc_mdef_brace = ignore # ignore/add/remove/force + +# (OC) Add or remove newline between Objective-C block signature and '{'. +nl_oc_block_brace = ignore # ignore/add/remove/force + +# (OC) Add or remove newline between '@interface' and '{'. +nl_oc_interface_brace = ignore # ignore/add/remove/force + +# (OC) Add or remove newline between '@implementation' and '{'. +nl_oc_implementation_brace = ignore # ignore/add/remove/force + +# Add or remove newlines at the start of the file. +nl_start_of_file = ignore # ignore/add/remove/force + +# The minimum number of newlines at the start of the file (only used if +# nl_start_of_file is 'add' or 'force'). +nl_start_of_file_min = 0 # unsigned number + +# Add or remove newline at the end of the file. +nl_end_of_file = add # ignore/add/remove/force + +# The minimum number of newlines at the end of the file (only used if +# nl_end_of_file is 'add' or 'force'). +nl_end_of_file_min = 1 # unsigned number + +# Add or remove newline between '=' and '{'. +nl_assign_brace = ignore # ignore/add/remove/force + +# (D) Add or remove newline between '=' and '['. +nl_assign_square = ignore # ignore/add/remove/force + +# Add or remove newline between '[]' and '{'. +nl_tsquare_brace = ignore # ignore/add/remove/force + +# (D) Add or remove newline after '= ['. Will also affect the newline before +# the ']'. +nl_after_square_assign = ignore # ignore/add/remove/force + +# Add or remove newline between a function call's ')' and '{', as in +# 'list_for_each(item, &list) { }'. +nl_fcall_brace = ignore # ignore/add/remove/force + +# Add or remove newline between 'enum' and '{'. +nl_enum_brace = ignore # ignore/add/remove/force + +# Add or remove newline between 'enum' and 'class'. +nl_enum_class = ignore # ignore/add/remove/force + +# Add or remove newline between 'enum class' and the identifier. +nl_enum_class_identifier = ignore # ignore/add/remove/force + +# Add or remove newline between 'enum class' type and ':'. +nl_enum_identifier_colon = ignore # ignore/add/remove/force + +# Add or remove newline between 'enum class identifier :' and type. +nl_enum_colon_type = ignore # ignore/add/remove/force + +# Add or remove newline between 'struct and '{'. +nl_struct_brace = ignore # ignore/add/remove/force + +# Add or remove newline between 'union' and '{'. +nl_union_brace = ignore # ignore/add/remove/force + +# Add or remove newline between 'if' and '{'. +nl_if_brace = ignore # ignore/add/remove/force + +# Add or remove newline between '}' and 'else'. +nl_brace_else = ignore # ignore/add/remove/force + +# Add or remove newline between 'else if' and '{'. If set to ignore, +# nl_if_brace is used instead. +nl_elseif_brace = ignore # ignore/add/remove/force + +# Add or remove newline between 'else' and '{'. +nl_else_brace = ignore # ignore/add/remove/force + +# Add or remove newline between 'else' and 'if'. +nl_else_if = ignore # ignore/add/remove/force + +# Add or remove newline before 'if'/'else if' closing parenthesis. +nl_before_if_closing_paren = ignore # ignore/add/remove/force + +# Add or remove newline between '}' and 'finally'. +nl_brace_finally = ignore # ignore/add/remove/force + +# Add or remove newline between 'finally' and '{'. +nl_finally_brace = ignore # ignore/add/remove/force + +# Add or remove newline between 'try' and '{'. +nl_try_brace = ignore # ignore/add/remove/force + +# Add or remove newline between get/set and '{'. +nl_getset_brace = ignore # ignore/add/remove/force + +# Add or remove newline between 'for' and '{'. +nl_for_brace = ignore # ignore/add/remove/force + +# Add or remove newline before the '{' of a 'catch' statement, as in +# 'catch (decl) {'. +nl_catch_brace = ignore # ignore/add/remove/force + +# (OC) Add or remove newline before the '{' of a '@catch' statement, as in +# '@catch (decl) {'. If set to ignore, nl_catch_brace is used. +nl_oc_catch_brace = ignore # ignore/add/remove/force + +# Add or remove newline between '}' and 'catch'. +nl_brace_catch = ignore # ignore/add/remove/force + +# (OC) Add or remove newline between '}' and '@catch'. If set to ignore, +# nl_brace_catch is used. +nl_oc_brace_catch = ignore # ignore/add/remove/force + +# Add or remove newline between '}' and ']'. +nl_brace_square = ignore # ignore/add/remove/force + +# Add or remove newline between '}' and ')' in a function invocation. +nl_brace_fparen = ignore # ignore/add/remove/force + +# Add or remove newline between 'while' and '{'. +nl_while_brace = ignore # ignore/add/remove/force + +# (D) Add or remove newline between 'scope (x)' and '{'. +nl_scope_brace = ignore # ignore/add/remove/force + +# (D) Add or remove newline between 'unittest' and '{'. +nl_unittest_brace = ignore # ignore/add/remove/force + +# (D) Add or remove newline between 'version (x)' and '{'. +nl_version_brace = ignore # ignore/add/remove/force + +# (C#) Add or remove newline between 'using' and '{'. +nl_using_brace = ignore # ignore/add/remove/force + +# Add or remove newline between two open or close braces. Due to general +# newline/brace handling, REMOVE may not work. +nl_brace_brace = ignore # ignore/add/remove/force + +# Add or remove newline between 'do' and '{'. +nl_do_brace = ignore # ignore/add/remove/force + +# Add or remove newline between '}' and 'while' of 'do' statement. +nl_brace_while = ignore # ignore/add/remove/force + +# Add or remove newline between 'switch' and '{'. +nl_switch_brace = ignore # ignore/add/remove/force + +# Add or remove newline between 'synchronized' and '{'. +nl_synchronized_brace = ignore # ignore/add/remove/force + +# Add a newline between ')' and '{' if the ')' is on a different line than the +# if/for/etc. +# +# Overrides nl_for_brace, nl_if_brace, nl_switch_brace, nl_while_switch and +# nl_catch_brace. +nl_multi_line_cond = false # true/false + +# Force a newline in a define after the macro name for multi-line defines. +nl_multi_line_define = false # true/false + +# Whether to add a newline before 'case', and a blank line before a 'case' +# statement that follows a ';' or '}'. +nl_before_case = false # true/false + +# Whether to add a newline after a 'case' statement. +nl_after_case = false # true/false + +# Add or remove newline between a case ':' and '{'. +# +# Overrides nl_after_case. +nl_case_colon_brace = ignore # ignore/add/remove/force + +# Add or remove newline between ')' and 'throw'. +nl_before_throw = ignore # ignore/add/remove/force + +# Add or remove newline between 'namespace' and '{'. +nl_namespace_brace = remove # ignore/add/remove/force + +# Add or remove newline between 'template<>' and whatever follows. +nl_template_class = ignore # ignore/add/remove/force + +# Add or remove newline between 'class' and '{'. +nl_class_brace = remove # ignore/add/remove/force + +# Add or remove newline before or after (depending on pos_class_comma, +# may not be IGNORE) each',' in the base class list. +nl_class_init_args = add # ignore/add/remove/force + +# Add or remove newline after each ',' in the constructor member +# initialization. Related to nl_constr_colon, pos_constr_colon and +# pos_constr_comma. +nl_constr_init_args = ignore # ignore/add/remove/force + +# Add or remove newline before first element, after comma, and after last +# element, in 'enum'. +nl_enum_own_lines = ignore # ignore/add/remove/force + +# Add or remove newline between return type and function name in a function +# definition. +nl_func_type_name = ignore # ignore/add/remove/force + +# Add or remove newline between return type and function name inside a class +# definition. If set to ignore, nl_func_type_name or nl_func_proto_type_name +# is used instead. +nl_func_type_name_class = ignore # ignore/add/remove/force + +# Add or remove newline between class specification and '::' +# in 'void A::f() { }'. Only appears in separate member implementation (does +# not appear with in-line implementation). +nl_func_class_scope = ignore # ignore/add/remove/force + +# Add or remove newline between function scope and name, as in +# 'void A :: f() { }'. +nl_func_scope_name = ignore # ignore/add/remove/force + +# Add or remove newline between return type and function name in a prototype. +nl_func_proto_type_name = ignore # ignore/add/remove/force + +# Add or remove newline between a function name and the opening '(' in the +# declaration. +nl_func_paren = ignore # ignore/add/remove/force + +# Overrides nl_func_paren for functions with no parameters. +nl_func_paren_empty = ignore # ignore/add/remove/force + +# Add or remove newline between a function name and the opening '(' in the +# definition. +nl_func_def_paren = ignore # ignore/add/remove/force + +# Overrides nl_func_def_paren for functions with no parameters. +nl_func_def_paren_empty = ignore # ignore/add/remove/force + +# Add or remove newline between a function name and the opening '(' in the +# call. +nl_func_call_paren = ignore # ignore/add/remove/force + +# Overrides nl_func_call_paren for functions with no parameters. +nl_func_call_paren_empty = ignore # ignore/add/remove/force + +# Add or remove newline after '(' in a function declaration. +nl_func_decl_start = ignore # ignore/add/remove/force + +# Add or remove newline after '(' in a function definition. +nl_func_def_start = ignore # ignore/add/remove/force + +# Overrides nl_func_decl_start when there is only one parameter. +nl_func_decl_start_single = ignore # ignore/add/remove/force + +# Overrides nl_func_def_start when there is only one parameter. +nl_func_def_start_single = ignore # ignore/add/remove/force + +# Whether to add a newline after '(' in a function declaration if '(' and ')' +# are in different lines. If false, nl_func_decl_start is used instead. +nl_func_decl_start_multi_line = false # true/false + +# Whether to add a newline after '(' in a function definition if '(' and ')' +# are in different lines. If false, nl_func_def_start is used instead. +nl_func_def_start_multi_line = false # true/false + +# Add or remove newline after each ',' in a function declaration. +nl_func_decl_args = add # ignore/add/remove/force + +# Add or remove newline after each ',' in a function definition. +nl_func_def_args = ignore # ignore/add/remove/force + +# Whether to add a newline after each ',' in a function declaration if '(' +# and ')' are in different lines. If false, nl_func_decl_args is used instead. +nl_func_decl_args_multi_line = false # true/false + +# Whether to add a newline after each ',' in a function definition if '(' +# and ')' are in different lines. If false, nl_func_def_args is used instead. +nl_func_def_args_multi_line = false # true/false + +# Add or remove newline before the ')' in a function declaration. +nl_func_decl_end = ignore # ignore/add/remove/force + +# Add or remove newline before the ')' in a function definition. +nl_func_def_end = ignore # ignore/add/remove/force + +# Overrides nl_func_decl_end when there is only one parameter. +nl_func_decl_end_single = ignore # ignore/add/remove/force + +# Overrides nl_func_def_end when there is only one parameter. +nl_func_def_end_single = ignore # ignore/add/remove/force + +# Whether to add a newline before ')' in a function declaration if '(' and ')' +# are in different lines. If false, nl_func_decl_end is used instead. +nl_func_decl_end_multi_line = false # true/false + +# Whether to add a newline before ')' in a function definition if '(' and ')' +# are in different lines. If false, nl_func_def_end is used instead. +nl_func_def_end_multi_line = false # true/false + +# Add or remove newline between '()' in a function declaration. +nl_func_decl_empty = ignore # ignore/add/remove/force + +# Add or remove newline between '()' in a function definition. +nl_func_def_empty = ignore # ignore/add/remove/force + +# Add or remove newline between '()' in a function call. +nl_func_call_empty = ignore # ignore/add/remove/force + +# Whether to add a newline after '(' in a function call, +# has preference over nl_func_call_start_multi_line. +nl_func_call_start = ignore # ignore/add/remove/force + +# Whether to add a newline after '(' in a function call if '(' and ')' are in +# different lines. +nl_func_call_start_multi_line = false # true/false + +# Whether to add a newline after each ',' in a function call if '(' and ')' +# are in different lines. +nl_func_call_args_multi_line = false # true/false + +# Whether to add a newline before ')' in a function call if '(' and ')' are in +# different lines. +nl_func_call_end_multi_line = false # true/false + +# (OC) Whether to put each Objective-C message parameter on a separate line. +# See nl_oc_msg_leave_one_liner. +nl_oc_msg_args = false # true/false + +# Add or remove newline between function signature and '{'. +nl_fdef_brace = ignore # ignore/add/remove/force + +# Add or remove newline between function signature and '{', +# if signature ends with ')'. Overrides nl_fdef_brace. +nl_fdef_brace_cond = ignore # ignore/add/remove/force + +# Add or remove newline between C++11 lambda signature and '{'. +nl_cpp_ldef_brace = ignore # ignore/add/remove/force + +# Add or remove newline between 'return' and the return expression. +nl_return_expr = ignore # ignore/add/remove/force + +# Whether to add a newline after semicolons, except in 'for' statements. +nl_after_semicolon = false # true/false + +# (Java) Add or remove newline between the ')' and '{{' of the double brace +# initializer. +nl_paren_dbrace_open = ignore # ignore/add/remove/force + +# Whether to add a newline after the type in an unnamed temporary +# direct-list-initialization. +nl_type_brace_init_lst = ignore # ignore/add/remove/force + +# Whether to add a newline after the open brace in an unnamed temporary +# direct-list-initialization. +nl_type_brace_init_lst_open = ignore # ignore/add/remove/force + +# Whether to add a newline before the close brace in an unnamed temporary +# direct-list-initialization. +nl_type_brace_init_lst_close = ignore # ignore/add/remove/force + +# Whether to add a newline after '{'. This also adds a newline before the +# matching '}'. +nl_after_brace_open = false # true/false + +# Whether to add a newline between the open brace and a trailing single-line +# comment. Requires nl_after_brace_open=true. +nl_after_brace_open_cmt = false # true/false + +# Whether to add a newline after a virtual brace open with a non-empty body. +# These occur in un-braced if/while/do/for statement bodies. +nl_after_vbrace_open = false # true/false + +# Whether to add a newline after a virtual brace open with an empty body. +# These occur in un-braced if/while/do/for statement bodies. +nl_after_vbrace_open_empty = false # true/false + +# Whether to add a newline after '}'. Does not apply if followed by a +# necessary ';'. +nl_after_brace_close = false # true/false + +# Whether to add a newline after a virtual brace close, +# as in 'if (foo) a++; return;'. +nl_after_vbrace_close = false # true/false + +# Add or remove newline between the close brace and identifier, +# as in 'struct { int a; } b;'. Affects enumerations, unions and +# structures. If set to ignore, uses nl_after_brace_close. +nl_brace_struct_var = ignore # ignore/add/remove/force + +# Whether to alter newlines in '#define' macros. +nl_define_macro = true # true/false + +# Whether to alter newlines between consecutive parenthesis closes. The number +# of closing parentheses in a line will depend on respective open parenthesis +# lines. +nl_squeeze_paren_close = false # true/false + +# Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and +# '#endif'. Does not affect top-level #ifdefs. +nl_squeeze_ifdef = false # true/false + +# Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well. +nl_squeeze_ifdef_top_level = false # true/false + +# Add or remove blank line before 'if'. +nl_before_if = add # ignore/add/remove/force + +# Add or remove blank line after 'if' statement. Add/Force work only if the +# next token is not a closing brace. +nl_after_if = ignore # ignore/add/remove/force + +# Add or remove blank line before 'for'. +nl_before_for = add # ignore/add/remove/force + +# Add or remove blank line after 'for' statement. +nl_after_for = ignore # ignore/add/remove/force + +# Add or remove blank line before 'while'. +nl_before_while = add # ignore/add/remove/force + +# Add or remove blank line after 'while' statement. +nl_after_while = ignore # ignore/add/remove/force + +# Add or remove blank line before 'switch'. +nl_before_switch = add # ignore/add/remove/force + +# Add or remove blank line after 'switch' statement. +nl_after_switch = ignore # ignore/add/remove/force + +# Add or remove blank line before 'synchronized'. +nl_before_synchronized = ignore # ignore/add/remove/force + +# Add or remove blank line after 'synchronized' statement. +nl_after_synchronized = ignore # ignore/add/remove/force + +# Add or remove blank line before 'do'. +nl_before_do = add # ignore/add/remove/force + +# Add or remove blank line after 'do/while' statement. +nl_after_do = ignore # ignore/add/remove/force + +# Whether to put a blank line before 'return' statements, unless after an open +# brace. +nl_before_return = false # true/false + +# Whether to put a blank line after 'return' statements, unless followed by a +# close brace. +nl_after_return = false # true/false + +# Whether to double-space commented-entries in 'struct'/'union'/'enum'. +nl_ds_struct_enum_cmt = true # true/false + +# Whether to force a newline before '}' of a 'struct'/'union'/'enum'. +# (Lower priority than eat_blanks_before_close_brace.) +nl_ds_struct_enum_close_brace = true # true/false + +# Add or remove newline before or after (depending on pos_class_colon) a class +# colon, as in 'class Foo : public Bar'. +nl_class_colon = ignore # ignore/add/remove/force + +# Add or remove newline around a class constructor colon. The exact position +# depends on nl_constr_init_args, pos_constr_colon and pos_constr_comma. +nl_constr_colon = ignore # ignore/add/remove/force + +# Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }' +# into a single line. If true, prevents other brace newline rules from turning +# such code into four lines. +nl_namespace_two_to_one_liner = false # true/false + +# Whether to remove a newline in simple unbraced if statements, turning them +# into one-liners, as in 'if(b)\n i++;' => 'if(b) i++;'. +nl_create_if_one_liner = true # true/false + +# Whether to remove a newline in simple unbraced for statements, turning them +# into one-liners, as in 'for (...)\n stmt;' => 'for (...) stmt;'. +nl_create_for_one_liner = true # true/false + +# Whether to remove a newline in simple unbraced while statements, turning +# them into one-liners, as in 'while (expr)\n stmt;' => 'while (expr) stmt;'. +nl_create_while_one_liner = true # true/false + +# Whether to collapse a function definition whose body (not counting braces) +# is only one line so that the entire definition (prototype, braces, body) is +# a single line. +nl_create_func_def_one_liner = false # true/false + +# Whether to split one-line simple unbraced if statements into two lines by +# adding a newline, as in 'if(b) i++;'. +nl_split_if_one_liner = false # true/false + +# Whether to split one-line simple unbraced for statements into two lines by +# adding a newline, as in 'for (...) stmt;'. +nl_split_for_one_liner = false # true/false + +# Whether to split one-line simple unbraced while statements into two lines by +# adding a newline, as in 'while (expr) stmt;'. +nl_split_while_one_liner = false # true/false + +# +# Blank line options +# + +# The maximum number of consecutive newlines (3 = 2 blank lines). +nl_max = 3 # unsigned number + +# The maximum number of consecutive newlines in a function. +nl_max_blank_in_func = 0 # unsigned number + +# The number of newlines before a function prototype. +nl_before_func_body_proto = 0 # unsigned number + +# The number of newlines before a multi-line function definition. +nl_before_func_body_def = 0 # unsigned number + +# The number of newlines before a class constructor/destructor prototype. +nl_before_func_class_proto = 0 # unsigned number + +# The number of newlines before a class constructor/destructor definition. +nl_before_func_class_def = 0 # unsigned number + +# The number of newlines after a function prototype. +nl_after_func_proto = 0 # unsigned number + +# The number of newlines after a function prototype, if not followed by +# another function prototype. +nl_after_func_proto_group = 0 # unsigned number + +# The number of newlines after a class constructor/destructor prototype. +nl_after_func_class_proto = 0 # unsigned number + +# The number of newlines after a class constructor/destructor prototype, +# if not followed by another constructor/destructor prototype. +nl_after_func_class_proto_group = 0 # unsigned number + +# Whether one-line method definitions inside a class body should be treated +# as if they were prototypes for the purposes of adding newlines. +# +# Requires nl_class_leave_one_liners=true. Overrides nl_before_func_body_def +# and nl_before_func_class_def for one-liners. +nl_class_leave_one_liner_groups = false # true/false + +# The number of newlines after '}' of a multi-line function body. +nl_after_func_body = 2 # unsigned number + +# The number of newlines after '}' of a multi-line function body in a class +# declaration. Also affects class constructors/destructors. +# +# Overrides nl_after_func_body. +nl_after_func_body_class = 0 # unsigned number + +# The number of newlines after '}' of a single line function body. Also +# affects class constructors/destructors. +# +# Overrides nl_after_func_body and nl_after_func_body_class. +nl_after_func_body_one_liner = 2 # unsigned number + +# The number of blank lines after a block of variable definitions at the top +# of a function body. +# +# 0 = No change (default). +nl_func_var_def_blk = 1 # unsigned number + +# The number of newlines before a block of typedefs. If nl_after_access_spec +# is non-zero, that option takes precedence. +# +# 0 = No change (default). +nl_typedef_blk_start = 0 # unsigned number + +# The number of newlines after a block of typedefs. +# +# 0 = No change (default). +nl_typedef_blk_end = 0 # unsigned number + +# The maximum number of consecutive newlines within a block of typedefs. +# +# 0 = No change (default). +nl_typedef_blk_in = 0 # unsigned number + +# The number of newlines before a block of variable definitions not at the top +# of a function body. If nl_after_access_spec is non-zero, that option takes +# precedence. +# +# 0 = No change (default). +nl_var_def_blk_start = 0 # unsigned number + +# The number of newlines after a block of variable definitions not at the top +# of a function body. +# +# 0 = No change (default). +nl_var_def_blk_end = 0 # unsigned number + +# The maximum number of consecutive newlines within a block of variable +# definitions. +# +# 0 = No change (default). +nl_var_def_blk_in = 0 # unsigned number + +# The minimum number of newlines before a multi-line comment. +# Doesn't apply if after a brace open or another multi-line comment. +nl_before_block_comment = 2 # unsigned number + +# The minimum number of newlines before a single-line C comment. +# Doesn't apply if after a brace open or other single-line C comments. +nl_before_c_comment = 2 # unsigned number + +# The minimum number of newlines before a CPP comment. +# Doesn't apply if after a brace open or other CPP comments. +nl_before_cpp_comment = 2 # unsigned number + +# Whether to force a newline after a multi-line comment. +nl_after_multiline_comment = true # true/false + +# Whether to force a newline after a label's colon. +nl_after_label_colon = false # true/false + +# The number of newlines after '}' or ';' of a struct/enum/union definition. +nl_after_struct = 0 # unsigned number + +# The number of newlines before a class definition. +nl_before_class = 0 # unsigned number + +# The number of newlines after '}' or ';' of a class definition. +nl_after_class = 0 # unsigned number + +# The number of newlines before an access specifier label. This also includes +# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count +# if after a brace open. +# +# 0 = No change (default). +nl_before_access_spec = 2 # unsigned number + +# The number of newlines after an access specifier label. This also includes +# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count +# if after a brace open. +# +# 0 = No change (default). +# +# Overrides nl_typedef_blk_start and nl_var_def_blk_start. +nl_after_access_spec = 2 # unsigned number + +# The number of newlines between a function definition and the function +# comment, as in '// comment\n void foo() {...}'. +# +# 0 = No change (default). +nl_comment_func_def = 1 # unsigned number + +# The number of newlines after a try-catch-finally block that isn't followed +# by a brace close. +# +# 0 = No change (default). +nl_after_try_catch_finally = 1 # unsigned number + +# (C#) The number of newlines before and after a property, indexer or event +# declaration. +# +# 0 = No change (default). +nl_around_cs_property = 0 # unsigned number + +# (C#) The number of newlines between the get/set/add/remove handlers. +# +# 0 = No change (default). +nl_between_get_set = 0 # unsigned number + +# (C#) Add or remove newline between property and the '{'. +nl_property_brace = ignore # ignore/add/remove/force + +# The number of newlines after '{' of a namespace. This also adds newlines +# before the matching '}'. +# +# 0 = Apply eat_blanks_after_open_brace or eat_blanks_before_close_brace if +# applicable, otherwise no change. +# +# Overrides eat_blanks_after_open_brace and eat_blanks_before_close_brace. +nl_inside_namespace = 0 # unsigned number + +# Whether to remove blank lines after '{'. +eat_blanks_after_open_brace = true # true/false + +# Whether to remove blank lines before '}'. +eat_blanks_before_close_brace = true # true/false + +# How aggressively to remove extra newlines not in preprocessor. +# +# 0: No change (default) +# 1: Remove most newlines not handled by other config +# 2: Remove all newlines and reformat completely by config +nl_remove_extra_newlines = 0 # unsigned number + +# (Java) Add or remove newline after an annotation statement. Only affects +# annotations that are after a newline. +nl_after_annotation = ignore # ignore/add/remove/force + +# (Java) Add or remove newline between two annotations. +nl_between_annotation = ignore # ignore/add/remove/force + +# +# Positioning options +# + +# The position of arithmetic operators in wrapped expressions. +pos_arith = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of assignment in wrapped expressions. Do not affect '=' +# followed by '{'. +pos_assign = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of Boolean operators in wrapped expressions. +pos_bool = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of comparison operators in wrapped expressions. +pos_compare = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of conditional operators, as in the '?' and ':' of +# 'expr ? stmt : stmt', in wrapped expressions. +pos_conditional = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of the comma in wrapped expressions. +pos_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of the comma in enum entries. +pos_enum_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of the comma in the base class list if there is more than one +# line. Affects nl_class_init_args. +pos_class_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of the comma in the constructor initialization list. +# Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon. +pos_constr_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of trailing/leading class colon, between class and base class +# list. Affects nl_class_colon. +pos_class_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of colons between constructor and member initialization. +# Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma. +pos_constr_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# +# Line splitting options +# + +# Try to limit code width to N columns. +code_width = 142 # unsigned number + +# Whether to fully split long 'for' statements at semi-colons. +ls_for_split_full = false # true/false + +# Whether to fully split long function prototypes/calls at commas. +# The option ls_code_width has priority over the option ls_func_split_full. +ls_func_split_full = true # true/false + +# Whether to split lines as close to code_width as possible and ignore some +# groupings. +# The option ls_code_width has priority over the option ls_func_split_full. +ls_code_width = false # true/false + +# +# Code alignment options (not left column spaces/tabs) +# + +# Whether to keep non-indenting tabs. +align_keep_tabs = false # true/false + +# Whether to use tabs for aligning. +align_with_tabs = false # true/false + +# Whether to bump out to the next tab when aligning. +align_on_tabstop = false # true/false + +# Whether to right-align numbers. +align_number_right = false # true/false + +# Whether to keep whitespace not required for alignment. +align_keep_extra_space = false # true/false + +# Whether to align variable definitions in prototypes and functions. +align_func_params = true # true/false + +# The span for aligning parameter definitions in function on parameter name. +# +# 0 = Don't align (default). +align_func_params_span = 0 # unsigned number + +# The threshold for aligning function parameter definitions. +# Use a negative number for absolute thresholds. +# +# 0 = No limit (default). +align_func_params_thresh = 0 # number + +# The gap for aligning function parameter definitions. +align_func_params_gap = 0 # unsigned number + +# The span for aligning constructor value. +# +# 0 = Don't align (default). +align_constr_value_span = 0 # unsigned number + +# The threshold for aligning constructor value. +# Use a negative number for absolute thresholds. +# +# 0 = No limit (default). +align_constr_value_thresh = 0 # number + +# The gap for aligning constructor value. +align_constr_value_gap = 0 # unsigned number + +# Whether to align parameters in single-line functions that have the same +# name. The function names must already be aligned with each other. +align_same_func_call_params = true # true/false + +# The span for aligning function-call parameters for single line functions. +# +# 0 = Don't align (default). +align_same_func_call_params_span = 0 # unsigned number + +# The threshold for aligning function-call parameters for single line +# functions. +# Use a negative number for absolute thresholds. +# +# 0 = No limit (default). +align_same_func_call_params_thresh = 0 # number + +# The span for aligning variable definitions. +# +# 0 = Don't align (default). +align_var_def_span = 1 # unsigned number + +# How to consider (or treat) the '*' in the alignment of variable definitions. +# +# 0: Part of the type 'void * foo;' (default) +# 1: Part of the variable 'void *foo;' +# 2: Dangling 'void *foo;' +# Dangling: the '*' will not be taken into account when aligning. +align_var_def_star_style = 2 # unsigned number + +# How to consider (or treat) the '&' in the alignment of variable definitions. +# +# 0: Part of the type 'long & foo;' (default) +# 1: Part of the variable 'long &foo;' +# 2: Dangling 'long &foo;' +# Dangling: the '&' will not be taken into account when aligning. +align_var_def_amp_style = 2 # unsigned number + +# The threshold for aligning variable definitions. +# Use a negative number for absolute thresholds. +# +# 0 = No limit (default). +align_var_def_thresh = 3 # number + +# The gap for aligning variable definitions. +align_var_def_gap = 1 # unsigned number + +# Whether to align the colon in struct bit fields. +align_var_def_colon = true # true/false + +# The gap for aligning the colon in struct bit fields. +align_var_def_colon_gap = 0 # unsigned number + +# Whether to align any attribute after the variable name. +align_var_def_attribute = true # true/false + +# Whether to align inline struct/enum/union variable definitions. +align_var_def_inline = true # true/false + +# The span for aligning on '=' in assignments. +# +# 0 = Don't align (default). +align_assign_span = 1 # unsigned number + +# The span for aligning on '=' in function prototype modifier. +# +# 0 = Don't align (default). +align_assign_func_proto_span = 0 # unsigned number + +# The threshold for aligning on '=' in assignments. +# Use a negative number for absolute thresholds. +# +# 0 = No limit (default). +align_assign_thresh = 0 # number + +# How to apply align_assign_span to function declaration "assignments", i.e. +# 'virtual void foo() = 0' or '~foo() = {default|delete}'. +# +# 0: Align with other assignments (default) +# 1: Align with each other, ignoring regular assignments +# 2: Don't align +align_assign_decl_func = 0 # unsigned number + +# The span for aligning on '=' in enums. +# +# 0 = Don't align (default). +align_enum_equ_span = 1 # unsigned number + +# The threshold for aligning on '=' in enums. +# Use a negative number for absolute thresholds. +# +# 0 = no limit (default). +align_enum_equ_thresh = 0 # number + +# The span for aligning class member definitions. +# +# 0 = Don't align (default). +align_var_class_span = 0 # unsigned number + +# The threshold for aligning class member definitions. +# Use a negative number for absolute thresholds. +# +# 0 = No limit (default). +align_var_class_thresh = 0 # number + +# The gap for aligning class member definitions. +align_var_class_gap = 0 # unsigned number + +# The span for aligning struct/union member definitions. +# +# 0 = Don't align (default). +align_var_struct_span = 1 # unsigned number + +# The threshold for aligning struct/union member definitions. +# Use a negative number for absolute thresholds. +# +# 0 = No limit (default). +align_var_struct_thresh = 0 # number + +# The gap for aligning struct/union member definitions. +align_var_struct_gap = 0 # unsigned number + +# The span for aligning struct initializer values. +# +# 0 = Don't align (default). +align_struct_init_span = 1 # unsigned number + +# The span for aligning single-line typedefs. +# +# 0 = Don't align (default). +align_typedef_span = 1 # unsigned number + +# The minimum space between the type and the synonym of a typedef. +align_typedef_gap = 0 # unsigned number + +# How to align typedef'd functions with other typedefs. +# +# 0: Don't mix them at all (default) +# 1: Align the open parenthesis with the types +# 2: Align the function type name with the other type names +align_typedef_func = 0 # unsigned number + +# How to consider (or treat) the '*' in the alignment of typedefs. +# +# 0: Part of the typedef type, 'typedef int * pint;' (default) +# 1: Part of type name: 'typedef int *pint;' +# 2: Dangling: 'typedef int *pint;' +# Dangling: the '*' will not be taken into account when aligning. +align_typedef_star_style = 2 # unsigned number + +# How to consider (or treat) the '&' in the alignment of typedefs. +# +# 0: Part of the typedef type, 'typedef int & intref;' (default) +# 1: Part of type name: 'typedef int &intref;' +# 2: Dangling: 'typedef int &intref;' +# Dangling: the '&' will not be taken into account when aligning. +align_typedef_amp_style = 2 # unsigned number + +# The span for aligning comments that end lines. +# +# 0 = Don't align (default). +align_right_cmt_span = 4 # unsigned number + +# Minimum number of columns between preceding text and a trailing comment in +# order for the comment to qualify for being aligned. Must be non-zero to have +# an effect. +align_right_cmt_gap = 0 # unsigned number + +# If aligning comments, whether to mix with comments after '}' and #endif with +# less than three spaces before the comment. +align_right_cmt_mix = false # true/false + +# Whether to only align trailing comments that are at the same brace level. +align_right_cmt_same_level = false # true/false + +# Minimum column at which to align trailing comments. Comments which are +# aligned beyond this column, but which can be aligned in a lesser column, +# may be "pulled in". +# +# 0 = Ignore (default). +align_right_cmt_at_col = 1 # unsigned number + +# The span for aligning function prototypes. +# +# 0 = Don't align (default). +align_func_proto_span = 3 # unsigned number + +# The threshold for aligning function prototypes. +# Use a negative number for absolute thresholds. +# +# 0 = No limit (default). +align_func_proto_thresh = 0 # number + +# Minimum gap between the return type and the function name. +align_func_proto_gap = 0 # unsigned number + +# Whether to align function prototypes on the 'operator' keyword instead of +# what follows. +align_on_operator = true # true/false + +# Whether to mix aligning prototype and variable declarations. If true, +# align_var_def_XXX options are used instead of align_func_proto_XXX options. +align_mix_var_proto = false # true/false + +# Whether to align single-line functions with function prototypes. +# Uses align_func_proto_span. +align_single_line_func = true # true/false + +# Whether to align the open brace of single-line functions. +# Requires align_single_line_func=true. Uses align_func_proto_span. +align_single_line_brace = true # true/false + +# Gap for align_single_line_brace. +align_single_line_brace_gap = 0 # unsigned number + +# (OC) The span for aligning Objective-C message specifications. +# +# 0 = Don't align (default). +align_oc_msg_spec_span = 0 # unsigned number + +# Whether to align macros wrapped with a backslash and a newline. This will +# not work right if the macro contains a multi-line comment. +align_nl_cont = true # true/false + +# Whether to align macro functions and variables together. +align_pp_define_together = false # true/false + +# The span for aligning on '#define' bodies. +# +# =0: Don't align (default) +# >0: Number of lines (including comments) between blocks +align_pp_define_span = 0 # unsigned number + +# The minimum space between label and value of a preprocessor define. +align_pp_define_gap = 0 # unsigned number + +# Whether to align lines that start with '<<' with previous '<<'. +# +# Default: true +align_left_shift = true # true/false + +# Whether to align text after 'asm volatile ()' colons. +align_asm_colon = false # true/false + +# (OC) Span for aligning parameters in an Objective-C message call +# on the ':'. +# +# 0 = Don't align. +align_oc_msg_colon_span = 0 # unsigned number + +# (OC) Whether to always align with the first parameter, even if it is too +# short. +align_oc_msg_colon_first = false # true/false + +# (OC) Whether to align parameters in an Objective-C '+' or '-' declaration +# on the ':'. +align_oc_decl_colon = false # true/false + +# +# Comment modification options +# + +# Try to wrap comments at N columns. +cmt_width = 140 # unsigned number + +# How to reflow comments. +# +# 0: No reflowing (apart from the line wrapping due to cmt_width) (default) +# 1: No touching at all +# 2: Full reflow +cmt_reflow_mode = 0 # unsigned number + +# Whether to convert all tabs to spaces in comments. If false, tabs in +# comments are left alone, unless used for indenting. +cmt_convert_tab_to_spaces = false # true/false + +# Whether to apply changes to multi-line comments, including cmt_width, +# keyword substitution and leading chars. +# +# Default: true +cmt_indent_multi = true # true/false + +# Whether to group c-comments that look like they are in a block. +cmt_c_group = false # true/false + +# Whether to put an empty '/*' on the first line of the combined c-comment. +cmt_c_nl_start = false # true/false + +# Whether to add a newline before the closing '*/' of the combined c-comment. +cmt_c_nl_end = false # true/false + +# Whether to change cpp-comments into c-comments. +cmt_cpp_to_c = false # true/false + +# Whether to group cpp-comments that look like they are in a block. Only +# meaningful if cmt_cpp_to_c=true. +cmt_cpp_group = false # true/false + +# Whether to put an empty '/*' on the first line of the combined cpp-comment +# when converting to a c-comment. +# +# Requires cmt_cpp_to_c=true and cmt_cpp_group=true. +cmt_cpp_nl_start = false # true/false + +# Whether to add a newline before the closing '*/' of the combined cpp-comment +# when converting to a c-comment. +# +# Requires cmt_cpp_to_c=true and cmt_cpp_group=true. +cmt_cpp_nl_end = false # true/false + +# Whether to put a star on subsequent comment lines. +cmt_star_cont = false # true/false + +# The number of spaces to insert at the start of subsequent comment lines. +cmt_sp_before_star_cont = 0 # unsigned number + +# The number of spaces to insert after the star on subsequent comment lines. +cmt_sp_after_star_cont = 0 # unsigned number + +# For multi-line comments with a '*' lead, remove leading spaces if the first +# and last lines of the comment are the same length. +# +# Default: true +cmt_multi_check_last = true # true/false + +# For multi-line comments with a '*' lead, remove leading spaces if the first +# and last lines of the comment are the same length AND if the length is +# bigger as the first_len minimum. +# +# Default: 4 +cmt_multi_first_len_minimum = 4 # unsigned number + +# Path to a file that contains text to insert at the beginning of a file if +# the file doesn't start with a C/C++ comment. If the inserted text contains +# '$(filename)', that will be replaced with the current file's name. +cmt_insert_file_header = "" # string + +# Path to a file that contains text to insert at the end of a file if the +# file doesn't end with a C/C++ comment. If the inserted text contains +# '$(filename)', that will be replaced with the current file's name. +cmt_insert_file_footer = "" # string + +# Path to a file that contains text to insert before a function definition if +# the function isn't preceded by a C/C++ comment. If the inserted text +# contains '$(function)', '$(javaparam)' or '$(fclass)', these will be +# replaced with, respectively, the name of the function, the javadoc '@param' +# and '@return' stuff, or the name of the class to which the member function +# belongs. +cmt_insert_func_header = "" # string + +# Path to a file that contains text to insert before a class if the class +# isn't preceded by a C/C++ comment. If the inserted text contains '$(class)', +# that will be replaced with the class name. +cmt_insert_class_header = "" # string + +# Path to a file that contains text to insert before an Objective-C message +# specification, if the method isn't preceded by a C/C++ comment. If the +# inserted text contains '$(message)' or '$(javaparam)', these will be +# replaced with, respectively, the name of the function, or the javadoc +# '@param' and '@return' stuff. +cmt_insert_oc_msg_header = "" # string + +# Whether a comment should be inserted if a preprocessor is encountered when +# stepping backwards from a function name. +# +# Applies to cmt_insert_oc_msg_header, cmt_insert_func_header and +# cmt_insert_class_header. +cmt_insert_before_preproc = false # true/false + +# Whether a comment should be inserted if a function is declared inline to a +# class definition. +# +# Applies to cmt_insert_func_header. +# +# Default: true +cmt_insert_before_inlines = true # true/false + +# Whether a comment should be inserted if the function is a class constructor +# or destructor. +# +# Applies to cmt_insert_func_header. +cmt_insert_before_ctor_dtor = false # true/false + +# +# Code modifying options (non-whitespace) +# + +# Add or remove braces on a single-line 'do' statement. +mod_full_brace_do = add # ignore/add/remove/force + +# Add or remove braces on a single-line 'for' statement. +mod_full_brace_for = add # ignore/add/remove/force + +# (Pawn) Add or remove braces on a single-line function definition. +mod_full_brace_function = ignore # ignore/add/remove/force + +# Add or remove braces on a single-line 'if' statement. Braces will not be +# removed if the braced statement contains an 'else'. +mod_full_brace_if = add # ignore/add/remove/force + +# Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either +# have, or do not have, braces. If true, braces will be added if any block +# needs braces, and will only be removed if they can be removed from all +# blocks. +# +# Overrides mod_full_brace_if. +mod_full_brace_if_chain = false # true/false + +# Whether to add braces to all blocks of an 'if'/'else if'/'else' chain. +# If true, mod_full_brace_if_chain will only remove braces from an 'if' that +# does not have an 'else if' or 'else'. +mod_full_brace_if_chain_only = false # true/false + +# Add or remove braces on single-line 'while' statement. +mod_full_brace_while = add # ignore/add/remove/force + +# Add or remove braces on single-line 'using ()' statement. +mod_full_brace_using = ignore # ignore/add/remove/force + +# Don't remove braces around statements that span N newlines +mod_full_brace_nl = 1 # unsigned number + +# Whether to prevent removal of braces from 'if'/'for'/'while'/etc. blocks +# which span multiple lines. +# +# Affects: +# mod_full_brace_for +# mod_full_brace_if +# mod_full_brace_if_chain +# mod_full_brace_if_chain_only +# mod_full_brace_while +# mod_full_brace_using +# +# Does not affect: +# mod_full_brace_do +# mod_full_brace_function +mod_full_brace_nl_block_rem_mlcond = false # true/false + +# Add or remove unnecessary parenthesis on 'return' statement. +mod_paren_on_return = remove # ignore/add/remove/force + +# (Pawn) Whether to change optional semicolons to real semicolons. +mod_pawn_semicolon = false # true/false + +# Whether to fully parenthesize Boolean expressions in 'while' and 'if' +# statement, as in 'if (a && b > c)' => 'if (a && (b > c))'. +mod_full_paren_if_bool = true # true/false + +# Whether to remove superfluous semicolons. +mod_remove_extra_semicolon = true # true/false + +# If a function body exceeds the specified number of newlines and doesn't have +# a comment after the close brace, a comment will be added. +mod_add_long_function_closebrace_comment = 0 # unsigned number + +# If a namespace body exceeds the specified number of newlines and doesn't +# have a comment after the close brace, a comment will be added. +mod_add_long_namespace_closebrace_comment = 0 # unsigned number + +# If a class body exceeds the specified number of newlines and doesn't have a +# comment after the close brace, a comment will be added. +mod_add_long_class_closebrace_comment = 0 # unsigned number + +# If a switch body exceeds the specified number of newlines and doesn't have a +# comment after the close brace, a comment will be added. +mod_add_long_switch_closebrace_comment = 0 # unsigned number + +# If an #ifdef body exceeds the specified number of newlines and doesn't have +# a comment after the #endif, a comment will be added. +mod_add_long_ifdef_endif_comment = 1 # unsigned number + +# If an #ifdef or #else body exceeds the specified number of newlines and +# doesn't have a comment after the #else, a comment will be added. +mod_add_long_ifdef_else_comment = 1 # unsigned number + +# Whether to sort consecutive single-line 'import' statements. +mod_sort_import = false # true/false + +# (C#) Whether to sort consecutive single-line 'using' statements. +mod_sort_using = false # true/false + +# Whether to sort consecutive single-line '#include' statements (C/C++) and +# '#import' statements (Objective-C). Be aware that this has the potential to +# break your code if your includes/imports have ordering dependencies. +mod_sort_include = false # true/false + +# Whether to move a 'break' that appears after a fully braced 'case' before +# the close brace, as in 'case X: { ... } break;' => 'case X: { ... break; }'. +mod_move_case_break = true # true/false + +# Add or remove braces around a fully braced case statement. Will only remove +# braces if there are no variable declarations in the block. +mod_case_brace = ignore # ignore/add/remove/force + +# Whether to remove a void 'return;' that appears as the last statement in a +# function. +mod_remove_empty_return = true # true/false + +# Add or remove the comma after the last value of an enumeration. +mod_enum_last_comma = ignore # ignore/add/remove/force + +# (OC) Whether to organize the properties. If true, properties will be +# rearranged according to the mod_sort_oc_property_*_weight factors. +mod_sort_oc_properties = false # true/false + +# (OC) Weight of a class property modifier. +mod_sort_oc_property_class_weight = 0 # number + +# (OC) Weight of 'atomic' and 'nonatomic'. +mod_sort_oc_property_thread_safe_weight = 0 # number + +# (OC) Weight of 'readwrite' when organizing properties. +mod_sort_oc_property_readwrite_weight = 0 # number + +# (OC) Weight of a reference type specifier ('retain', 'copy', 'assign', +# 'weak', 'strong') when organizing properties. +mod_sort_oc_property_reference_weight = 0 # number + +# (OC) Weight of getter type ('getter=') when organizing properties. +mod_sort_oc_property_getter_weight = 0 # number + +# (OC) Weight of setter type ('setter=') when organizing properties. +mod_sort_oc_property_setter_weight = 0 # number + +# (OC) Weight of nullability type ('nullable', 'nonnull', 'null_unspecified', +# 'null_resettable') when organizing properties. +mod_sort_oc_property_nullability_weight = 0 # number + +# +# Preprocessor options +# + +# Add or remove indentation of preprocessor directives inside #if blocks +# at brace level 0 (file-level). +pp_indent = ignore # ignore/add/remove/force + +# Whether to indent #if/#else/#endif at the brace level. If false, these are +# indented from column 1. +pp_indent_at_level = false # true/false + +# Specifies the number of columns to indent preprocessors per level +# at brace level 0 (file-level). If pp_indent_at_level=false, also specifies +# the number of columns to indent preprocessors per level +# at brace level > 0 (function-level). +# +# Default: 1 +pp_indent_count = 1 # unsigned number + +# Add or remove space after # based on pp_level of #if blocks. +pp_space = add # ignore/add/remove/force + +# Sets the number of spaces per level added with pp_space. +pp_space_count = 0 # unsigned number + +# The indent for '#region' and '#endregion' in C# and '#pragma region' in +# C/C++. Negative values decrease indent down to the first column. +pp_indent_region = 0 # number + +# Whether to indent the code between #region and #endregion. +pp_region_indent_code = false # true/false + +# If pp_indent_at_level=true, sets the indent for #if, #else and #endif when +# not at file-level. Negative values decrease indent down to the first column. +# +# =0: Indent preprocessors using output_tab_size +# >0: Column at which all preprocessors will be indented +pp_indent_if = 0 # number + +# Whether to indent the code between #if, #else and #endif. +pp_if_indent_code = false # true/false + +# Whether to indent '#define' at the brace level. If false, these are +# indented from column 1. +pp_define_at_level = false # true/false + +# Whether to ignore the '#define' body while formatting. +pp_ignore_define_body = false # true/false + +# Whether to indent case statements between #if, #else, and #endif. +# Only applies to the indent of the preprocesser that the case statements +# directly inside of. +# +# Default: true +pp_indent_case = true # true/false + +# Whether to indent whole function definitions between #if, #else, and #endif. +# Only applies to the indent of the preprocesser that the function definition +# is directly inside of. +# +# Default: true +pp_indent_func_def = true # true/false + +# Whether to indent extern C blocks between #if, #else, and #endif. +# Only applies to the indent of the preprocesser that the extern block is +# directly inside of. +# +# Default: true +pp_indent_extern = true # true/false + +# Whether to indent braces directly inside #if, #else, and #endif. +# Only applies to the indent of the preprocesser that the braces are directly +# inside of. +# +# Default: true +pp_indent_brace = true # true/false + +# +# Sort includes options +# + +# The regex for include category with priority 0. +include_category_0 = "" # string + +# The regex for include category with priority 1. +include_category_1 = "" # string + +# The regex for include category with priority 2. +include_category_2 = "" # string + +# +# Use or Do not Use options +# + +# true: indent_func_call_param will be used (default) +# false: indent_func_call_param will NOT be used +# +# Default: true +use_indent_func_call_param = true # true/false + +# The value of the indentation for a continuation line is calculated +# differently if the statement is: +# - a declaration: your case with QString fileName ... +# - an assignment: your case with pSettings = new QSettings( ... +# +# At the second case the indentation value might be used twice: +# - at the assignment +# - at the function call (if present) +# +# To prevent the double use of the indentation value, use this option with the +# value 'true'. +# +# true: indent_continue will be used only once +# false: indent_continue will be used every time (default) +use_indent_continue_only_once = false # true/false + +# The value might be used twice: +# - at the assignment +# - at the opening brace +# +# To prevent the double use of the indentation value, use this option with the +# value 'true'. +# +# true: indentation will be used only once +# false: indentation will be used every time (default) +indent_cpp_lambda_only_once = false # true/false + +# Whether to apply special formatting for Qt SIGNAL/SLOT macros. Essentially, +# this tries to format these so that they match Qt's normalized form (i.e. the +# result of QMetaObject::normalizedSignature), which can slightly improve the +# performance of the QObject::connect call, rather than how they would +# otherwise be formatted. +# +# See options_for_QT.cpp for details. +# +# Default: true +use_options_overriding_for_qt_macros = true # true/false + +# +# Warn levels - 1: error, 2: warning (default), 3: note +# + +# (C#) Warning is given if doing tab-to-\t replacement and we have found one +# in a C# verbatim string literal. +# +# Default: 2 +warn_level_tabs_found_in_verbatim_string_literals = 2 # unsigned number + +# Meaning of the settings: +# Ignore - do not do any changes +# Add - makes sure there is 1 or more space/brace/newline/etc +# Force - makes sure there is exactly 1 space/brace/newline/etc, +# behaves like Add in some contexts +# Remove - removes space/brace/newline/etc +# +# +# - Token(s) can be treated as specific type(s) with the 'set' option: +# `set tokenType tokenString [tokenString...]` +# +# Example: +# `set BOOL __AND__ __OR__` +# +# tokenTypes are defined in src/token_enum.h, use them without the +# 'CT_' prefix: 'CT_BOOL' => 'BOOL' +# +# +# - Token(s) can be treated as type(s) with the 'type' option. +# `type tokenString [tokenString...]` +# +# Example: +# `type int c_uint_8 Rectangle` +# +# This can also be achieved with `set TYPE int c_uint_8 Rectangle` +# +# +# To embed whitespace in tokenStrings use the '\' escape character, or quote +# the tokenStrings. These quotes are supported: "'` +# +# +# - Support for the auto detection of languages through the file ending can be +# added using the 'file_ext' command. +# `file_ext langType langString [langString..]` +# +# Example: +# `file_ext CPP .ch .cxx .cpp.in` +# +# langTypes are defined in uncrusify_types.h in the lang_flag_e enum, use +# them without the 'LANG_' prefix: 'LANG_CPP' => 'CPP' +# +# +# - Custom macro-based indentation can be set up using 'macro-open', +# 'macro-else' and 'macro-close'. +# `(macro-open | macro-else | macro-close) tokenString` +# +# Example: +# `macro-open BEGIN_TEMPLATE_MESSAGE_MAP` +# `macro-open BEGIN_MESSAGE_MAP` +# `macro-close END_MESSAGE_MAP` +# +# +# option(s) with 'not default' value: 164 +# From 7cbbb045ba5ea34d98d0b76f10e92051e230335a Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Mon, 28 Sep 2020 21:24:37 +0200 Subject: [PATCH 063/119] More Gitpod optimize --- .gitpod.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitpod.yml b/.gitpod.yml index 78437404c..3a70e3836 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -1,5 +1,5 @@ tasks: - - before: pip3 install -U platformio && brew install uncrustify + - before: brew install uncrustify command: platformio run -e tasmota image: From 7578a0217a887ae17caa7f6a62d348158c7d2ccc Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Mon, 28 Sep 2020 21:28:07 +0200 Subject: [PATCH 064/119] Install Platformio in Docker --- .gitpod.Dockerfile | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile index 9ca5bdf5c..f18497111 100644 --- a/.gitpod.Dockerfile +++ b/.gitpod.Dockerfile @@ -2,9 +2,4 @@ FROM gitpod/workspace-full USER gitpod -# Install custom tools, runtime, etc. using apt-get -# For example, the command below would install "bastet" - a command line tetris clone: -# -# RUN sudo apt-get -q update && # sudo apt-get install -yq bastet && # sudo rm -rf /var/lib/apt/lists/* -# -# More information: https://www.gitpod.io/docs/config-docker/ +RUN sudo pip3 install -U platformio From b6cdaf2574423e36578ffdb0b19f5134c1450546 Mon Sep 17 00:00:00 2001 From: joba-1 Date: Mon, 28 Sep 2020 22:08:38 +0200 Subject: [PATCH 065/119] add raw tsl2561 values to tele message --- tasmota/xsns_16_tsl2561.ino | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tasmota/xsns_16_tsl2561.ino b/tasmota/xsns_16_tsl2561.ino index 99c243329..573fc3b93 100644 --- a/tasmota/xsns_16_tsl2561.ino +++ b/tasmota/xsns_16_tsl2561.ino @@ -37,6 +37,8 @@ Tsl2561 Tsl(Wire); uint8_t tsl2561_type = 0; uint8_t tsl2561_valid = 0; uint32_t tsl2561_milliLux = 0; +uint32_t tsl2561_full = 0; +uint32_t tsl2561_ir = 0; char tsl2561_types[] = "TSL2561"; bool Tsl2561Read(void) @@ -47,15 +49,18 @@ bool Tsl2561Read(void) bool gain; Tsl2561::exposure_t exposure; uint16_t scaledFull, scaledIr; - uint32_t full, ir; if (Tsl.on()) { if (Tsl.id(id) && Tsl2561Util::autoGain(Tsl, gain, exposure, scaledFull, scaledIr) - && Tsl2561Util::normalizedLuminosity(gain, exposure, full = scaledFull, ir = scaledIr) - && Tsl2561Util::milliLux(full, ir, tsl2561_milliLux, Tsl2561::packageCS(id))) { + && Tsl2561Util::normalizedLuminosity(gain, exposure, tsl2561_full = scaledFull, tsl2561_ir = scaledIr)) { + if (! Tsl2561Util::milliLux(tsl2561_full, tsl2561_ir, tsl2561_milliLux, Tsl2561::packageCS(id))) { + tsl2561_milliLux = 0; + } } else{ tsl2561_milliLux = 0; + tsl2561_full = 0; + tsl2561_ir = 0; } } tsl2561_valid = SENSOR_MAX_MISS; @@ -94,8 +99,8 @@ void Tsl2561Show(bool json) { if (tsl2561_valid) { if (json) { - ResponseAppend_P(PSTR(",\"TSL2561\":{\"" D_JSON_ILLUMINANCE "\":%u.%03u}"), - tsl2561_milliLux / 1000, tsl2561_milliLux % 1000); + ResponseAppend_P(PSTR(",\"TSL2561\":{\"" D_JSON_ILLUMINANCE "\":%u.%03u,\"IR\":%u,\"Broadband\":%u}"), + tsl2561_milliLux / 1000, tsl2561_milliLux % 1000, tsl2561_ir, tsl2561_full); #ifdef USE_DOMOTICZ if (0 == tele_period) { DomoticzSensor(DZ_ILLUMINANCE, (tsl2561_milliLux + 500) / 1000); } #endif // USE_DOMOTICZ From 4864c29cfc8b3fb8dd75d5f869b893b66750f774 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 29 Sep 2020 08:46:35 +0200 Subject: [PATCH 066/119] Update .gitpod.Dockerfile --- .gitpod.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile index f18497111..909bcf681 100644 --- a/.gitpod.Dockerfile +++ b/.gitpod.Dockerfile @@ -2,4 +2,4 @@ FROM gitpod/workspace-full USER gitpod -RUN sudo pip3 install -U platformio +RUN pip3 install -U platformio && brew install uncrustify From 365802a693b7a98f483ccf5dc74f877654859546 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 29 Sep 2020 08:47:21 +0200 Subject: [PATCH 067/119] Update .gitpod.yml --- .gitpod.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitpod.yml b/.gitpod.yml index 3a70e3836..731fec2a1 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -1,6 +1,5 @@ -tasks: - - before: brew install uncrustify - command: platformio run -e tasmota + tasks: + - command: platformio run -e tasmota image: file: .gitpod.Dockerfile From e6ff129d0c66a887ccb7a0ce4f079486ce610d47 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 29 Sep 2020 11:08:03 +0200 Subject: [PATCH 068/119] Update xsns_77_vl53l1x.ino --- tasmota/xsns_77_vl53l1x.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasmota/xsns_77_vl53l1x.ino b/tasmota/xsns_77_vl53l1x.ino index 2176ee9ed..03c590fbd 100644 --- a/tasmota/xsns_77_vl53l1x.ino +++ b/tasmota/xsns_77_vl53l1x.ino @@ -28,7 +28,7 @@ \*********************************************************************************************/ #define XSNS_77 77 -#define XI2C_53 53 // See I2CDEVICES.md +#define XI2C_54 54 // See I2CDEVICES.md #include "VL53L1X.h" VL53L1X vl53l1x = VL53L1X(); // create object copy @@ -95,7 +95,7 @@ void Vl53l1Show(boolean json) { bool Xsns77(byte function) { - if (!I2cEnabled(XI2C_53)) { return false; } + if (!I2cEnabled(XI2C_54)) { return false; } bool result = false; if (FUNC_INIT == function) { From 5cf40fc059971ea129ea1857d2b0bac42ca26e9f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 29 Sep 2020 11:27:53 +0200 Subject: [PATCH 069/119] Add support for VL53L1X time of flight sensor Add support for VL53L1X time of flight sensor by Johann Obermeier --- RELEASENOTES.md | 1 + tasmota/CHANGELOG.md | 1 + tasmota/my_user_config.h | 2 +- tasmota/xsns_77_vl53l1x.ino | 8 ++++---- tools/decode-status.py | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 14e82b6f3..7e466cfe4 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -74,3 +74,4 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Add new shutter modes (#9244) - Add Zigbee auto-config when pairing - Add support for MLX90640 IR array temperature sensor by Christian Baars +- Add support for VL53L1X time of flight sensor by Johann Obermeier diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index f555c1324..907dd36fc 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -21,6 +21,7 @@ - Add new shutter modes (#9244) - Add Zigbee auto-config when pairing - Add support for MLX90640 IR array temperature sensor by Christian Baars +- Add support for VL53L1X time of flight sensor by Johann Obermeier ### 8.5.0 20200907 diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index d17ad40c2..eed9062f0 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -542,7 +542,7 @@ // #define USE_SPS30 // [I2cDriver30] Enable Sensiron SPS30 particle sensor (I2C address 0x69) (+1.7 code) #define USE_ADE7953 // [I2cDriver7] Enable ADE7953 Energy monitor as used on Shelly 2.5 (I2C address 0x38) (+1k5) // #define USE_VL53L0X // [I2cDriver31] Enable VL53L0x time of flight sensor (I2C address 0x29) (+4k code) -// #define USE_VL53L1X // [I2cDriver53] Enable support for VL53L1X sensor (I2C address 0x29) using Pololu VL53L1X library (+2k9 code) +// #define USE_VL53L1X // [I2cDriver54] Enable support for VL53L1X sensor (I2C address 0x29) using Pololu VL53L1X library (+2k9 code) // #define USE_MLX90614 // [I2cDriver32] Enable MLX90614 ir temp sensor (I2C address 0x5a) (+0.6k code) // #define USE_CHIRP // [I2cDriver33] Enable CHIRP soil moisture sensor (variable I2C address, default 0x20) // #define USE_PAJ7620 // [I2cDriver34] Enable PAJ7620 gesture sensor (I2C address 0x73) (+2.5k code) diff --git a/tasmota/xsns_77_vl53l1x.ino b/tasmota/xsns_77_vl53l1x.ino index 03c590fbd..c8e4bb64a 100644 --- a/tasmota/xsns_77_vl53l1x.ino +++ b/tasmota/xsns_77_vl53l1x.ino @@ -1,7 +1,7 @@ /* - xsns_77_vl53l1x.ino - VL53L1X + xsns_77_vl53l1x.ino - VL53L1X sensor support for Tasmota - Copyright (C) 2018 Theo Arends, Rui Marinho and Johann Obermeier + Copyright (C) 2020 Theo Arends, Rui Marinho and Johann Obermeier 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 @@ -74,7 +74,7 @@ void Vl53l1Every_Second(void) { } #endif // USE_DOMOTICZ -void Vl53l1Show(boolean json) { +void Vl53l1Show(bool json) { if (json) { #ifdef USE_DOMOTICZ if (0 == tele_period) { @@ -93,7 +93,7 @@ void Vl53l1Show(boolean json) { * Interface \*********************************************************************************************/ -bool Xsns77(byte function) +bool Xsns77(uint8_t function) { if (!I2cEnabled(XI2C_54)) { return false; } bool result = false; diff --git a/tools/decode-status.py b/tools/decode-status.py index 3a664b28c..f1c2c8302 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -229,7 +229,7 @@ a_features = [[ "USE_VEML7700","USE_MCP9808","USE_BL0940","USE_TELEGRAM", "USE_HP303B","USE_TCP_BRIDGE","USE_TELEINFO","USE_LMT01", "USE_PROMETHEUS","USE_IEM3000","USE_DYP","USE_I2S_AUDIO", - "USE_MLX90640","","","", + "USE_MLX90640","USE_VL53L1X","","", "","USE_TTGO_WATCH","USE_ETHERNET","USE_WEBCAM" ],[ "","","","", From 805f93cfab89e010d301da1fcb571a0d9d96fc14 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 29 Sep 2020 14:08:48 +0200 Subject: [PATCH 070/119] Redesign GPIO to 16-bit --- tasmota/support.ino | 42 +++++++-- tasmota/support_button.ino | 13 +-- tasmota/support_tasmota.ino | 6 +- tasmota/tasmota_template.h | 30 +++---- tasmota/xdrv_01_webserver.ino | 86 +++++++++++-------- ...02_analog_esp32.ino => xsns_02_analog.ino} | 17 +++- 6 files changed, 117 insertions(+), 77 deletions(-) rename tasmota/{xsns_02_analog_esp32.ino => xsns_02_analog.ino} (98%) diff --git a/tasmota/support.ino b/tasmota/support.ino index e23b4519b..e94170759 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -1142,6 +1142,27 @@ void TemplateConvert(uint8_t template8[], uint16_t template16[]) { template16[i] = GpioConvert(template8[i]); } template16[(sizeof(mytmplt) / 2) -2] = Adc0Convert(template8[sizeof(mytmplt8285) -1]); + + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("FNC: TemplateConvert")); + AddLogBuffer(LOG_LEVEL_DEBUG, template8, sizeof(mytmplt8285)); + AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t*)template16, sizeof(mytmplt) / 2, 2); +} + +void ConvertGpios(void) { + if (Settings.user_template8.flag != 255) { + // Convert 8-bit user template + TemplateConvert((uint8_t*)&Settings.user_template8, (uint16_t*)&Settings.user_template); + Settings.user_template8.flag = 255; + + for (uint32_t i = 0; i < sizeof(Settings.my_gp8.io); i++) { + Settings.my_gp.io[i] = GpioConvert(Settings.my_gp8.io[i]); + } + Settings.my_gp.io[(sizeof(myio) / 2) -1] = Adc0Convert(Settings.my_adc0); + + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("FNC: ConvertGpios")); + AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)&Settings.my_gp8.io, sizeof(myio8)); + AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t *)&Settings.my_gp.io, sizeof(myio) / 2, 2); + } } #endif // ESP8266 @@ -1247,28 +1268,29 @@ void GetInternalTemplate(void* ptr, uint32_t module, uint32_t option) { memcpy_P(&template8, &kModules8285[module_template - TMP_WEMOS], sizeof(template8)); } -// AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)&template8, sizeof(mytmplt)); +// AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)&template8, sizeof(mytmplt8285)); // template16 = GPIO 0,1,2,3,4,5,9,10,12,13,14,15,16,Adc,Flg uint16_t template16[(sizeof(mytmplt) / 2)] = { GPIO_NONE }; TemplateConvert(template8, template16); uint32_t index = 0; - uint32_t size = sizeof(mycfgio); // template16[module_template].gp + uint32_t size = sizeof(mycfgio); // template16[module_template].gp switch (option) { case 2: { - index = sizeof(template16) -2; // template16[module_template].flag + index = (sizeof(mytmplt) / 2) -1; // template16[module_template].flag size = 2; break; } case 3: { - size = sizeof(template16); // template16[module_template] + size = sizeof(mytmplt); // template16[module_template] break; } } memcpy(ptr, &template16[index], size); -// AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)ptr, size); + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("FNC: GetInternalTemplate option %d"), option); + AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t *)ptr, size / 2, 2); } #endif // ESP8266 @@ -1356,7 +1378,7 @@ uint32_t ValidPin(uint32_t pin, uint32_t gpio) // if (!is_8285 && !Settings.flag3.user_esp8285_enable) { // SetOption51 - Enable ESP8285 user GPIO's if ((WEMOS == Settings.module) && !Settings.flag3.user_esp8285_enable) { // SetOption51 - Enable ESP8285 user GPIO's - if ((pin == 9) || (pin == 10)) { + if ((9 == pin) || (10 == pin)) { return GPIO_NONE; // Disable possible flash GPIO9 and GPIO10 } } @@ -1366,6 +1388,11 @@ uint32_t ValidPin(uint32_t pin, uint32_t gpio) bool ValidGPIO(uint32_t pin, uint32_t gpio) { +#ifdef ESP8266 +#ifdef USE_ADC_VCC + if (17 == pin) { return false; } // ADC0 = GPIO17 +#endif +#endif return (GPIO_USER == ValidPin(pin, BGPIO(gpio))); // Only allow GPIO_USER pins } @@ -1465,6 +1492,9 @@ bool JsonTemplate(const char* dataBuf) if (obj[D_JSON_GPIO].success()) { #ifdef ESP8266 if (!obj[D_JSON_GPIO][13].success()) { // Old template + + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TPL: Converting template ...")); + uint8_t template8[sizeof(mytmplt8285)] = { GPIO_NONE }; for (uint32_t i = 0; i < ARRAY_SIZE(template8) -1; i++) { template8[i] = obj[D_JSON_GPIO][i] | 0; diff --git a/tasmota/support_button.ino b/tasmota/support_button.ino index c2979fccf..303de23ba 100644 --- a/tasmota/support_button.ino +++ b/tasmota/support_button.ino @@ -90,16 +90,14 @@ void ButtonInit(void) Button.present++; pinMode(Pin(GPIO_KEY1, i), bitRead(Button.no_pullup_mask, i) ? INPUT : ((16 == Pin(GPIO_KEY1, i)) ? INPUT_PULLDOWN_16 : INPUT_PULLUP)); } -/* #ifdef ESP8266 #ifndef USE_ADC_VCC - else if ((99 == Button.adc) && ((ADC0_BUTTON == my_adc0) || (ADC0_BUTTON_INV == my_adc0))) { + else if ((99 == Button.adc) && AdcButtonPresent(0)) { Button.present++; Button.adc = i; } #endif // USE_ADC_VCC #endif // ESP8266 -*/ } } @@ -169,14 +167,7 @@ void ButtonHandler(void) #ifndef USE_ADC_VCC if (Button.adc == button_index) { button_present = 1; -/* - if (ADC0_BUTTON_INV == my_adc0) { - button = (AdcRead(1) < 128); - } - else if (ADC0_BUTTON == my_adc0) { - button = (AdcRead(1) > 128); - } -*/ + button = AdcGetButton(0); } #endif // USE_ADC_VCC #else // ESP32 diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index 43e4ce548..4812ac788 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -1477,11 +1477,7 @@ void GpioInit(void) // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: Used GPIOs %d"), GPIO_SENSOR_END); #ifdef ESP8266 - if (Settings.user_template8.flag != 255) { - // Convert 8-bit user template - TemplateConvert((uint8_t*)&Settings.user_template8, (uint16_t*)&Settings.user_template); - Settings.user_template8.flag = 255; - } + ConvertGpios(); #endif // ESP8266 for (uint32_t i = 0; i < ARRAY_SIZE(Settings.user_template.gp.io); i++) { diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index da59989cc..e587a4a7e 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -596,19 +596,6 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_ETH_PHY_MDC), AGPIO(GPIO_ETH_PHY_MDIO), // Ethernet #endif -#endif // ESP32 - -#ifdef USE_ADC -#ifdef ESP8266 - AGPIO(GPIO_ADC_INPUT), // Analog inputs - AGPIO(GPIO_ADC_TEMP), // Thermistor - AGPIO(GPIO_ADC_LIGHT), // Light sensor - AGPIO(GPIO_ADC_BUTTON), // Button - AGPIO(GPIO_ADC_BUTTON_INV), - AGPIO(GPIO_ADC_RANGE), // Range - AGPIO(GPIO_ADC_CT_POWER), // Current - AGPIO(GPIO_ADC_JOY), // Joystick -#else // ESP32 AGPIO(GPIO_ADC_INPUT) + MAX_ADCS, // Analog inputs AGPIO(GPIO_ADC_TEMP) + MAX_ADCS, // Thermistor AGPIO(GPIO_ADC_LIGHT) + MAX_ADCS, // Light sensor @@ -617,10 +604,23 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_ADC_RANGE) + MAX_ADCS, // Range AGPIO(GPIO_ADC_CT_POWER) + MAX_ADCS, // Current AGPIO(GPIO_ADC_JOY) + MAX_ADCS, // Joystick -#endif // ESP8266 or ESP32 -#endif // USE_ADC +#endif // ESP32 }; +#ifdef ESP8266 +const uint16_t kAdcNiceList[] PROGMEM = { + GPIO_NONE, // Not used + AGPIO(GPIO_ADC_INPUT), // Analog inputs + AGPIO(GPIO_ADC_TEMP), // Thermistor + AGPIO(GPIO_ADC_LIGHT), // Light sensor + AGPIO(GPIO_ADC_BUTTON), // Button + AGPIO(GPIO_ADC_BUTTON_INV), + AGPIO(GPIO_ADC_RANGE), // Range + AGPIO(GPIO_ADC_CT_POWER), // Current + AGPIO(GPIO_ADC_JOY), // Joystick +}; +#endif // ESP8266 + /*********************************************************************************************\ * ATTENTION: No user changeable features beyond this point - do not add templates !!! \*********************************************************************************************/ diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index dda6c9a73..b73a264e5 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -486,13 +486,14 @@ const char HTTP_SCRIPT_TEMPLATE2[] PROGMEM = "if(8==i){j=12;}" "sk(g[i],j);" // Set GPIO "j++;" - "}" - "g=o.shift();"; // FLAG + "}"; +// "g=o.shift();"; // FLAG const char HTTP_SCRIPT_TEMPLATE3[] PROGMEM = "\";" - "sk(g&15," STR(ADC0_PIN) ");" // Set ADC0 - "g>>=4;"; + "sk(g[13]," STR(ADC0_PIN) ");"; // Set ADC0 +// "g>>=4;"; const char HTTP_SCRIPT_TEMPLATE4[] PROGMEM = + "g=o.shift();" // FLAG "for(i=0;i<" STR(GPIO_FLAG_USED) ";i++){" "p=(g>>i)&1;" "eb('c'+i).checked=p;" // Set FLAG checkboxes @@ -1760,16 +1761,19 @@ void HandleTemplateConfiguration(void) WSContentSend_P(HTTP_SCRIPT_TEMPLATE2); -//#ifdef ESP8266 -// WSContentSend_P(PSTR("os=\"")); -// for (uint32_t i = 0; i < ADC0_END; i++) { // FLAG: }2'0'>None (0)}3}2'17'>Analog (17)}3... -// if (1 == i) { -// WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, ADC0_USER, D_SENSOR_USER, ADC0_USER); // }2'15'>User (15)}3 -// } +#ifdef ESP8266 + WSContentSend_P(PSTR("os=\"")); + for (uint32_t i = 0; i < ARRAY_SIZE(kAdcNiceList); i++) { // FLAG: }2'0'>None}3}2'17'>Analog}3... + if (1 == i) { + WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE_NO_INDEX, AGPIO(GPIO_USER), D_SENSOR_USER); // }2'15'>User}3 + } // WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, i, GetTextIndexed(stemp, sizeof(stemp), i, kAdc0Names), i); -// } -// WSContentSend_P(HTTP_SCRIPT_TEMPLATE3); -//#endif // ESP8266 + uint32_t ridx = pgm_read_word(kAdcNiceList + i) & 0xFFE0; + uint32_t midx = BGPIO(ridx); + WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE_NO_INDEX, ridx, GetTextIndexed(stemp, sizeof(stemp), midx, kSensorNames)); + } + WSContentSend_P(HTTP_SCRIPT_TEMPLATE3); +#endif // ESP8266 WSContentSend_P(HTTP_SCRIPT_TEMPLATE4); for (uint32_t i = 0; i < sizeof(kModuleNiceList); i++) { // "}2'%d'>%s (%d)}3" - "}2'0'>Sonoff Basic (1)}3" @@ -1797,15 +1801,15 @@ void HandleTemplateConfiguration(void) // ((9==i)||(10==i)) ? WebColor(COL_TEXT_WARNING) : WebColor(COL_TEXT), i, (0==i) ? " style='width:200px'" : "", i); //#else // ESP32 -#ifdef ESP8266 - WSContentSend_P(PSTR("%s%d"), - ((9==i)||(10==i)) ? WebColor(COL_TEXT_WARNING) : WebColor(COL_TEXT), - (17==i) ? PSTR(D_ADC) : PSTR(D_GPIO), (17==i) ? 0 : i, - (0==i) ? " style='width:150px'" : "", i, i); -#else // ESP32 +//#ifdef ESP8266 +// WSContentSend_P(PSTR("%s%d"), +// ((9==i)||(10==i)) ? WebColor(COL_TEXT_WARNING) : WebColor(COL_TEXT), +// (17==i) ? PSTR(D_ADC) : PSTR(D_GPIO), (17==i) ? 0 : i, +// (0==i) ? " style='width:150px'" : "", i, i); +//#else // ESP32 WSContentSend_P(PSTR("" D_GPIO "%d"), ((9==i)||(10==i)) ? WebColor(COL_TEXT_WARNING) : WebColor(COL_TEXT), i, (0==i) ? " style='width:150px'" : "", i, i); -#endif // ESP8266 +//#endif // ESP8266 WSContentSend_P(PSTR(""), i); } } @@ -1864,7 +1868,7 @@ void TemplateSaveSettings(void) //#endif // ESP32 for (uint32_t i = 0; i < GPIO_FLAG_USED; i++) { snprintf_P(webindex, sizeof(webindex), PSTR("c%d"), i); - uint32_t state = Webserver->hasArg(webindex) << i +4; // FLAG + uint32_t state = Webserver->hasArg(webindex) << i; // FLAG flag += state; } WebGetArg("g99", tmp, sizeof(tmp)); // BASE @@ -1950,15 +1954,23 @@ void HandleModuleConfiguration(void) } } -//#ifdef ESP8266 -//#ifndef USE_ADC_VCC -// WSContentSend_P(PSTR("os=\"")); -// for (uint32_t j = 0; j < ADC0_END; j++) { -// WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, j, GetTextIndexed(stemp, sizeof(stemp), j, kAdc0Names), j); -// } -// WSContentSend_P(PSTR("\";sk(%d," STR(ADC0_PIN) ");"), Settings.my_adc0); -//#endif // USE_ADC_VCC -//#endif // ESP8266 +#ifdef ESP8266 +#ifndef USE_ADC_VCC + WSContentSend_P(PSTR("os=\"")); +/* + for (uint32_t j = 0; j < ADC0_END; j++) { + WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, j, GetTextIndexed(stemp, sizeof(stemp), j, kAdc0Names), j); + } + WSContentSend_P(PSTR("\";sk(%d," STR(ADC0_PIN) ");"), Settings.my_adc0); +*/ + for (uint32_t i = 0; i < ARRAY_SIZE(kAdcNiceList); i++) { // FLAG: }2'0'>None}3}2'17'>Analog}3... + uint32_t ridx = pgm_read_word(kAdcNiceList + i) & 0xFFE0; + uint32_t midx = BGPIO(ridx); + WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE_NO_INDEX, ridx, GetTextIndexed(stemp, sizeof(stemp), midx, kSensorNames)); + } + WSContentSend_P(PSTR("\";sk(%d," STR(ADC0_PIN) ");"), Settings.my_gp.io[(sizeof(myio) / 2) -1]); +#endif // USE_ADC_VCC +#endif // ESP8266 WSContentSend_P(PSTR("}wl(sl);")); @@ -1974,15 +1986,15 @@ void HandleModuleConfiguration(void) // (WEMOS==my_module_type)?stemp:"", i, (0==i)? D_SENSOR_BUTTON "1":(1==i)? D_SERIAL_OUT :(3==i)? D_SERIAL_IN :((9==i)||(10==i))? sesp8285 :(12==i)? D_SENSOR_RELAY "1":(13==i)? D_SENSOR_LED "1i":(14==i)? D_SENSOR :"", i); //#else // ESP32 -#ifdef ESP8266 - WSContentSend_P(PSTR("%s %s%d"), - (WEMOS==my_module_type)?stemp:"", - (17==i) ? PSTR(D_ADC) : PSTR(D_GPIO), (17==i) ? 0 : i, - i, i); -#else // ESP32 +//#ifdef ESP8266 +// WSContentSend_P(PSTR("%s %s%d"), +// (WEMOS==my_module_type)?stemp:"", +// (17==i) ? PSTR(D_ADC) : PSTR(D_GPIO), (17==i) ? 0 : i, +// i, i); +//#else // ESP32 WSContentSend_P(PSTR("%s " D_GPIO "%d"), (WEMOS==my_module_type)?stemp:"", i, i, i); -#endif +//#endif WSContentSend_P(PSTR(""), i); //#endif // ESP8266 } diff --git a/tasmota/xsns_02_analog_esp32.ino b/tasmota/xsns_02_analog.ino similarity index 98% rename from tasmota/xsns_02_analog_esp32.ino rename to tasmota/xsns_02_analog.ino index 9cba562bd..f476a98d7 100644 --- a/tasmota/xsns_02_analog_esp32.ino +++ b/tasmota/xsns_02_analog.ino @@ -1,5 +1,5 @@ /* - xsns_02_analog_esp32.ino - ESP32 ADC support for Tasmota + xsns_02_analog.ino - ADC support for Tasmota Copyright (C) 2020 Theo Arends @@ -17,7 +17,6 @@ along with this program. If not, see . */ -//#ifdef ESP32 #ifdef USE_ADC /*********************************************************************************************\ * ADC support for up to 8 channels on GPIO32 to GPIO39 @@ -250,6 +249,19 @@ void AdcEvery250ms(void) { } #endif // USE_RULES +bool AdcButtonPresent(uint32_t idx) { + return ((ADC_BUTTON == Adc[idx].type) || (ADC_BUTTON_INV == Adc[idx].type)); +} + +uint8_t AdcGetButton(uint32_t idx) { + if (ADC_BUTTON_INV == Adc[idx].type) { + return (AdcRead(Adc[idx].pin, 1) < 128); + } + else if (ADC_BUTTON == Adc[idx].type) { + return (AdcRead(Adc[idx].pin, 1) > 128); + } +} + uint16_t AdcGetLux(uint32_t idx) { int adc = AdcRead(Adc[idx].pin, 2); // Source: https://www.allaboutcircuits.com/projects/design-a-luxmeter-using-a-light-dependent-resistor/ @@ -584,4 +596,3 @@ bool Xsns02(uint8_t function) { } #endif // USE_ADC -//#endif // ESP32 From b780ff1a989d99d248d786b707cf5eaa9fb1d58c Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 29 Sep 2020 14:34:59 +0200 Subject: [PATCH 071/119] Delete Tasmota_build.yml --- .github/workflows/Tasmota_build.yml | 1501 --------------------------- 1 file changed, 1501 deletions(-) delete mode 100644 .github/workflows/Tasmota_build.yml diff --git a/.github/workflows/Tasmota_build.yml b/.github/workflows/Tasmota_build.yml deleted file mode 100644 index 4a890b89d..000000000 --- a/.github/workflows/Tasmota_build.yml +++ /dev/null @@ -1,1501 +0,0 @@ -name: Build_firmware - -on: - push: - -jobs: - tasmota_pull: - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Use latest Tasmota development - run: | - git config --local user.name "Platformio BUILD" - git switch -c master - git remote add -f Tasmota "https://github.com/arendst/Tasmota.git" - git merge Tasmota/development --allow-unrelated-histories - - name: Push Tasmota # Push updates of latest Tasmota development to repo - uses: ad-m/github-push-action@master - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - branch: 'development' - force: true - - - tasmota: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-minimal: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-minimal - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-lite: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-lite - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-knx: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-knx - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-sensors: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-sensors - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-display: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-display - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-ir: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-ir - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-ircustom: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-ircustom - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-zbbridge: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-zbbridge - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - tasmota-BG: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-BG - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-BR: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-BR - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-CN: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-CN - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-CZ: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-CZ - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-DE: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-DE - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-ES: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-ES - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-FR: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-FR - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-GR: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-GR - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-HE: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-HE - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-HU: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-HU - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-IT: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-IT - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-KO: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-KO - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-NL: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-NL - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-PL: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-PL - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-PT: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-PT - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-RO: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-RO - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-RU: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-RU - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-SE: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-SE - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-SK: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-SK - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-TR: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-TR - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-TW: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-TW - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota-UK: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota-UK - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32 - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-minimal: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-minimal - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-lite: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-lite - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-webcam: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-webcam - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-knx: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-knx - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-sensors: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-sensors - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-display: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-display - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-ir: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-ir - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-ircustom: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-ircustom - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-BG: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-BG - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-BR: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-BR - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-CN: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-CN - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-CZ: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-CZ - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-DE: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-DE - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-ES: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-ES - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-FR: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-FR - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-GR: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-GR - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-HE: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-HE - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-HU: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-HU - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-IT: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-IT - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-KO: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-KO - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-NL: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-NL - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-PL: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-PL - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-PT: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-PT - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-RO: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-RO - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-RU: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-RU - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-SE: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-SE - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-SK: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-SK - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-TR: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-TR - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-TW: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-TW - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - tasmota32-UK: - needs: tasmota_pull - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - name: Set up Python - uses: actions/setup-python@v1 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U platformio - platformio upgrade --dev - platformio update - - name: Run PlatformIO - run: | - platformio run -e tasmota32-UK - - uses: actions/upload-artifact@v2 - with: - name: firmware - path: ./build_output/firmware - - - Upload: - needs: [tasmota-UK, tasmota32-ircustom, tasmota32-UK, tasmota32-TW, tasmota32-TR] - runs-on: ubuntu-latest - continue-on-error: true - steps: - - uses: actions/checkout@v1 - - uses: actions/download-artifact@v2 - with: - name: firmware - path: ./mv_firmware - - name: Display structure of downloaded files - run: ls -R - working-directory: ./mv_firmware - - name: Move firmware files in sub-folders - run: | - mkdir -p ./firmware/tasmota/languages - mkdir -p ./firmware/tasmota32/languages - mkdir -p ./firmware/tasmota32/ESP32_needed_files/ - [ ! -f ./mv_firmware/tasmota.* ] || mv ./mv_firmware/tasmota.* ./firmware/tasmota/ - [ ! -f ./mv_firmware/tasmota-sensors.* ] || mv ./mv_firmware/tasmota-sensors.* ./firmware/tasmota/ - [ ! -f ./mv_firmware/tasmota-minimal.* ] || mv ./mv_firmware/tasmota-minimal.* ./firmware/tasmota/ - [ ! -f ./mv_firmware/tasmota-lite.* ] || mv ./mv_firmware/tasmota-lite.* ./firmware/tasmota/ - [ ! -f ./mv_firmware/tasmota-ir*.* ] || mv ./mv_firmware/tasmota-ir*.* ./firmware/tasmota/ - [ ! -f ./mv_firmware/tasmota-display.* ] || mv ./mv_firmware/tasmota-display.* ./firmware/tasmota/ - [ ! -f ./mv_firmware/tasmota-knx.* ] || mv ./mv_firmware/tasmota-knx.* ./firmware/tasmota/ - [ ! -f ./mv_firmware/tasmota-zbbridge.* ] || mv ./mv_firmware/tasmota-zbbridge.* ./firmware/tasmota/ - [ ! -f ./mv_firmware/tasmota32.* ] || mv ./mv_firmware/tasmota32.* ./firmware/tasmota32/ - [ ! -f ./mv_firmware/tasmota32-sensors.* ] || mv ./mv_firmware/tasmota32-sensors.* ./firmware/tasmota32/ - [ ! -f ./mv_firmware/tasmota32-minimal.* ] || mv ./mv_firmware/tasmota32-minimal.* ./firmware/tasmota32/ - [ ! -f ./mv_firmware/tasmota32-lite.* ] || mv ./mv_firmware/tasmota32-lite.* ./firmware/tasmota32/ - [ ! -f ./mv_firmware/tasmota32-ir*.* ] || mv ./mv_firmware/tasmota32-ir*.* ./firmware/tasmota32/ - [ ! -f ./mv_firmware/tasmota32-display.* ] || mv ./mv_firmware/tasmota32-display.* ./firmware/tasmota32/ - [ ! -f ./mv_firmware/tasmota32-web*.* ] || mv ./mv_firmware/tasmota32-web*.* ./firmware/tasmota32/ - [ ! -f ./mv_firmware/tasmota32-knx.* ] || mv ./mv_firmware/tasmota32-knx.* ./firmware/tasmota32/ - [ ! -f ./mv_firmware/tasmota32* ] || mv ./mv_firmware/tasmota32* ./firmware/tasmota32/languages/ - [ ! -f ./mv_firmware/* ] || mv ./mv_firmware/* ./firmware/tasmota/languages/ - [ ! -f ./tools/Esptool/ESP32/*.* ] || mv ./tools/Esptool/ESP32/*.* ./firmware/tasmota32/ESP32_needed_files/ - [ ! -f ./FIRMWARE.md ] || mv -f ./FIRMWARE.md ./README.md - - name: Commit files # transfer the new binaries back into the repository - run: | - git config --local user.name "Platformio BUILD" - git rm -r --cached . - git add ./README.md - git add -f ./firmware/*.* - git commit -m "Tasmota ESP Binaries http://tasmota.com" - - name: Push changes # push the firmware files to branch firmware - uses: ad-m/github-push-action@master - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - branch: 'firmware' - force: true From 895ed2d041560dcd4aa59cb535c5614f0287ccf5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 29 Sep 2020 14:41:45 +0200 Subject: [PATCH 072/119] Redesign GPIO to 16-bit --- tasmota/settings.ino | 2 +- tasmota/support.ino | 2 +- tasmota/xdrv_01_webserver.ino | 4 ++-- tasmota/xsns_02_analog.ino | 4 +--- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/tasmota/settings.ino b/tasmota/settings.ino index c1f3cb4de..767cc9ed8 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -1259,7 +1259,7 @@ void SettingsDelta(void) Settings.ledmask = APP_LEDMASK; } if (Settings.version < 0x0605000A) { -// Settings.my_adc0 = ADC0_NONE; + Settings.my_adc0 = GPIO_NONE; } if (Settings.version < 0x0605000D) { Settings.param[P_IR_UNKNOW_THRESHOLD] = IR_RCV_MIN_UNKNOWN_SIZE; diff --git a/tasmota/support.ino b/tasmota/support.ino index e94170759..892bedd0f 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -1390,7 +1390,7 @@ bool ValidGPIO(uint32_t pin, uint32_t gpio) { #ifdef ESP8266 #ifdef USE_ADC_VCC - if (17 == pin) { return false; } // ADC0 = GPIO17 + if (ADC0_PIN == pin) { return false; } // ADC0 = GPIO17 #endif #endif return (GPIO_USER == ValidPin(pin, BGPIO(gpio))); // Only allow GPIO_USER pins diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index b73a264e5..1258d10d8 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -1804,7 +1804,7 @@ void HandleTemplateConfiguration(void) //#ifdef ESP8266 // WSContentSend_P(PSTR("%s%d"), // ((9==i)||(10==i)) ? WebColor(COL_TEXT_WARNING) : WebColor(COL_TEXT), -// (17==i) ? PSTR(D_ADC) : PSTR(D_GPIO), (17==i) ? 0 : i, +// (ADC0_PIN==i) ? PSTR(D_ADC) : PSTR(D_GPIO), (ADC0_PIN==i) ? 0 : i, // (0==i) ? " style='width:150px'" : "", i, i); //#else // ESP32 WSContentSend_P(PSTR("" D_GPIO "%d"), @@ -1989,7 +1989,7 @@ void HandleModuleConfiguration(void) //#ifdef ESP8266 // WSContentSend_P(PSTR("%s %s%d"), // (WEMOS==my_module_type)?stemp:"", -// (17==i) ? PSTR(D_ADC) : PSTR(D_GPIO), (17==i) ? 0 : i, +// (ADC0_PIN==i) ? PSTR(D_ADC) : PSTR(D_GPIO), (ADC0_PIN==i) ? 0 : i, // i, i); //#else // ESP32 WSContentSend_P(PSTR("%s " D_GPIO "%d"), diff --git a/tasmota/xsns_02_analog.ino b/tasmota/xsns_02_analog.ino index f476a98d7..8da803115 100644 --- a/tasmota/xsns_02_analog.ino +++ b/tasmota/xsns_02_analog.ino @@ -95,11 +95,9 @@ struct { } Adc[MAX_ADCS]; #ifdef ESP8266 - bool adcAttachPin(uint8_t pin) { - return true; + return (ADC0_PIN == pin); } - #endif void AdcSaveSettings(uint32_t idx) { From 7b567d23ea48d27cf65ff559976cb6c42993f9ba Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 29 Sep 2020 14:43:11 +0200 Subject: [PATCH 073/119] Force rebuild --- RELEASENOTES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 7e466cfe4..29ad008f8 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -74,4 +74,4 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Add new shutter modes (#9244) - Add Zigbee auto-config when pairing - Add support for MLX90640 IR array temperature sensor by Christian Baars -- Add support for VL53L1X time of flight sensor by Johann Obermeier +- Add support for VL53L1X time of flight sensor by Johann Obermeier From 8a2b8d5ff1a6100bbeb020fc4e45507d01f37319 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 29 Sep 2020 14:46:57 +0200 Subject: [PATCH 074/119] Build firmwares only with branch development --- .github/workflows/Tasmota_build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/Tasmota_build.yml b/.github/workflows/Tasmota_build.yml index 4a890b89d..ee4bd9b21 100644 --- a/.github/workflows/Tasmota_build.yml +++ b/.github/workflows/Tasmota_build.yml @@ -2,6 +2,7 @@ name: Build_firmware on: push: + branches: development jobs: tasmota_pull: From c00d7035d92aad276d3906c4f9ab0a2c3296c460 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 29 Sep 2020 18:10:21 +0200 Subject: [PATCH 075/119] Redesign GPIO to 16-bit --- tasmota/settings.h | 12 ++--- tasmota/settings.ino | 6 +-- tasmota/support.ino | 65 ++++++------------------ tasmota/support_command.ino | 41 +++++++-------- tasmota/support_tasmota.ino | 13 ----- tasmota/tasmota.h | 2 +- tasmota/tasmota.ino | 14 ----- tasmota/tasmota_template.h | 17 +++---- tasmota/xdrv_01_webserver.ino | 96 +---------------------------------- tasmota/xsns_02_analog.ino | 24 ++++++--- 10 files changed, 69 insertions(+), 221 deletions(-) diff --git a/tasmota/settings.h b/tasmota/settings.h index 6df543660..17229145a 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -424,13 +424,13 @@ struct { SysBitfield3 flag3; // 3A0 uint8_t switchmode[MAX_SWITCHES]; // 3A4 (6.0.0b - moved from 0x4CA) -//#ifdef ESP8266 // char ex_friendlyname[4][33]; // 3AC // char ex_switch_topic[33]; // 430 -//#else // ESP32 + myio my_gp; // 3AC - 2 x 18 bytes (ESP8266) / 2 x 40 bytes (ESP32) #ifdef ESP8266 - uint8_t free_esp8266_3D0[44]; // 3D0 + uint16_t gpio16_converted; // 3D0 + uint8_t free_esp8266_3D2[42]; // 3D2 #endif mytmplt user_template; // 3FC - 2 x 15 bytes (ESP8266) / 2 x 37 bytes (ESP32) #ifdef ESP8266 @@ -455,12 +455,12 @@ struct { uint8_t ws_width[3]; // 481 #ifdef ESP8266 - myio8 my_gp8; // 484 - 17 bytes (ESP8266) + myio8 ex_my_gp8; // 484 - 17 bytes (ESP8266) - free once gpio16 is active #else // ESP32 uint8_t free_esp32_484[17]; // 484 #endif // ESP8266 - ESP32 + uint8_t ex_my_adc0; // 495 free once gpio16 is active - uint8_t my_adc0; // 495 uint16_t light_pixels; // 496 uint8_t light_color[5]; // 498 uint8_t light_correction; // 49D @@ -514,7 +514,7 @@ struct { char user_template_name[15]; // 720 15 bytes - Backward compatibility since v8.2.0.3 #ifdef ESP8266 - mytmplt8285 user_template8; // 72F 14 bytes (ESP8266) + mytmplt8285 ex_user_template8; // 72F 14 bytes (ESP8266) - free once gpio16 is active #else // ESP32 uint8_t free_esp32_72f[14]; // 72F #endif // ESP8266 - ESP32 diff --git a/tasmota/settings.ino b/tasmota/settings.ino index 767cc9ed8..66c1c6712 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -1193,8 +1193,8 @@ void SettingsDelta(void) } } for (uint32_t i = 0; i < ARRAY_SIZE(Settings.my_gp.io); i++) { - if (Settings.my_gp8.io[i] >= GPI8_SWT5) { // Move up from GPIO_SWT5 to GPIO_KEY1 - Settings.my_gp8.io[i] += 4; + if (Settings.ex_my_gp8.io[i] >= GPI8_SWT5) { // Move up from GPI8_SWT5 to GPI8_KEY1 + Settings.ex_my_gp8.io[i] += 4; } } } @@ -1259,7 +1259,7 @@ void SettingsDelta(void) Settings.ledmask = APP_LEDMASK; } if (Settings.version < 0x0605000A) { - Settings.my_adc0 = GPIO_NONE; + Settings.ex_my_adc0 = GPIO_NONE; } if (Settings.version < 0x0605000D) { Settings.param[P_IR_UNKNOW_THRESHOLD] = IR_RCV_MIN_UNKNOWN_SIZE; diff --git a/tasmota/support.ino b/tasmota/support.ino index 892bedd0f..413747f7f 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -1143,36 +1143,32 @@ void TemplateConvert(uint8_t template8[], uint16_t template16[]) { } template16[(sizeof(mytmplt) / 2) -2] = Adc0Convert(template8[sizeof(mytmplt8285) -1]); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("FNC: TemplateConvert")); - AddLogBuffer(LOG_LEVEL_DEBUG, template8, sizeof(mytmplt8285)); - AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t*)template16, sizeof(mytmplt) / 2, 2); +// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("FNC: TemplateConvert")); +// AddLogBuffer(LOG_LEVEL_DEBUG, template8, sizeof(mytmplt8285)); +// AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t*)template16, sizeof(mytmplt) / 2, 2); } void ConvertGpios(void) { - if (Settings.user_template8.flag != 255) { + if (Settings.gpio16_converted != 0xF5A0) { // Convert 8-bit user template - TemplateConvert((uint8_t*)&Settings.user_template8, (uint16_t*)&Settings.user_template); - Settings.user_template8.flag = 255; + TemplateConvert((uint8_t*)&Settings.ex_user_template8, (uint16_t*)&Settings.user_template); - for (uint32_t i = 0; i < sizeof(Settings.my_gp8.io); i++) { - Settings.my_gp.io[i] = GpioConvert(Settings.my_gp8.io[i]); + for (uint32_t i = 0; i < sizeof(Settings.ex_my_gp8.io); i++) { + Settings.my_gp.io[i] = GpioConvert(Settings.ex_my_gp8.io[i]); } - Settings.my_gp.io[(sizeof(myio) / 2) -1] = Adc0Convert(Settings.my_adc0); + Settings.my_gp.io[(sizeof(myio) / 2) -1] = Adc0Convert(Settings.ex_my_adc0); + Settings.gpio16_converted = 0xF5A0; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("FNC: ConvertGpios")); - AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)&Settings.my_gp8.io, sizeof(myio8)); - AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t *)&Settings.my_gp.io, sizeof(myio) / 2, 2); +// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("FNC: ConvertGpios")); +// AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)&Settings.ex_my_gp8.io, sizeof(myio8)); +// AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t *)&Settings.my_gp.io, sizeof(myio) / 2, 2); } } #endif // ESP8266 uint32_t ICACHE_RAM_ATTR Pin(uint32_t gpio, uint32_t index = 0); uint32_t ICACHE_RAM_ATTR Pin(uint32_t gpio, uint32_t index) { -//#ifdef ESP8266 -// uint16_t real_gpio = gpio + index; -//#else // ESP32 uint16_t real_gpio = (gpio << 5) + index; -//#endif // ESP8266 - ESP32 for (uint32_t i = 0; i < ARRAY_SIZE(gpio_pin); i++) { if (gpio_pin[i] == real_gpio) { return i; // Pin number configured for gpio @@ -1289,20 +1285,15 @@ void GetInternalTemplate(void* ptr, uint32_t module, uint32_t option) { } memcpy(ptr, &template16[index], size); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("FNC: GetInternalTemplate option %d"), option); - AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t *)ptr, size / 2, 2); +// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("FNC: GetInternalTemplate option %d"), option); +// AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t *)ptr, size / 2, 2); } #endif // ESP8266 void ModuleGpios(myio *gp) { -//#ifdef ESP8266 -// uint8_t *dest = (uint8_t *)gp; -// uint8_t src[ARRAY_SIZE(Settings.user_template.gp.io)]; -//#else // ESP32 uint16_t *dest = (uint16_t *)gp; uint16_t src[ARRAY_SIZE(Settings.user_template.gp.io)]; -//#endif // ESP8266 - ESP32 memset(dest, GPIO_NONE, sizeof(myio)); if (USER_MODULE == Settings.module) { @@ -1396,19 +1387,7 @@ bool ValidGPIO(uint32_t pin, uint32_t gpio) return (GPIO_USER == ValidPin(pin, BGPIO(gpio))); // Only allow GPIO_USER pins } -//#ifdef ESP8266 -//bool ValidAdc(void) { -// gpio_flag flag = ModuleFlag(); -// uint32_t template_adc0 = flag.data &15; -// return (ADC0_USER == template_adc0); -//} -//#endif // ESP8266 - -//#ifdef ESP8266 -//bool GetUsedInModule(uint32_t val, uint8_t *arr) -//#else // ESP32 bool GetUsedInModule(uint32_t val, uint16_t *arr) -//#endif // ESP8266 - ESP32 { int offset = 0; @@ -1471,8 +1450,8 @@ bool GetUsedInModule(uint32_t val, uint16_t *arr) bool JsonTemplate(const char* dataBuf) { - // Old: {"NAME":"Generic","GPIO":[17,254,29,254,7,254,254,254,138,254,139,254,254],"FLAG":1,"BASE":255} - // New: {"NAME":"Generic16","GPIO":[17,254,29,254,7,254,254,254,138,254,139,254,254,254],"FLAG":1,"BASE":255} + // Old: {"NAME":"Shelly 2.5","GPIO":[56,0,17,0,21,83,0,0,6,82,5,22,156],"FLAG":2,"BASE":18} + // New: {"NAME":"Shelly 2.5","GPIO":[320,0,32,0,224,193,0,0,640,192,608,225,3456,4736],"FLAG":0,"BASE":18} if (strlen(dataBuf) < 9) { return false; } // Workaround exception if empty JSON like {} - Needs checks @@ -1507,15 +1486,11 @@ bool JsonTemplate(const char* dataBuf) } else { #endif for (uint32_t i = 0; i < ARRAY_SIZE(Settings.user_template.gp.io); i++) { -// #ifdef ESP8266 -// Settings.user_template.gp.io[i] = obj[D_JSON_GPIO][i] | 0; -// #else // ESP32 uint16_t gpio = obj[D_JSON_GPIO][i] | 0; if (gpio == (AGPIO(GPIO_NONE) +1)) { gpio = AGPIO(GPIO_USER); } Settings.user_template.gp.io[i] = gpio; -// #endif } if (obj[D_JSON_FLAG].success()) { Settings.user_template.flag.data = obj[D_JSON_FLAG] | 0; @@ -1524,10 +1499,6 @@ bool JsonTemplate(const char* dataBuf) } #endif } -// if (obj[D_JSON_FLAG].success()) { -// uint32_t flag = obj[D_JSON_FLAG] | 0; -// memcpy(&Settings.user_template.flag, &flag, sizeof(gpio_flag)); -// } if (obj[D_JSON_BASE].success()) { uint32_t base = obj[D_JSON_BASE]; if ((0 == base) || !ValidTemplateModule(base -1)) { base = 18; } @@ -1540,15 +1511,11 @@ void TemplateJson(void) { Response_P(PSTR("{\"" D_JSON_NAME "\":\"%s\",\"" D_JSON_GPIO "\":["), SettingsText(SET_TEMPLATE_NAME)); for (uint32_t i = 0; i < ARRAY_SIZE(Settings.user_template.gp.io); i++) { -//#ifdef ESP8266 -// ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Settings.user_template.gp.io[i]); -//#else // ESP32 uint16_t gpio = Settings.user_template.gp.io[i]; if (gpio == AGPIO(GPIO_USER)) { gpio = AGPIO(GPIO_NONE) +1; } ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", gpio); -//#endif } ResponseAppend_P(PSTR("],\"" D_JSON_FLAG "\":%d,\"" D_JSON_BASE "\":%d}"), Settings.user_template.flag, Settings.user_template_base +1); } diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index 3558808c7..4272d3a0c 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -1119,19 +1119,11 @@ void CmndGpio(void) if (ValidGPIO(XdrvMailbox.index, cmodule.io[XdrvMailbox.index]) && (XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < AGPIO(GPIO_SENSOR_END))) { bool present = false; for (uint32_t i = 0; i < ARRAY_SIZE(kGpioNiceList); i++) { -//#ifdef ESP8266 -// uint32_t midx = pgm_read_byte(kGpioNiceList + i); -// if (midx == XdrvMailbox.payload) { -// present = true; -// break; -// } -//#else // ESP32 uint32_t midx = pgm_read_word(kGpioNiceList + i); if ((XdrvMailbox.payload >= (midx & 0xFFE0)) && (XdrvMailbox.payload < midx)) { present = true; break; } -//#endif // ESP8266 - ESP32 } if (present) { for (uint32_t i = 0; i < ARRAY_SIZE(Settings.my_gp.io); i++) { @@ -1146,7 +1138,7 @@ void CmndGpio(void) Response_P(PSTR("{")); bool jsflg = false; for (uint32_t i = 0; i < ARRAY_SIZE(Settings.my_gp.io); i++) { - if (ValidGPIO(i, cmodule.io[i]) || ((AGPIO(GPIO_USER) == XdrvMailbox.payload) && !FlashPin(i))) { + if (ValidGPIO(i, cmodule.io[i]) || ((255 == XdrvMailbox.payload) && !FlashPin(i))) { if (jsflg) { ResponseAppend_P(PSTR(",")); } jsflg = true; uint32_t sensor_type = Settings.my_gp.io[i]; @@ -1158,7 +1150,6 @@ void CmndGpio(void) } char sindex[4] = { 0 }; uint32_t sensor_name_idx = BGPIO(sensor_type); -//#ifdef ESP32 uint32_t nice_list_search = sensor_type & 0xFFE0; for (uint32_t j = 0; j < ARRAY_SIZE(kGpioNiceList); j++) { uint32_t nls_idx = pgm_read_word(kGpioNiceList + j); @@ -1167,7 +1158,6 @@ void CmndGpio(void) break; } } -//#endif // ESP32 const char *sensor_names = kSensorNames; if (sensor_name_idx > GPIO_FIX_START) { sensor_name_idx = sensor_name_idx - GPIO_FIX_START -1; @@ -1186,20 +1176,13 @@ void CmndGpio(void) } } -void CmndGpios(void) -{ +void ShowGpios(const uint16_t *NiceList, uint32_t size, uint32_t offset, uint32_t &lines) { myio cmodule; ModuleGpios(&cmodule); - uint32_t lines = 1; bool jsflg = false; - for (uint32_t i = 0; i < ARRAY_SIZE(kGpioNiceList); i++) { -//#ifdef ESP8266 -// uint32_t midx = pgm_read_byte(kGpioNiceList + i); -// uint32_t ridx = midx; -//#else // ESP32 - uint32_t ridx = pgm_read_word(kGpioNiceList + i) & 0xFFE0; + for (uint32_t i = offset; i < size; i++) { // Skip ADC_NONE + uint32_t ridx = pgm_read_word(NiceList + i) & 0xFFE0; uint32_t midx = BGPIO(ridx); -//#endif // ESP8266 - ESP32 if ((XdrvMailbox.payload != 255) && GetUsedInModule(midx, cmodule.io)) { continue; } if (!jsflg) { Response_P(PSTR("{\"" D_CMND_GPIOS "%d\":{"), lines); @@ -1208,19 +1191,31 @@ void CmndGpios(void) } jsflg = true; char stemp1[TOPSZ]; - if ((ResponseAppend_P(PSTR("\"%d\":\"%s\""), ridx, GetTextIndexed(stemp1, sizeof(stemp1), midx, kSensorNames)) > (LOGSZ - TOPSZ)) || (i == ARRAY_SIZE(kGpioNiceList) -1)) { + if ((ResponseAppend_P(PSTR("\"%d\":\"%s\""), ridx, GetTextIndexed(stemp1, sizeof(stemp1), midx, kSensorNames)) > (LOGSZ - TOPSZ)) || (i == size -1)) { ResponseJsonEndEnd(); MqttPublishPrefixTopic_P(RESULT_OR_STAT, XdrvMailbox.command); jsflg = false; lines++; } } +} + +void CmndGpios(void) +{ + uint32_t lines = 1; + ShowGpios(kGpioNiceList, ARRAY_SIZE(kGpioNiceList), 0, lines); +#ifdef ESP8266 +#ifndef USE_ADC_VCC + ShowGpios(kAdcNiceList, ARRAY_SIZE(kAdcNiceList), 1, lines); +#endif // USE_ADC_VCC +#endif // ESP8266 mqtt_data[0] = '\0'; } void CmndTemplate(void) { - // {"NAME":"Generic","GPIO":[17,254,29,254,7,254,254,254,138,254,139,254,254],"FLAG":1,"BASE":255} + // {"NAME":"Shelly 2.5","GPIO":[320,0,32,0,224,193,0,0,640,192,608,225,3456,4736],"FLAG":0,"BASE":18} + bool error = false; if (strstr(XdrvMailbox.data, "{") == nullptr) { // If no JSON it must be parameter diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index 4812ac788..62ba70a33 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -1499,19 +1499,6 @@ void GpioInit(void) my_module.io[i] = def_gp.io[i]; // Force Template override } } -//#ifdef ESP8266 -// if ((Settings.my_adc0 >= ADC0_END) && (Settings.my_adc0 < ADC0_USER)) { -// Settings.my_adc0 = ADC0_NONE; // Fix not supported sensor ids in module -// } -// else if (Settings.my_adc0 > ADC0_NONE) { -// my_adc0 = Settings.my_adc0; // Set User selected Module sensors -// } -// my_module_flag = ModuleFlag(); -// uint32_t template_adc0 = my_module_flag.data &15; -// if ((template_adc0 > ADC0_NONE) && (template_adc0 < ADC0_USER)) { -// my_adc0 = template_adc0; // Force Template override -// } -//#endif for (uint32_t i = 0; i < ARRAY_SIZE(my_module.io); i++) { uint32_t mpin = ValidPin(i, my_module.io[i]); diff --git a/tasmota/tasmota.h b/tasmota/tasmota.h index 622c8211b..3a9c7ab9e 100644 --- a/tasmota/tasmota.h +++ b/tasmota/tasmota.h @@ -83,7 +83,7 @@ const uint8_t MAX_BUTTON_TEXT = 16; // Max number of GUI button labels const uint8_t MAX_GROUP_TOPICS = 4; // Max number of Group Topics const uint8_t MAX_DEV_GROUP_NAMES = 4; // Max number of Device Group names #ifdef ESP8266 -const uint8_t MAX_ADCS = 1; // Max number of ADC pins +const uint8_t MAX_ADCS = 1; // Max number of ESP8266 ADC pins #else const uint8_t MAX_ADCS = 8; // Max number of ESP32 ADC pins (ADC2 pins are unusable with Wifi enabled) #endif diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index 8da42b961..111df2e4a 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -115,11 +115,7 @@ uint16_t tele_period = 9999; // Tele period timer uint16_t blink_counter = 0; // Number of blink cycles uint16_t seriallog_timer = 0; // Timer to disable Seriallog uint16_t syslog_timer = 0; // Timer to re-enable syslog_level - -//#ifdef ESP32 uint16_t gpio_pin[MAX_GPIO_PIN] = { 0 }; // GPIO functions indexed by pin number -//#endif // ESP32 - int16_t save_data_counter; // Counter and flag for config save to Flash RulesBitfield rules_flag; // Rule state flags (16 bits) uint8_t mqtt_cmnd_blocked = 0; // Ignore flag for publish command @@ -128,11 +124,6 @@ uint8_t state_250mS = 0; // State 250msecond per second flag uint8_t latching_relay_pulse = 0; // Latching relay pulse timer uint8_t ssleep; // Current copy of Settings.sleep uint8_t blinkspeed = 1; // LED blink rate - -//#ifdef ESP8266 -//uint8_t gpio_pin[MAX_GPIO_PIN] = { 0 }; // GPIO functions indexed by pin number -//#endif // ESP8266 - ESP32 - uint8_t active_device = 1; // Active device in ExecuteCommandPower uint8_t leds_present = 0; // Max number of LED supported uint8_t led_inverted = 0; // LED inverted flag (1 = (0 = On, 1 = Off)) @@ -149,7 +140,6 @@ uint8_t masterlog_level = 0; // Master log level used to override uint8_t seriallog_level; // Current copy of Settings.seriallog_level uint8_t syslog_level; // Current copy of Settings.syslog_level uint8_t my_module_type; // Current copy of Settings.module or user template type -uint8_t my_adc0 = 0; // Active copy of Module ADC0 uint8_t last_source = 0; // Last command source uint8_t shutters_present = 0; // Number of actual define shutters uint8_t prepped_loglevel = 0; // Delayed log level message @@ -171,7 +161,6 @@ bool is_8285 = false; // Hardware device ESP8266EX (0) or bool skip_light_fade; // Temporarily skip light fading bool restart_halt = false; // Do not restart but stay in wait loop myio my_module; // Active copy of Module GPIOs (17 x 8 bits) -//gpio_flag my_module_flag; // Active copy of Template GPIO flags StateBitfield global_state; // Global states (currently Wifi and Mqtt) (8 bits) char my_version[33]; // Composed version string char my_image[33]; // Code image and/or commit @@ -276,9 +265,6 @@ void setup(void) { for (uint32_t i = 0; i < ARRAY_SIZE(Settings.my_gp.io); i++) { Settings.my_gp.io[i] = GPIO_NONE; // Reset user defined GPIO disabling sensors } -//#ifdef ESP8266 -// Settings.my_adc0 = ADC0_NONE; // Reset user defined ADC0 disabling sensors -//#endif } if (RtcReboot.fast_reboot_count > Settings.param[P_BOOT_LOOP_OFFSET] +4) { // Restarted 6 times Settings.module = Settings.fallback_module; // Reset module to fallback module diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index e587a4a7e..53841b333 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -590,12 +590,12 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_WEBCAM_PSCLK), AGPIO(GPIO_WEBCAM_HSD) + MAX_WEBCAM_HSD, AGPIO(GPIO_WEBCAM_PSRCS), -#endif +#endif // USE_WEBCAM #ifdef USE_ETHERNET AGPIO(GPIO_ETH_PHY_POWER), AGPIO(GPIO_ETH_PHY_MDC), AGPIO(GPIO_ETH_PHY_MDIO), // Ethernet -#endif +#endif // USE_ETHERNET AGPIO(GPIO_ADC_INPUT) + MAX_ADCS, // Analog inputs AGPIO(GPIO_ADC_TEMP) + MAX_ADCS, // Thermistor AGPIO(GPIO_ADC_LIGHT) + MAX_ADCS, // Light sensor @@ -621,10 +621,6 @@ const uint16_t kAdcNiceList[] PROGMEM = { }; #endif // ESP8266 -/*********************************************************************************************\ - * ATTENTION: No user changeable features beyond this point - do not add templates !!! -\*********************************************************************************************/ - // User selectable ADC functionality enum UserSelectableAdc { ADC_NONE, // Not used @@ -640,13 +636,17 @@ enum UserSelectableAdc { // ADC_SWITCH_INV, ADC_END }; +/*********************************************************************************************\ + * ATTENTION: No user changeable features beyond this point - do not add templates !!! +\*********************************************************************************************/ + #ifdef ESP8266 #define MAX_GPI8_PIN 17 // Number of supported GPIO (0..16) #define FLASH_PINS 6 // Number of flash chip pins -#define ADC0_PIN 17 // Pin number of ADC0 #define MAX_GPIO_PIN 18 // Number of supported GPIO (0..16 + ADC0) +#define ADC0_PIN 17 // Pin number of ADC0 #define MIN_FLASH_PINS 4 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8 and 11) #define MAX_USER_PINS 14 // MAX_GPIO_PIN - MIN_FLASH_PINS #define WEMOS_MODULE 17 // Wemos module @@ -731,8 +731,7 @@ typedef struct MYTMPLT { #ifdef ESP8266 // User selectable GPIO functionality -// ATTENTION: Only add at the end of this list just before GPI8_SENSOR_END -// Then add the same name(s) in a nice location in array kGpioNiceList +// ATTENTION: No additions are supported enum LegacyUserSelectablePins { GPI8_NONE, // Not used GPI8_DHT11, // DHT11 diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index 1258d10d8..c878ae5ca 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -368,16 +368,12 @@ const char HTTP_SCRIPT_CONSOL[] PROGMEM = "wl(h);"; // Add console command key eventlistener after name has been synced with id (= wl(jd)) #endif //USE_UNISHOX_COMPRESSION -const char HTTP_MODULE_TEMPLATE_REPLACE[] PROGMEM = - "}2%d'>%s (%d}3"; // }2 and }3 are used in below os.replace - const char HTTP_MODULE_TEMPLATE_REPLACE_INDEX[] PROGMEM = "}2%d'>%s (%d)}3"; // }2 and }3 are used in below os.replace const char HTTP_MODULE_TEMPLATE_REPLACE_NO_INDEX[] PROGMEM = "}2%d'>%s}3"; // }2 and }3 are used in below os.replace -#if defined(USE_UNISHOX_COMPRESSION) && defined(ESP32) -// no compression on ESP8266, we would lose 16 bytes +#if defined(USE_UNISHOX_COMPRESSION) const size_t HTTP_SCRIPT_MODULE_TEMPLATE_SIZE = 602; const char HTTP_SCRIPT_MODULE_TEMPLATE_COMPRESSED[] PROGMEM = "\x33\xBF\xAC\xF1\xD4\x2B\xC7\x83\x02\xF8\x3A\xDC\xE4\x1B\x3B\xBA\x75\x1A\x8E\xF1" "\xED\x33\xBF\xAC\x3E\x09\x81\x8B\x1A\xFA\x8E\x81\xFD\xDD\x32\x61\x31\xAF\xA8\xEE" @@ -405,14 +401,6 @@ const char HTTP_SCRIPT_MODULE_TEMPLATE_COMPRESSED[] PROGMEM = "\x33\xBF\xAC\xF1\ #define HTTP_SCRIPT_MODULE_TEMPLATE Decompress(HTTP_SCRIPT_MODULE_TEMPLATE_COMPRESSED,HTTP_SCRIPT_MODULE_TEMPLATE_SIZE).c_str() #else const char HTTP_SCRIPT_MODULE_TEMPLATE[] PROGMEM = -//#ifdef ESP8266 -// "var os;" -// "function sk(s,g){" // s = value, g = id and name -// "var o=os.replace(/}2/g,\"
,
,,,, + // check that there is at least one comma in the parameters char *p; - char *str = strtok_r(XdrvMailbox.data, ", ", &p); - if (p == nullptr) { - return IE_INVALID_RAWDATA; - } + char *str = strtok_r(XdrvMailbox.data, ",", &p); + if (p == nullptr) { return IE_INVALID_RAWDATA; } - // repeat + // repeat is Index-1, so by default repeat = 0 (no repeat) uint16_t repeat = XdrvMailbox.index > 0 ? XdrvMailbox.index - 1 : 0; - uint16_t freq = atoi(str); - if (!freq && (*str != '0')) { // First parameter is any string - uint16_t count = 0; - char *q = p; - for (; *q; count += (*q++ == ',')); - if (count < 2) { - return IE_INVALID_RAWDATA; - } // Parameters must be at least 3 + // count commas in parameters, after the first token skipped + uint16_t count = 0; + char *q = p; + for (; *q; count += (*q++ == ',')); - if (strcasecmp(str, "gc") == 0) { //if first parameter is gc then we process global cache data else it is raw - uint16_t GC[count+1]; - for (uint32_t i = 0; i <= count; i++) { - GC[i] = strtol(strtok_r(nullptr, ", ", &p), nullptr, 0); - if (!GC[i]) { - return IE_INVALID_RAWDATA; - } - } - irsend_active = true; - for (uint32_t r = 0; r <= repeat; r++) { - irsend->sendGC(GC, count+1); - } - return IE_NO_ERROR; - } - - uint16_t parm[count]; - for (uint32_t i = 0; i < count; i++) { - parm[i] = strtol(strtok_r(nullptr, ", ", &p), nullptr, 0); - if (!parm[i]) { - if (!i) { - parm[0] = 38000; // Frequency default to 38kHz - } else { - return IE_INVALID_RAWDATA; // Other parameters may not be 0 - } - } - } - - uint16_t i = 0; - if (count < 4) { - // IRsend raw,0,889,000000100110000001001 - uint16_t mark = parm[1] *2; // Protocol where 0 = t, 1 = 2t (RC5) - if (3 == count) { - if (parm[2] < parm[1]) { - // IRsend raw,0,889,2,000000100110000001001 - mark = parm[1] * parm[2]; // Protocol where 0 = t1, 1 = t1*t2 (Could be RC5) - } else { - // IRsend raw,0,889,1778,000000100110000001001 - mark = parm[2]; // Protocol where 0 = t1, 1 = t2 (Could be RC5) - } - } - uint16_t raw_array[strlen(p)]; // Bits - for (; *p; *p++) { - if (*p == '0') { - raw_array[i++] = parm[1]; // Space - } - else if (*p == '1') { - raw_array[i++] = mark; // Mark - } - } - irsend_active = true; - for (uint32_t r = 0; r <= repeat; r++) { - irsend->sendRaw(raw_array, i, parm[0]); - if (r < repeat) { // if it's not the last message - irsend->space(40000); // since we don't know the inter-message gap, place an arbitrary 40ms gap - } - } - } - else if (6 == count) { // NEC Protocol - // IRsend raw,0,8620,4260,544,411,1496,010101101000111011001110000000001100110000000001100000000000000010001100 - uint16_t raw_array[strlen(p)*2+3]; // Header + bits + end - raw_array[i++] = parm[1]; // Header mark - raw_array[i++] = parm[2]; // Header space - uint32_t inter_message_32 = (parm[1] + parm[2]) * 3; // compute an inter-message gap (32 bits) - uint16_t inter_message = (inter_message_32 > 65000) ? 65000 : inter_message_32; // avoid 16 bits overflow - for (; *p; *p++) { - if (*p == '0') { - raw_array[i++] = parm[3]; // Bit mark - raw_array[i++] = parm[4]; // Zero space - } - else if (*p == '1') { - raw_array[i++] = parm[3]; // Bit mark - raw_array[i++] = parm[5]; // One space - } - } - raw_array[i++] = parm[3]; // Trailing mark - irsend_active = true; - for (uint32_t r = 0; r <= repeat; r++) { - irsend->sendRaw(raw_array, i, parm[0]); - if (r < repeat) { // if it's not the last message - irsend->space(inter_message); // since we don't know the inter-message gap, place an arbitrary 40ms gap - } - } - } - else { - return IE_INVALID_RAWDATA; // Invalid number of parameters - } + // analyze first parameter + if (strcasecmp(str, "gc") == 0) { + // Global Cache protocol + // IRsend gc,xxx,xxx,... + return IrRemoteSendGC(&p, count, repeat); + } else if (strcasecmp(str, "raw") == 0) { + // IRsend raw,,, (one space = zero space *2) + // IRsend raw,,,, + // IRsend raw,,,, + // IRsend raw,,
,
,,,, + return IrRemoteSendRawFormatted(&p, count, repeat); } else { - if (!freq) { freq = 38000; } // Default to 38kHz - uint16_t count = 0; - char *q = p; - for (; *q; count += (*q++ == ',')); - if (0 == count) { - return IE_INVALID_RAWDATA; - } - - // IRsend 0,896,876,900,888,894,876,1790,874,872,1810,1736,948,872,880,872,936,872,1792,900,888,1734 - count++; - if (count < 200) { - uint16_t raw_array[count]; // It's safe to use stack for up to 200 packets (limited by mqtt_data length) - for (uint32_t i = 0; i < count; i++) { - raw_array[i] = strtol(strtok_r(nullptr, ", ", &p), nullptr, 0); // Allow decimal (20496) and hexadecimal (0x5010) input - } - -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: stack count %d"), count); - - irsend_active = true; - for (uint32_t r = 0; r <= repeat; r++) { - irsend->sendRaw(raw_array, count, freq); - } - } else { - uint16_t *raw_array = reinterpret_cast(malloc(count * sizeof(uint16_t))); - if (raw_array == nullptr) { - return IE_INVALID_RAWDATA; - } - - for (uint32_t i = 0; i < count; i++) { - raw_array[i] = strtol(strtok_r(nullptr, ", ", &p), nullptr, 0); // Allow decimal (20496) and hexadecimal (0x5010) input - } - -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: heap count %d"), count); - - irsend_active = true; - for (uint32_t r = 0; r <= repeat; r++) { - irsend->sendRaw(raw_array, count, freq); - } - free(raw_array); - } + // standard raw + // IRsend ,, ... + // IRsend , + return IrRemoteSendRawStandard(&p, count, repeat); } - - return IE_NO_ERROR; } void CmndIrSend(void) @@ -616,6 +802,9 @@ void IrRemoteCmndResponse(uint32_t error) case IE_UNSUPPORTED_PROTOCOL: Response_P(PSTR("{\"" D_CMND_IRSEND "\":\"" D_JSON_WRONG " " D_JSON_IRHVAC_PROTOCOL " (%s)\"}"), listSupportedProtocols(false).c_str()); break; + case IE_MEMORY: + ResponseCmndChar_P(PSTR(D_JSON_MEMORY_ERROR)); + break; default: // IE_NO_ERROR ResponseCmndDone(); } From 36d49d082dd70b10896184ebefc9f9f694ded49e Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 1 Oct 2020 23:10:17 +0200 Subject: [PATCH 090/119] Extend IR Raw compat to regular IR code --- tasmota/xdrv_05_irremote.ino | 114 ++++++++++++++++++++++++++++++----- 1 file changed, 99 insertions(+), 15 deletions(-) diff --git a/tasmota/xdrv_05_irremote.ino b/tasmota/xdrv_05_irremote.ino index 690dc0c61..da60ed813 100644 --- a/tasmota/xdrv_05_irremote.ino +++ b/tasmota/xdrv_05_irremote.ino @@ -17,6 +17,41 @@ along with this program. If not, see . */ +/* +Below is the Pyhton3 code to decompress IR comact format. + +====================================================================== +import re + +def ir_expand(ir_compact): + count = ir_compact.count(',') # number of occurence of comma + + if count > 1: + return "Unsupported format" + + if count == 1: + ir_compact = input.split(',')[1] # if 1 comma, skip the frequency + + arr = re.findall("(\d+|[A-Za-z])", ir_compact) + + comp_table = [] # compression history table + arr2 = [] # output + + for elt in arr: + if len(elt) == 1: + c = ord(elt.upper()) - ord('A') + if c >= len(arr): return "Error index undefined" + arr2.append(comp_table[c]) + else: + comp_table.append(elt) + arr2.append(elt) + + out = ",".join(arr2) + + return out +====================================================================== + */ + #if defined(USE_IR_REMOTE) && !defined(USE_IR_REMOTE_FULL) /*********************************************************************************************\ * IR Remote send and receive using IRremoteESP8266 library @@ -25,6 +60,7 @@ #define XDRV_05 5 #include +#include enum IrErrors { IE_NO_ERROR, IE_INVALID_RAWDATA, IE_INVALID_JSON, IE_SYNTAX_IRSEND }; @@ -34,6 +70,44 @@ const char kIrRemoteCommands[] PROGMEM = "|" D_CMND_IRSEND ; void (* const IrRemoteCommand[])(void) PROGMEM = { &CmndIrSend }; +/*********************************************************************************************\ + * Class used to make a compact IR Raw format. + * + * We round timings to the closest 10ms value, + * and store up to last 26 values with seen. + * A value already seen is encoded with a letter indicating the position in the table. +\*********************************************************************************************/ + +class IRRawTable { +public: + IRRawTable() : timings() {} // zero initialize the array + + int32_t getTimingForLetter(uint8_t l) const { + l = toupper(l); + if ((l < 'A') || (l > 'Z')) { return -1; } + return timings[l - 'A']; + } + uint8_t findOrAdd(uint16_t t) { + if (0 == t) { return 0; } + + for (uint32_t i=0; i<26; i++) { + if (timings[i] == t) { return i + 'A'; } + if (timings[i] == 0) { timings[i] = t; break; } // add new value + } + return 0; // not found + } + void add(uint16_t t) { + if (0 == t) { return; } + + for (uint32_t i=0; i<26; i++) { + if (timings[i] == 0) { timings[i] = t; break; } // add new value + } + } + +protected: + uint16_t timings[26]; +}; + // Based on IRremoteESP8266.h enum decode_type_t static const uint8_t MAX_STANDARD_IR = NEC; // this is the last code mapped to decode_type_t const char kIrRemoteProtocols[] PROGMEM = "UNKNOWN|RC5|RC6|NEC"; @@ -133,25 +207,35 @@ void IrReceiveCheck(void) ResponseAppend_P(PSTR(",\"" D_JSON_IR_HASH "\":%s"), svalue); } + IRRawTable raw_table; + bool prev_number = false; // was the previous value a number, meaning we may need a comma prefix + bool ir_high = true; // alternate high/low + // Add raw data in a compact format if (Settings.flag3.receive_raw) { // SetOption58 - Add IR Raw data to JSON message - ResponseAppend_P(PSTR(",\"" D_JSON_IR_RAWDATA "\":[")); - uint16_t i; - for (i = 1; i < results.rawlen; i++) { - if (i > 1) { ResponseAppend_P(PSTR(",")); } - uint32_t usecs; - for (usecs = results.rawbuf[i] * kRawTick; usecs > UINT16_MAX; usecs -= UINT16_MAX) { - ResponseAppend_P(PSTR("%d,0,"), UINT16_MAX); + ResponseAppend_P(PSTR(",\"" D_JSON_IR_RAWDATA "\":\"")); + size_t rawlen = results.rawlen; + uint32_t i; + + for (i = 1; i < rawlen; i++) { + // round to closest 10ms + uint32_t raw_val_millis = results.rawbuf[i] * kRawTick; + uint16_t raw_dms = (raw_val_millis*2 + 5) / 10; // in 5 micro sec steps + // look if the data is already seen + uint8_t letter = raw_table.findOrAdd(raw_dms); + if (letter) { + if (!ir_high) { letter = tolower(letter); } + ResponseAppend_P(PSTR("%c"), letter); + prev_number = false; + } else { + // number + ResponseAppend_P(PSTR("%c%d"), ir_high ? '+' : '-', (uint32_t)raw_dms * 5); + prev_number = true; } - ResponseAppend_P(PSTR("%d"), usecs); + ir_high = !ir_high; if (strlen(mqtt_data) > sizeof(mqtt_data) - 40) { break; } // Quit if char string becomes too long } - uint16_t extended_length = results.rawlen - 1; - for (uint32_t j = 0; j < results.rawlen - 1; j++) { - uint32_t usecs = results.rawbuf[j] * kRawTick; - // Add two extra entries for multiple larger than UINT16_MAX it is. - extended_length += (usecs / (UINT16_MAX + 1)) * 2; - } - ResponseAppend_P(PSTR("],\"" D_JSON_IR_RAWDATA "Info\":[%d,%d,%d]"), extended_length, i -1, results.overflow); + uint16_t extended_length = getCorrectedRawLength(&results); + ResponseAppend_P(PSTR("\",\"" D_JSON_IR_RAWDATA "Info\":[%d,%d,%d]"), extended_length, i -1, results.overflow); } ResponseJsonEndEnd(); From 184601f0f9b9b4a9c2daa5003657d445f60f23d3 Mon Sep 17 00:00:00 2001 From: Paul C Diem Date: Thu, 1 Oct 2020 22:30:37 -0500 Subject: [PATCH 091/119] Fix PWM Dimmer to send DGR_ITEM_FLAGS after more-to-come msgs to finalize changes so remote devices send tele updates. --- tasmota/support_device_groups.ino | 1 + tasmota/xdrv_35_pwm_dimmer.ino | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/tasmota/support_device_groups.ino b/tasmota/support_device_groups.ino index 552ecb44a..c75da06aa 100644 --- a/tasmota/support_device_groups.ino +++ b/tasmota/support_device_groups.ino @@ -312,6 +312,7 @@ void SendReceiveDeviceGroupMessage(struct device_group * device_group, struct de #ifdef DEVICE_GROUPS_DEBUG switch (item) { + case DGR_ITEM_FLAGS: case DGR_ITEM_LIGHT_FADE: case DGR_ITEM_LIGHT_SPEED: case DGR_ITEM_LIGHT_BRI: diff --git a/tasmota/xdrv_35_pwm_dimmer.ino b/tasmota/xdrv_35_pwm_dimmer.ino index 648df5ea3..0e7a7bea8 100644 --- a/tasmota/xdrv_35_pwm_dimmer.ino +++ b/tasmota/xdrv_35_pwm_dimmer.ino @@ -279,7 +279,7 @@ void PWMDimmerHandleButton(void) int32_t bri_offset = 0; uint8_t power_on_bri = 0; uint8_t dgr_item = 0; - uint8_t dgr_value; + uint8_t dgr_value = 0; uint8_t dgr_more_to_come = false; uint32_t button_index = XdrvMailbox.index; uint32_t now = millis(); @@ -475,7 +475,7 @@ void PWMDimmerHandleButton(void) #endif // USE_PWM_DIMMER_REMOTE power_button_increases_bri ^= 1; #ifdef USE_PWM_DIMMER_REMOTE - dgr_item = 255; + dgr_item = DGR_ITEM_FLAGS; state_updated = true; #endif // USE_PWM_DIMMER_REMOTE } @@ -510,7 +510,7 @@ void PWMDimmerHandleButton(void) // If the down button was tapped and held, we changed the fixed color. Send a final // update. else if (down_button_tapped) { - dgr_item = 255; + dgr_item = DGR_ITEM_FLAGS; } } } @@ -551,7 +551,7 @@ void PWMDimmerHandleButton(void) // button is pressed. The new brightness will be calculated below. if (button_hold_time[button_index] >= now) { bri_offset = (is_down_button ? -1 : 1); - dgr_item = 255; + dgr_item = DGR_ITEM_FLAGS; state_updated = true; } @@ -559,7 +559,7 @@ void PWMDimmerHandleButton(void) // brightness and sent updates with the more-to-come message type while the button was // held. Send a final update. else if (!button_hold_processed[button_index]) { - dgr_item = 255; + dgr_item = DGR_ITEM_FLAGS; state_updated = true; } } @@ -666,7 +666,7 @@ void PWMDimmerHandleButton(void) // update. if (dgr_item) { #ifdef USE_DEVICE_GROUPS - if (dgr_item == 255) dgr_item = 0; +AddLog_P2(LOG_LEVEL_ERROR, PSTR("PWMDimmer: sending DGR item %u"), dgr_item); SendDeviceGroupMessage(power_button_index, (dgr_more_to_come ? DGR_MSGTYP_UPDATE_MORE_TO_COME : DGR_MSGTYP_UPDATE_DIRECT), dgr_item, dgr_value); #endif // USE_DEVICE_GROUPS #ifdef USE_PWM_DIMMER_REMOTE From dd95b4a8cd84d5e519b8c7e6e71a003941d85b15 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 2 Oct 2020 12:22:01 +0200 Subject: [PATCH 092/119] Bump dev version to 9.0.0.1 --- FIRMWARE.md | 2 +- README.md | 2 +- RELEASENOTES.md | 21 ++------------------- tasmota/CHANGELOG.md | 8 ++++++++ tasmota/tasmota_version.h | 2 +- 5 files changed, 13 insertions(+), 22 deletions(-) diff --git a/FIRMWARE.md b/FIRMWARE.md index d09d55f4b..1733f0969 100644 --- a/FIRMWARE.md +++ b/FIRMWARE.md @@ -18,7 +18,7 @@ See [CHANGELOG.md](https://github.com/arendst/Tasmota/blob/development/tasmota/C ## Development -[![Dev Version](https://img.shields.io/badge/development%20version-v8.4.x.x-blue.svg)](https://github.com/arendst/Tasmota) +[![Dev Version](https://img.shields.io/badge/development%20version-v9.0.x.x-blue.svg)](https://github.com/arendst/Tasmota) [![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://ota.tasmota.com/tasmota/) [![Tasmota CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+CI%22) [![Tasmota ESP32 CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20ESP32%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+ESP32+CI%22) diff --git a/README.md b/README.md index 4eb2a88a7..d45340157 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ In addition to the [release webpage](https://github.com/arendst/Tasmota/releases ## Development -[![Dev Version](https://img.shields.io/badge/development%20version-v8.4.x.x-blue.svg)](https://github.com/arendst/Tasmota) +[![Dev Version](https://img.shields.io/badge/development%20version-v9.0.x.x-blue.svg)](https://github.com/arendst/Tasmota) [![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://ota.tasmota.com/tasmota/) [![Tasmota CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+CI%22) [![Tasmota ESP32 CI](https://github.com/arendst/Tasmota/workflows/Tasmota%20ESP32%20CI/badge.svg)](https://github.com/arendst/Tasmota/actions?query=workflow%3A%22Tasmota+ESP32+CI%22) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 29ad008f8..69aa0fe3e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -55,23 +55,6 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ## Changelog -### Version 8.5.0.1 +### Version 9.0.0.1 -- Fix energy total counters (#9263, #9266) -- Fix crash in ``ZbRestore`` -- Fix reset BMP sensors when executing command ``SaveData`` and define USE_DEEPSLEEP enabled (#9300) -- Fix ``status 0`` message when using define USE_MQTT_TLS due to small log buffer (#9305) -- Fix ``status 13`` exception 9 when more than one shutter is configured -- Fix ``status 13`` json message -- Fix Shelly 2.5 higher temperature regression from 8.2.0.1 (#7991) -- Change replace ArduinoJson with JSMN for JSON parsing -- Change ``WakeUp`` uses 256 steps instead of 100 (#9241) -- Add command ``SetOption110 1`` to disable Zigbee auto-config when pairing new devices -- Add command ``SetOption111 1`` to enable frequency output for buzzer GPIO (#8994) -- Add command ``SetOption112 1`` to enable friendly name in zigbee topic (use with SetOption89) -- Add ``#define USE_MQTT_AWS_IOT_LIGHT`` for password based AWS IoT authentication -- Add ``#define MQTT_LWT_OFFLINE`` and ``#define MQTT_LWT_ONLINE`` to user_config.h (#9395) -- Add new shutter modes (#9244) -- Add Zigbee auto-config when pairing -- Add support for MLX90640 IR array temperature sensor by Christian Baars -- Add support for VL53L1X time of flight sensor by Johann Obermeier +- New dev release diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index 907dd36fc..3f9495dcb 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -2,6 +2,14 @@ ## Unreleased (development) +### 9.0.0.1 20201002 + +- New dev release + +### 8.5.1 20201002 + +- Release Hannah + ### 8.5.0.1 20200907 - Fix energy total counters (#9263, #9266) diff --git a/tasmota/tasmota_version.h b/tasmota/tasmota_version.h index 3103534c2..7d8239be6 100644 --- a/tasmota/tasmota_version.h +++ b/tasmota/tasmota_version.h @@ -20,7 +20,7 @@ #ifndef _TASMOTA_VERSION_H_ #define _TASMOTA_VERSION_H_ -const uint32_t VERSION = 0x08050001; +const uint32_t VERSION = 0x09000001; // Lowest compatible version const uint32_t VERSION_COMPATIBLE = 0x07010006; From e0933e5de0039da2297349aca069d9eeade21223 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:24:23 +0200 Subject: [PATCH 093/119] Fix scripter compilation error --- tasmota/xdrv_10_scripter.ino | 2 +- tasmota/xsns_02_analog.ino | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index 8f5181914..a3cba3385 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -1796,7 +1796,7 @@ chknext: #else // ESP8266 #ifndef USE_ADC_VCC - fvar = AdcRead(fvar); + fvar = AdcRead(17, fvar); #else fvar = (float)ESP.getVcc() / 1000.0; #endif // USE_ADC_VCC diff --git a/tasmota/xsns_02_analog.ino b/tasmota/xsns_02_analog.ino index 1077026de..8feca385e 100644 --- a/tasmota/xsns_02_analog.ino +++ b/tasmota/xsns_02_analog.ino @@ -19,7 +19,7 @@ #ifdef USE_ADC /*********************************************************************************************\ - * ADC support for up to 8 channels on GPIO32 to GPIO39 + * ADC support for ESP8266 GPIO17 (=PIN_A0) and ESP32 up to 8 channels on GPIO32 to GPIO39 \*********************************************************************************************/ #define XSNS_02 2 From 72d561e9be344380a8d6057175f60a5b613ddf95 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:35:11 +0200 Subject: [PATCH 094/119] Change new IR Raw compact format (#9444) --- RELEASENOTES.md | 1 + tasmota/CHANGELOG.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 8d3ed5c59..b95077984 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -63,3 +63,4 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Remove auto config update for all Friendlynames and Switchtopic from versions before 8.x - Change redesigning ESP8266 GPIO internal representation in line with ESP32 +- Change new IR Raw compact format (#9444) diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index b2be4e46e..9314f6188 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -6,6 +6,7 @@ - Remove auto config update for all Friendlynames and Switchtopic from versions before 8.x - Change redesigning ESP8266 GPIO internal representation in line with ESP32 +- Change new IR Raw compact format (#9444) ### 8.5.1 20201002 @@ -31,7 +32,6 @@ - Add Zigbee auto-config when pairing - Add support for MLX90640 IR array temperature sensor by Christian Baars - Add support for VL53L1X time of flight sensor by Johann Obermeier -- Change new IR Raw compact format ### 8.5.0 20200907 From 760d702fd093c33d054112c6c10f4f64f433f7f5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 2 Oct 2020 15:10:21 +0200 Subject: [PATCH 095/119] Add optional support for Mitsubishi Electric HVAC Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237) --- BUILDS.md | 1 + tasmota/CHANGELOG.md | 1 + tasmota/language/bg_BG.h | 2 + tasmota/language/cs_CZ.h | 2 + tasmota/language/de_DE.h | 2 + tasmota/language/el_GR.h | 2 + tasmota/language/en_GB.h | 2 + tasmota/language/es_ES.h | 2 + tasmota/language/fr_FR.h | 4 +- tasmota/language/he_HE.h | 2 + tasmota/language/hu_HU.h | 2 + tasmota/language/it_IT.h | 2 + tasmota/language/ko_KO.h | 2 + tasmota/language/nl_NL.h | 2 + tasmota/language/pl_PL.h | 2 + tasmota/language/pt_BR.h | 2 + tasmota/language/pt_PT.h | 2 + tasmota/language/ro_RO.h | 2 + tasmota/language/ru_RU.h | 2 + tasmota/language/sk_SK.h | 2 + tasmota/language/sv_SE.h | 2 + tasmota/language/tr_TR.h | 2 + tasmota/language/uk_UA.h | 2 + tasmota/language/zh_CN.h | 2 + tasmota/language/zh_TW.h | 2 + tasmota/my_user_config.h | 1 + tasmota/support_features.ino | 4 +- tasmota/tasmota_configurations.h | 5 + tasmota/tasmota_template.h | 9 +- tasmota/xdrv_44_miel_hvac.ino | 1295 ++++++++++++++++++++++++++++++ tools/decode-status.py | 4 +- 31 files changed, 1363 insertions(+), 5 deletions(-) create mode 100644 tasmota/xdrv_44_miel_hvac.ino diff --git a/BUILDS.md b/BUILDS.md index 023c8ebec..3740f5708 100644 --- a/BUILDS.md +++ b/BUILDS.md @@ -149,6 +149,7 @@ | USE_HRXL | - | - | - | - | x | - | - | | USE_TASMOTA_CLIENT | - | - | - | - | - | - | - | | USE_OPENTHERM | - | - | - | - | - | - | - | +| USE_MIEL_HVAC | - | - | - | - | - | - | - | | USE_TCP_BRIDGE | - | - | - | - | - | - | - | zbbridge | | | | | | | | | | USE_NRF24 | - | - | - | - | - | - | - | diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index 9314f6188..b6eaf46dd 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -7,6 +7,7 @@ - Remove auto config update for all Friendlynames and Switchtopic from versions before 8.x - Change redesigning ESP8266 GPIO internal representation in line with ESP32 - Change new IR Raw compact format (#9444) +- Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237) ### 8.5.1 20201002 diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index e0543019c..3d607e4bf 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index c7190998c..659632efd 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 272f67988..2f01b0e59 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index 74a7b625f..c2429d55a 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 18d655ce3..54e4a6850 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 674b38eab..8adc6e74e 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index be1fd4f93..f1e9dc0f2 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -714,7 +714,9 @@ #define D_SENSOR_TCP_TXD "TCP Tx" #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" -#define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_IEM3000_RX "iEM3000 RX"#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" + // Units #define D_UNIT_AMPERE "A" #define D_UNIT_CELSIUS "C" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index 0de84e609..75f95fda4 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 23a7be121..1adb960cb 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 70360f15c..3e94ce149 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP - RX" #define D_SENSOR_IEM3000_TX "iEM3000 - TX" #define D_SENSOR_IEM3000_RX "iEM3000 - RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index d08aea216..7aadf0b78 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 6a40607c9..5b190884a 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 7e9d25e5c..18eedb5dc 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 88f1d0c86..e6fe1a938 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 83bbbc778..1106827ee 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index 00ab45bcf..ed9848857 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 13068198f..1796d1b30 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "А" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 911581ee7..240e86003 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 73ecd4bab..72030d9ce 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index e2b496d1e..ddfe84e43 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 388aecc9a..5c583da06 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "А" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 220f866e9..b3f1de4e9 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "安" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index aca69ad6b..5ee1cd862 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -719,6 +719,8 @@ #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" #define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units #define D_UNIT_AMPERE "安培" diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index eed9062f0..6c2f002a7 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -639,6 +639,7 @@ #define USE_TASMOTA_CLIENT_FLASH_SPEED 57600 // Usually 57600 for 3.3V variants and 115200 for 5V variants #define USE_TASMOTA_CLIENT_SERIAL_SPEED 57600 // Depends on the sketch that is running on the Uno/Pro Mini //#define USE_OPENTHERM // Add support for OpenTherm (+15k code) +//#define USE_MIEL_HVAC // Add support for Mitsubishi Electric HVAC serial interface (+5k code) // -- Power monitoring sensors -------------------- #define USE_ENERGY_MARGIN_DETECTION // Add support for Energy Margin detection (+1k6 code) diff --git a/tasmota/support_features.ino b/tasmota/support_features.ino index dc49a757f..a4cc5aab7 100644 --- a/tasmota/support_features.ino +++ b/tasmota/support_features.ino @@ -607,7 +607,9 @@ void GetFeatures(void) #if defined(USE_I2C) && defined(USE_VL53L1X) feature6 |= 0x02000000; // xsns_77_vl53l1x.ino #endif -// feature6 |= 0x04000000; +#ifdef USE_MIEL_HVAC + feature6 |= 0x04000000; // xdrv_44_miel_hvac.ino +#endif // feature6 |= 0x08000000; // feature6 |= 0x10000000; #if defined(ESP32) && defined(USE_TTGO_WATCH) diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index f94844bf9..6a08a9dc6 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -158,6 +158,7 @@ #define USE_HRXL // Add support for MaxBotix HRXL-MaxSonar ultrasonic range finders (+0k7) //#define USE_TASMOTA_CLIENT // Add support for Arduino Uno/Pro Mini via serial interface including flashing (+2k3 code, 44 mem) //#define USE_OPENTHERM // Add support for OpenTherm (+15k code) +//#define USE_MIEL_HVAC // Add support for Mitsubishi Electric HVAC serial interface (+5k code) //#define USE_MCP9808 // Add support for MCP9808 temperature sensor (+0k9 code) //#define USE_HP303B // Add support for HP303B temperature and pressure sensor (I2C address 0x76 or 0x77) (+6k2 code) @@ -392,6 +393,7 @@ #undef USE_HRXL // Disable support for MaxBotix HRXL-MaxSonar ultrasonic range finders (+0k7) #undef USE_TASMOTA_CLIENT // Disable support for Arduino Uno/Pro Mini via serial interface including flashing (+2k3 code, 44 mem) #undef USE_OPENTHERM // Disable support for OpenTherm (+15k code) +#undef USE_MIEL_HVAC // Disable support for Mitsubishi Electric HVAC serial interface (+5k code) #undef USE_DHT // Disable support for DHT11, AM2301 (DHT21, DHT22, AM2302, AM2321) and SI7021 Temperature and Humidity sensor #undef USE_MAX31855 // Disable MAX31855 K-Type thermocouple sensor using softSPI @@ -504,6 +506,7 @@ #undef USE_HRXL // Disable support for MaxBotix HRXL-MaxSonar ultrasonic range finders (+0k7) #undef USE_TASMOTA_CLIENT // Disable support for Arduino Uno/Pro Mini via serial interface including flashing (+2k3 code, 44 mem) #undef USE_OPENTHERM // Disable support for OpenTherm (+15k code) +#undef USE_MIEL_HVAC // Disable support for Mitsubishi Electric HVAC serial interface (+5k code) #undef USE_ENERGY_SENSOR // Disable energy sensors #undef USE_ADE7953 // Disable ADE7953 Energy monitor as used on Shelly 2.5 (I2C address 0x38) (+1k5) @@ -638,6 +641,7 @@ #undef USE_HRXL // Disable support for MaxBotix HRXL-MaxSonar ultrasonic range finders (+0k7) #undef USE_TASMOTA_CLIENT // Disable support for Arduino Uno/Pro Mini via serial interface including flashing (+2k3 code, 44 mem) #undef USE_OPENTHERM // Disable support for OpenTherm (+15k code) +#undef USE_MIEL_HVAC // Disable support for Mitsubishi Electric HVAC serial interface (+5k code) //#undef USE_ENERGY_SENSOR // Disable energy sensors #undef USE_PZEM004T // Disable PZEM004T energy sensor @@ -771,6 +775,7 @@ #undef USE_HRXL // Disable support for MaxBotix HRXL-MaxSonar ultrasonic range finders (+0k7) #undef USE_TASMOTA_CLIENT // Disable support for Arduino Uno/Pro Mini via serial interface including flashing (+2k3 code, 44 mem) #undef USE_OPENTHERM // Disable support for OpenTherm (+15k code) +#undef USE_MIEL_HVAC // Disable support for Mitsubishi Electric HVAC serial interface (+5k code) #undef USE_ENERGY_SENSOR // Disable energy sensors #undef USE_PZEM004T // Disable PZEM004T energy sensor diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 53841b333..6fbc3e4d7 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -146,6 +146,8 @@ enum UserSelectablePins { GPIO_IEM3000_TX, GPIO_IEM3000_RX, // IEM3000 Serial interface GPIO_ZIGBEE_RST, // Zigbee reset GPIO_DYP_RX, + GPIO_MIEL_HVAC_TX, // Mitsubishi Electric HVAC TX pin + GPIO_MIEL_HVAC_RX, // Mitsubishi Electric HVAC RX pin GPIO_SENSOR_END }; enum ProgramSelectablePins { @@ -248,7 +250,8 @@ const char kSensorNames[] PROGMEM = D_SENSOR_LMT01_PULSE "|" D_SENSOR_IEM3000_TX "|" D_SENSOR_IEM3000_RX "|" D_SENSOR_ZIGBEE_RST "|" - D_SENSOR_DYP_RX + D_SENSOR_DYP_RX "|" + D_SENSOR_MIEL_HVAC_TX "|" D_SENSOR_MIEL_HVAC_RX ; const char kSensorNamesFixed[] PROGMEM = @@ -575,6 +578,10 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_TELEINFO_RX), AGPIO(GPIO_TELEINFO_ENABLE), #endif +#ifdef USE_MIEL_HVAC + AGPIO(GPIO_MIEL_HVAC_TX), // Mitsubishi Electric HVAC TX pin + AGPIO(GPIO_MIEL_HVAC_RX), // Mitsubishi Electric HVAC RX pin +#endif #ifdef ESP32 #ifdef USE_WEBCAM diff --git a/tasmota/xdrv_44_miel_hvac.ino b/tasmota/xdrv_44_miel_hvac.ino new file mode 100644 index 000000000..cd08d1c54 --- /dev/null +++ b/tasmota/xdrv_44_miel_hvac.ino @@ -0,0 +1,1295 @@ +/* + xdrv_44_miel_hvac.ino - Mitsubishi Electric HVAC support for Tasmota + + Copyright (C) 2020 David Gwynne + + 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 . +*/ + +#ifdef USE_MIEL_HVAC +/*********************************************************************************************\ + * Mitsubishi Electric HVAC serial interface +\*********************************************************************************************/ + +#define XDRV_44 44 + +#define nitems(_a) (sizeof((_a)) / sizeof((_a)[0])) + +#define CTASSERT(x) extern char _ctassert[(x) ? 1 : -1 ] \ + __attribute__((__unused__)) + +#define MIEL_HVAC_LOGNAME "MiElHVAC" + +#define D_CMND_MIEL_HVAC_SETFANSPEED "HVACSetFanSpeed" +#define D_CMND_MIEL_HVAC_SETMODE "HVACSetMode" +#define D_CMND_MIEL_HVAC_SETHAMODE "HVACSetHAMode" +#define D_CMND_MIEL_HVAC_SETTEMP "HVACSetTemp" +#define D_CMND_MIEL_HVAC_SETSWINGV "HVACSetSwingV" +#define D_CMND_MIEL_HVAC_SETSWINGH "HVACSetSwingH" +#define D_CMND_MIEL_HVAC_REMOTETEMP "HVACRemoteTemp" + +#include + +/* from hvac */ +struct miel_hvac_header { + uint8_t start; +#define MIEL_HVAC_H_START 0xfc + uint8_t type; +#define MIEL_HVAC_H_TYPE_UPDATED 0x61 +#define MIEL_HVAC_H_TYPE_DATA 0x62 +#define MIEL_HVAC_H_TYPE_CONNECTED 0x7a + uint8_t middle1; +#define MIEL_HVAC_H_MIDDLE1 0x01 + uint8_t middle2; +#define MIEL_HVAC_H_MIDDLE2 0x30 + uint8_t len; +}; + +struct miel_hvac_data_settings { + uint8_t _pad1[2]; + uint8_t power; + uint8_t mode; +#define MIEL_HVAC_SETTINGS_MODE_MASK 0x7f + uint8_t temp; + uint8_t fan; + uint8_t vane; + uint8_t _pad2[2]; + uint8_t widevane; +#define MIEL_HVAC_SETTTINGS_WIDEVANE_MASK \ + 0x0f +}; + +struct miel_hvac_data_roomtemp { + uint8_t _pad1[2]; + uint8_t temp; +}; + +struct miel_hvac_data_status { + uint8_t _pad1[2]; + uint8_t compressor; + uint8_t operation; +}; + +struct miel_hvac_data { + uint8_t type; +#define MIEL_HVAC_DATA_T_SETTINGS 0x02 +#define MIEL_HVAC_DATA_T_ROOMTEMP 0x03 +#define MIEL_HVAC_DATA_T_TIMER 0x05 +#define MIEL_HVAC_DATA_T_STATUS 0x06 +#define MIEL_HVAC_DATA_T_STAGE 0x09 + + union { + struct miel_hvac_data_settings + settings; + struct miel_hvac_data_roomtemp + roomtemp; + struct miel_hvac_data_status + status; + + uint8_t bytes[15]; + } data; +}; + +CTASSERT(sizeof(struct miel_hvac_data) == 16); + +CTASSERT(offsetof(struct miel_hvac_data, data.settings.power) == 3); +CTASSERT(offsetof(struct miel_hvac_data, data.settings.mode) == 4); +CTASSERT(offsetof(struct miel_hvac_data, data.settings.temp) == 5); +CTASSERT(offsetof(struct miel_hvac_data, data.settings.fan) == 6); +CTASSERT(offsetof(struct miel_hvac_data, data.settings.vane) == 7); +CTASSERT(offsetof(struct miel_hvac_data, data.settings.widevane) == 10); + +CTASSERT(offsetof(struct miel_hvac_data, data.roomtemp.temp) == 3); + +/* to hvac */ + +#define MIEL_HVAC_H_TYPE_CONNECT 0x5a +static const uint8_t miel_hvac_msg_connect[] = { 0xca, 0x01 }; + +#define MIEL_HVAC_H_TYPE_REQUEST 0x42 + +struct miel_hvac_msg_request { + uint8_t type; +#define MIEL_HVAC_REQUEST_SETTINGS 0x02 +#define MIEL_HVAC_REQUEST_ROOMTEMP 0x03 +#define MIEL_HVAC_REQUEST_TIMERS 0x05 +#define MIEL_HVAC_REQUEST_STATUS 0x06 +#define MIEL_HVAC_REQUEST_STAGE 0x09 + uint8_t zero[15]; +}; + +#define MIEL_HVAC_H_TYPE_UPDATE 0x41 + +struct miel_hvac_msg_update { + uint8_t one; + uint16_t flags; +#define MIEL_HVAC_UPDATE_F_WIDEVANE (1 << 0) +#define MIEL_HVAC_UPDATE_F_POWER (1 << 8) +#define MIEL_HVAC_UPDATE_F_MODE (1 << 9) +#define MIEL_HVAC_UPDATE_F_TEMP (1 << 10) +#define MIEL_HVAC_UPDATE_F_FAN (1 << 11) +#define MIEL_HVAC_UPDATE_F_VANE (1 << 12) + uint8_t power; +#define MIEL_HVAC_UPDATE_POWER_OFF 0x00 +#define MIEL_HVAC_UPDATE_POWER_ON 0x01 + uint8_t mode; +#define MIEL_HVAC_UPDATE_MODE_HEAT 0x01 +#define MIEL_HVAC_UPDATE_MODE_DRY 0x02 +#define MIEL_HVAC_UPDATE_MODE_COOL 0x03 +#define MIEL_HVAC_UPDATE_MODE_FAN 0x07 +#define MIEL_HVAC_UPDATE_MODE_AUTO 0x08 + uint8_t temp; +#define MIEL_HVAC_UPDATE_TEMP_MIN 16 +#define MIEL_HVAC_UPDATE_TEMP_MAX 31 + uint8_t fan; +#define MIEL_HVAC_UPDATE_FAN_AUTO 0x00 +#define MIEL_HVAC_UPDATE_FAN_QUIET 0x01 +#define MIEL_HVAC_UPDATE_FAN_1 0x02 +#define MIEL_HVAC_UPDATE_FAN_2 0x03 +#define MIEL_HVAC_UPDATE_FAN_3 0x05 +#define MIEL_HVAC_UPDATE_FAN_4 0x06 + uint8_t vane; +#define MIEL_HVAC_UPDATE_VANE_AUTO 0x00 +#define MIEL_HVAC_UPDATE_VANE_1 0x01 +#define MIEL_HVAC_UPDATE_VANE_2 0x02 +#define MIEL_HVAC_UPDATE_VANE_3 0x03 +#define MIEL_HVAC_UPDATE_VANE_4 0x04 +#define MIEL_HVAC_UPDATE_VANE_5 0x05 +#define MIEL_HVAC_UPDATE_VANE_SWING 0x07 + uint8_t _pad1[5]; + uint8_t widevane; +#define MIEL_HVAC_UPDATE_WIDEVANE_MASK 0x0f +#define MIEL_HVAC_UPDATE_WIDEVANE_LL 0x01 +#define MIEL_HVAC_UPDATE_WIDEVANE_L 0x02 +#define MIEL_HVAC_UPDATE_WIDEVANE_LL 0x01 +#define MIEL_HVAC_UPDATE_WIDEVANE_L 0x02 +#define MIEL_HVAC_UPDATE_WIDEVANE_C 0x03 +#define MIEL_HVAC_UPDATE_WIDEVANE_R 0x04 +#define MIEL_HVAC_UPDATE_WIDEVANE_RR 0x05 +#define MIEL_HVAC_UPDATE_WIDEVANE_LR 0x08 +#define MIEL_HVAC_UPDATE_WIDEVANE_SWING 0x0c +#define MIEL_HVAC_UPDATE_WIDEVANE_ADJ 0x80 + uint8_t _pad2[2]; +} __packed; + +CTASSERT(sizeof(struct miel_hvac_msg_update) == 16); +#define MIEL_HVAC_OFFS(_v) ((_v) - sizeof(struct miel_hvac_header)) +CTASSERT(offsetof(struct miel_hvac_msg_update, flags) == MIEL_HVAC_OFFS(6)); +CTASSERT(offsetof(struct miel_hvac_msg_update, power) == MIEL_HVAC_OFFS(8)); +CTASSERT(offsetof(struct miel_hvac_msg_update, mode) == MIEL_HVAC_OFFS(9)); +CTASSERT(offsetof(struct miel_hvac_msg_update, temp) == MIEL_HVAC_OFFS(10)); +CTASSERT(offsetof(struct miel_hvac_msg_update, fan) == MIEL_HVAC_OFFS(11)); +CTASSERT(offsetof(struct miel_hvac_msg_update, vane) == MIEL_HVAC_OFFS(12)); +CTASSERT(offsetof(struct miel_hvac_msg_update, widevane) == MIEL_HVAC_OFFS(18)); + +static inline uint8_t +miel_hvac_deg2temp(uint8_t deg) +{ + return (31 - deg); +} + +static inline uint8_t +miel_hvac_temp2deg(uint8_t temp) +{ + return (31 - temp); +} + +static inline unsigned int +miel_hvac_roomtemp2deg(uint8_t roomtemp) +{ + return ((unsigned int)roomtemp + 10); +} + +struct miel_hvac_msg_remotetemp { + uint8_t seven; + uint8_t control; +#define MIEL_HVAC_REMOTETEMP_CLR 0x00 +#define MIEL_HVAC_REMOTETEMP_SET 0x01 + /* setting for older units expressed as .5C units starting at 8C */ + uint8_t temp_old; +#define MIEL_HVAC_REMOTETEMP_OLD_MIN 8 +#define MIEL_HVAC_REMOTETEMP_OLD_MAX 38 +#define MIEL_HVAC_REMOTETEMP_OLD_FACTOR 2 + /* setting for newer units expressed as .5C units starting at -63C */ + uint8_t temp; +#define MIEL_HVAC_REMOTETEMP_MIN -63 +#define MIEL_HVAC_REMOTETEMP_MAX 63 +#define MIEL_HVAC_REMOTETEMP_OFFSET 64 +#define MIEL_HVAC_REMOTETEMP_FACTOR 2 + uint8_t _pad2[12]; +}; + +CTASSERT(sizeof(struct miel_hvac_msg_remotetemp) == 16); + +static inline uint8_t +miel_hvac_cksum_fini(uint8_t sum) +{ + return (0xfc - sum); +} + +struct miel_hvac_map { + uint8_t byte; + const char *name; +}; + +static const struct miel_hvac_map miel_hvac_mode_map[] = { + { MIEL_HVAC_UPDATE_MODE_HEAT, "heat" }, + { MIEL_HVAC_UPDATE_MODE_DRY, "dry" }, + { MIEL_HVAC_UPDATE_MODE_COOL, "cool" }, + { MIEL_HVAC_UPDATE_MODE_FAN, "fan_only" }, + { MIEL_HVAC_UPDATE_MODE_AUTO, "auto" }, +}; + +static const struct miel_hvac_map miel_hvac_fan_map[] = { + { MIEL_HVAC_UPDATE_FAN_AUTO, "auto" }, + { MIEL_HVAC_UPDATE_FAN_QUIET, "quiet" }, + { MIEL_HVAC_UPDATE_FAN_1, "1" }, + { MIEL_HVAC_UPDATE_FAN_2, "2" }, + { MIEL_HVAC_UPDATE_FAN_3, "3" }, + { MIEL_HVAC_UPDATE_FAN_4, "4" }, +}; + +static const struct miel_hvac_map miel_hvac_vane_map[] = { + { MIEL_HVAC_UPDATE_VANE_AUTO, "auto" }, + { MIEL_HVAC_UPDATE_VANE_1, "1" }, + { MIEL_HVAC_UPDATE_VANE_2, "2" }, + { MIEL_HVAC_UPDATE_VANE_3, "3" }, + { MIEL_HVAC_UPDATE_VANE_4, "4" }, + { MIEL_HVAC_UPDATE_VANE_5, "5" }, + { MIEL_HVAC_UPDATE_VANE_SWING, "swing" }, +}; + +static const struct miel_hvac_map miel_hvac_widevane_map[] = { + { MIEL_HVAC_UPDATE_WIDEVANE_LL, "LL" }, + { MIEL_HVAC_UPDATE_WIDEVANE_L, "L" }, + { MIEL_HVAC_UPDATE_WIDEVANE_C, "C" }, + { MIEL_HVAC_UPDATE_WIDEVANE_R, "R" }, + { MIEL_HVAC_UPDATE_WIDEVANE_RR, "RR" }, + { MIEL_HVAC_UPDATE_WIDEVANE_LR, "split" }, + { MIEL_HVAC_UPDATE_WIDEVANE_SWING, "swing" }, +}; + +enum miel_hvac_parser_state { + MIEL_HVAC_P_START, + MIEL_HVAC_P_TYPE, + MIEL_HVAC_P_MIDDLE1, + MIEL_HVAC_P_MIDDLE2, + MIEL_HVAC_P_LEN, + MIEL_HVAC_P_DATA, + MIEL_HVAC_P_CKSUM, + + MIEL_HVAC_P_SKIP, + MIEL_HVAC_P_SKIP_CKSUM, +}; + +#define MIEL_HVAC_DATABUFLEN 64 + +struct miel_hvac_parser { + enum miel_hvac_parser_state + p_state; + uint8_t p_type; + uint8_t p_sum; + uint8_t p_len; + uint8_t p_off; + uint8_t p_data[MIEL_HVAC_DATABUFLEN]; +}; + +struct miel_hvac_softc { + TasmotaSerial *sc_serial; + struct miel_hvac_parser sc_parser; + + unsigned int sc_device; + unsigned int sc_tick; + bool sc_settings_set; + bool sc_connected; + + struct miel_hvac_data sc_settings; + struct miel_hvac_data sc_temp; + struct miel_hvac_data sc_status; + struct miel_hvac_data sc_stage; + + struct miel_hvac_msg_update + sc_update; + struct miel_hvac_msg_remotetemp + sc_remotetemp; +}; + +static inline bool +miel_hvac_update_pending(struct miel_hvac_softc *sc) +{ + struct miel_hvac_msg_update *update = &sc->sc_update; + + return (update->flags != htons(0)); +} + +static struct miel_hvac_softc *miel_hvac_sc = nullptr; + +static void miel_hvac_input_connected(struct miel_hvac_softc *, + const void *, size_t); +static void miel_hvac_input_data(struct miel_hvac_softc *, + const void *, size_t); +static void miel_hvac_input_updated(struct miel_hvac_softc *, + const void *, size_t); + +static enum miel_hvac_parser_state +miel_hvac_parse(struct miel_hvac_softc *sc, uint8_t byte) +{ + struct miel_hvac_parser *p = &sc->sc_parser; + enum miel_hvac_parser_state nstate = p->p_state; + + switch (p->p_state) { + case MIEL_HVAC_P_START: + if (byte != MIEL_HVAC_H_START) + return (MIEL_HVAC_P_START); + + /* reset state */ + p->p_sum = 0; + + nstate = MIEL_HVAC_P_TYPE; + break; + + case MIEL_HVAC_P_TYPE: + p->p_type = byte; + nstate = MIEL_HVAC_P_MIDDLE1; + break; + + case MIEL_HVAC_P_MIDDLE1: + if (byte != MIEL_HVAC_H_MIDDLE1) { + AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + ": parse state MIDDLE1 expected %02x got %02x" + ", restarting"), MIEL_HVAC_H_MIDDLE1, byte); + return (MIEL_HVAC_P_START); + } + + nstate = MIEL_HVAC_P_MIDDLE2; + break; + + case MIEL_HVAC_P_MIDDLE2: + if (byte != MIEL_HVAC_H_MIDDLE2) { + AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + ": parse state MIDDLE2 expected %02x got %02x" + ", restarting"), MIEL_HVAC_H_MIDDLE2, byte); + return (MIEL_HVAC_P_START); + } + + nstate = MIEL_HVAC_P_LEN; + break; + + case MIEL_HVAC_P_LEN: + if (byte == 0) { + AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + ": skipping 0 byte message type 0x%02x"), + p->p_type); + return (MIEL_HVAC_P_SKIP_CKSUM); + } + + p->p_len = byte; + p->p_off = 0; + + switch (p->p_type) { + case MIEL_HVAC_H_TYPE_CONNECTED: + case MIEL_HVAC_H_TYPE_DATA: + case MIEL_HVAC_H_TYPE_UPDATED: + break; + default: + AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + ": skipping unknown message type 0x%02x"), + p->p_type); + return (MIEL_HVAC_P_SKIP); + } + + if (byte > sizeof(p->p_data)) { + AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + ": skipping %u data bytes of message type 0x%02x"), + p->p_len, p->p_type); + return (MIEL_HVAC_P_SKIP); + } + + nstate = MIEL_HVAC_P_DATA; + break; + + case MIEL_HVAC_P_DATA: + p->p_data[p->p_off++] = byte; + if (p->p_off >= p->p_len) + nstate = MIEL_HVAC_P_CKSUM; + break; + + case MIEL_HVAC_P_CKSUM: + if (miel_hvac_cksum_fini(p->p_sum) != byte) { + AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + ": checksum failed, restarting")); + return (MIEL_HVAC_P_START); + } + + switch (p->p_type) { + case MIEL_HVAC_H_TYPE_CONNECTED: + miel_hvac_input_connected(sc, p->p_data, p->p_len); + break; + case MIEL_HVAC_H_TYPE_DATA: + miel_hvac_input_data(sc, p->p_data, p->p_len); + break; + case MIEL_HVAC_H_TYPE_UPDATED: + miel_hvac_input_updated(sc, p->p_data, p->p_len); + break; + } + + /* this message is done, wait for another */ + return (MIEL_HVAC_P_START); + + case MIEL_HVAC_P_SKIP: + if (++p->p_off >= p->p_len) + return (MIEL_HVAC_P_SKIP_CKSUM); + return (nstate); + case MIEL_HVAC_P_SKIP_CKSUM: + return (MIEL_HVAC_P_START); + } + + p->p_sum += byte; + + return (nstate); +} + +static uint8_t +miel_hvac_write(struct miel_hvac_softc *sc, const uint8_t *bytes, size_t len) +{ + TasmotaSerial *serial = sc->sc_serial; + uint8_t cksum = 0; + size_t i; + + for (i = 0; i < len; i++) { + uint8_t b = bytes[i]; + serial->write(b); + cksum += b; + } + + return (cksum); +} + +static void +miel_hvac_send(struct miel_hvac_softc *sc, uint8_t type, + const void *data, size_t len) +{ + TasmotaSerial *serial = sc->sc_serial; + struct miel_hvac_header h = { + MIEL_HVAC_H_START, + type, + MIEL_HVAC_H_MIDDLE1, + MIEL_HVAC_H_MIDDLE2, + (uint8_t)len, + }; + uint8_t cksum = 0; + + cksum += miel_hvac_write(sc, (const uint8_t *)&h, sizeof(h)); + cksum += miel_hvac_write(sc, (const uint8_t *)data, len); + + char hex_h[(sizeof(h) + 1) * 2]; + char hex_d[(len + 1) * 2]; + AddLog_P2(LOG_LEVEL_DEBUG, + PSTR(MIEL_HVAC_LOGNAME ": sending %s %s %02x"), + ToHex_P((uint8_t *)&h, sizeof(h), hex_h, sizeof(hex_h)), + ToHex_P((uint8_t *)data, len, hex_d, sizeof(hex_d)), + miel_hvac_cksum_fini(cksum)); + + serial->write(miel_hvac_cksum_fini(cksum)); + serial->flush(); +} + +#define miel_hvac_send_connect(_sc) \ + miel_hvac_send((_sc), MIEL_HVAC_H_TYPE_CONNECT, \ + miel_hvac_msg_connect, sizeof(miel_hvac_msg_connect)) + +static const struct miel_hvac_map * +miel_hvac_map_byname(const char *name, + const struct miel_hvac_map *m, size_t n) +{ + const struct miel_hvac_map *e; + size_t i; + + for (i = 0; i < n; i++) { + e = &m[i]; + if (strcasecmp(e->name, name) == 0) + return (e); + } + + return (NULL); +} + +static const char * +miel_hvac_map_byval(uint8_t byte, + const struct miel_hvac_map *m, size_t n) +{ + const struct miel_hvac_map *e; + size_t i; + + for (i = 0; i < n; i++) { + e = &m[i]; + if (byte == e->byte) + return (e->name); + } + + return (NULL); +} + +static void +miel_hvac_request(struct miel_hvac_softc *sc, uint8_t type) +{ + struct miel_hvac_msg_request request = { type }; + + miel_hvac_send(sc, MIEL_HVAC_H_TYPE_REQUEST, + &request, sizeof(request)); +} + +static void +miel_hvac_init_update(struct miel_hvac_msg_update *update) +{ + memset(update, 0, sizeof(*update)); + update->one = 1; +} + +static inline void +miel_hvac_send_update(struct miel_hvac_softc *sc, + const struct miel_hvac_msg_update *update) +{ + miel_hvac_send(sc, MIEL_HVAC_H_TYPE_UPDATE, update, sizeof(*update)); +} + +static inline void +miel_hvac_send_remotetemp(struct miel_hvac_softc *sc, + const struct miel_hvac_msg_remotetemp *remotetemp) +{ + miel_hvac_send(sc, MIEL_HVAC_H_TYPE_UPDATE, + remotetemp, sizeof(*remotetemp)); +} + +static bool +miel_hvac_set_power(struct miel_hvac_softc *sc) +{ + struct miel_hvac_msg_update *update = &sc->sc_update; + uint16_t source = XdrvMailbox.payload; + + if (source == SRC_SWITCH) + return (false); + + update->flags |= htons(MIEL_HVAC_UPDATE_F_POWER); + update->power = (XdrvMailbox.index & (1 << sc->sc_device)) ? + MIEL_HVAC_UPDATE_POWER_ON : MIEL_HVAC_UPDATE_POWER_OFF; + + return (true); +} + +static void +miel_hvac_respond_unsupported(void) +{ + ResponseCmndChar_P(PSTR("Unsupported")); +} + +static void +miel_hvac_cmnd_setfanspeed(void) +{ + struct miel_hvac_softc *sc = miel_hvac_sc; + struct miel_hvac_msg_update *update = &sc->sc_update; + const struct miel_hvac_map *e; + + if (XdrvMailbox.data_len == 0) + return; + + e = miel_hvac_map_byname(XdrvMailbox.data, + miel_hvac_fan_map, nitems(miel_hvac_fan_map)); + if (e == NULL) { + miel_hvac_respond_unsupported(); + return; + } + + update->flags |= htons(MIEL_HVAC_UPDATE_F_FAN); + update->fan = e->byte; + + ResponseCmndChar_P(e->name); +} + +static void +miel_hvac_cmnd_setmode(void) +{ + struct miel_hvac_softc *sc = miel_hvac_sc; + struct miel_hvac_msg_update *update = &sc->sc_update; + const struct miel_hvac_map *e; + + if (XdrvMailbox.data_len == 0) + return; + + e = miel_hvac_map_byname(XdrvMailbox.data, + miel_hvac_mode_map, nitems(miel_hvac_mode_map)); + if (e == NULL) { + miel_hvac_respond_unsupported(); + return; + } + + update->flags |= htons(MIEL_HVAC_UPDATE_F_MODE); + update->mode = e->byte; + + ResponseCmndChar_P(e->name); +} + +static void +miel_hvac_cmnd_sethamode(void) +{ + struct miel_hvac_softc *sc = miel_hvac_sc; + struct miel_hvac_msg_update *update = &sc->sc_update; + const struct miel_hvac_map *e; + + if (XdrvMailbox.data_len == 0) + return; + + if (strcasecmp(XdrvMailbox.data, "off") == 0) { + update->flags |= htons(MIEL_HVAC_UPDATE_F_POWER); + update->power = MIEL_HVAC_UPDATE_POWER_OFF; + ResponseCmndChar_P(PSTR("off")); + return; + } + + /* + * I could set power and then call miel_hvac_cmnd_setmode, + * but that would mean power gets turned on even if there's + * an invalid argument. + */ + e = miel_hvac_map_byname(XdrvMailbox.data, + miel_hvac_mode_map, nitems(miel_hvac_mode_map)); + if (e == NULL) { + miel_hvac_respond_unsupported(); + return; + } + + update->flags |= htons(MIEL_HVAC_UPDATE_F_POWER) | + htons(MIEL_HVAC_UPDATE_F_MODE); + update->power = MIEL_HVAC_UPDATE_POWER_ON; + update->mode = e->byte; + + ResponseCmndChar_P(e->name); +} + +static void +miel_hvac_cmnd_settemp(void) +{ + struct miel_hvac_softc *sc = miel_hvac_sc; + struct miel_hvac_msg_update *update = &sc->sc_update; + unsigned long degc; + + if (XdrvMailbox.data_len == 0) + return; + + degc = strtoul(XdrvMailbox.data, nullptr, 0); + if (degc < MIEL_HVAC_UPDATE_TEMP_MIN || + degc > MIEL_HVAC_UPDATE_TEMP_MAX) { + miel_hvac_respond_unsupported(); + return; + } + + update->flags |= htons(MIEL_HVAC_UPDATE_F_TEMP); + update->temp = miel_hvac_deg2temp(degc); + + ResponseCmndNumber(degc); +} + +static void +miel_hvac_cmnd_setvane(void) +{ + struct miel_hvac_softc *sc = miel_hvac_sc; + struct miel_hvac_msg_update *update = &sc->sc_update; + const struct miel_hvac_map *e; + + if (XdrvMailbox.data_len == 0) + return; + + e = miel_hvac_map_byname(XdrvMailbox.data, + miel_hvac_vane_map, nitems(miel_hvac_vane_map)); + if (e == NULL) { + miel_hvac_respond_unsupported(); + return; + } + + update->flags |= htons(MIEL_HVAC_UPDATE_F_VANE); + update->vane = e->byte; + + ResponseCmndChar_P(e->name); +} + +static void +miel_hvac_cmnd_setwidevane(void) +{ + struct miel_hvac_softc *sc = miel_hvac_sc; + struct miel_hvac_msg_update *update = &sc->sc_update; + const struct miel_hvac_map *e; + + if (XdrvMailbox.data_len == 0) + return; + + e = miel_hvac_map_byname(XdrvMailbox.data, + miel_hvac_widevane_map, nitems(miel_hvac_widevane_map)); + if (e == NULL) { + miel_hvac_respond_unsupported(); + return; + } + + update->flags |= htons(MIEL_HVAC_UPDATE_F_WIDEVANE); + update->widevane = e->byte; + + ResponseCmndChar_P(e->name); +} + +static inline uint8_t +miel_hvac_remotetemp_degc2old(long degc) +{ + /* + * If a remote temperature reading is provided that cannot be + * represented by the temp_old field, implicitly clamp it to the + * supported min or max. The hardware does this anyway if you + * provide a high value, but without this the min value will + * underflow and turn a high value that the hardware thinks is 38. + */ + + if (degc < MIEL_HVAC_REMOTETEMP_OLD_MIN) + degc = MIEL_HVAC_REMOTETEMP_OLD_MIN; + else if (degc > MIEL_HVAC_REMOTETEMP_OLD_MAX) + degc = MIEL_HVAC_REMOTETEMP_OLD_MIN; + + return ((degc - MIEL_HVAC_REMOTETEMP_OLD_MIN) * + MIEL_HVAC_REMOTETEMP_OLD_FACTOR); +} + +static void +miel_hvac_cmnd_remotetemp(void) +{ + struct miel_hvac_softc *sc = miel_hvac_sc; + struct miel_hvac_msg_remotetemp *rt = &sc->sc_remotetemp; + uint8_t control = MIEL_HVAC_REMOTETEMP_SET; + long degc; + + if (XdrvMailbox.data_len == 0) + return; + + if (strcasecmp(XdrvMailbox.data, "clear") == 0) { + control = MIEL_HVAC_REMOTETEMP_CLR; + degc = 0; + + ResponseCmndChar_P("clear"); + } else { + degc = strtol(XdrvMailbox.data, nullptr, 0); + + /* clamp the argument to supported values */ + if (degc < MIEL_HVAC_REMOTETEMP_MIN) + degc = MIEL_HVAC_REMOTETEMP_MIN; + else if (degc > MIEL_HVAC_REMOTETEMP_MAX) + degc = MIEL_HVAC_REMOTETEMP_MAX; + + ResponseCmndNumber(degc); + } + + memset(rt, 0, sizeof(*rt)); + rt->seven = 0x7; + rt->control = control; + + /* + * Different HVACs (or more likely different generations + * of these HVACs) have different ways to encode the remote + * temperature value. This provides both of them to hopefully + * support all known types of HVACs. + */ + + rt->temp_old = miel_hvac_remotetemp_degc2old(degc); + rt->temp = (degc + MIEL_HVAC_REMOTETEMP_OFFSET) * + MIEL_HVAC_REMOTETEMP_OLD_FACTOR; +} + +#ifdef MIEL_HVAC_DEBUG +static void +miel_hvac_cmnd_request(void) +{ + struct miel_hvac_softc *sc = miel_hvac_sc; + uint8_t type = MIEL_HVAC_REQUEST_ROOMTEMP; + + if (XdrvMailbox.data_len > 0) + type = strtoul(XdrvMailbox.data, nullptr, 0); + + miel_hvac_request(sc, type); + + ResponseCmndDone(); +} +#endif + +/* + * serial data handlers + */ + +static void +miel_hvac_log_bytes(struct miel_hvac_softc *sc, const char *name, + const void *buf, size_t len) +{ + char hex[(MIEL_HVAC_DATABUFLEN + 1) * 2]; + const unsigned char *b = (const unsigned char *)buf; + + AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + ": response %s %s"), name, ToHex_P(b, len, hex, sizeof(hex))); +} + +static void +miel_hvac_input_connected(struct miel_hvac_softc *sc, + const void *buf, size_t len) +{ + AddLog_P2(LOG_LEVEL_INFO, + PSTR(MIEL_HVAC_LOGNAME ": connected to Mitsubishi Electric HVAC")); + sc->sc_connected = 1; +} + +static void +miel_hvac_publish_settings(struct miel_hvac_softc *sc) +{ + const struct miel_hvac_data_settings *set = + &sc->sc_settings.data.settings; + char hex[(sizeof(sc->sc_settings) + 1) * 2]; + char temp[33]; + const char *name; + + Response_P(PSTR("{\"" D_JSON_IRHVAC_POWER "\":\"%s\""), + set->power ? "ON" : "OFF"); + + name = miel_hvac_map_byval( set->mode & + MIEL_HVAC_SETTINGS_MODE_MASK, + miel_hvac_mode_map, nitems(miel_hvac_mode_map)); + if (name != NULL) { + ResponseAppend_P(PSTR(",\"" D_JSON_IRHVAC_MODE "\":\"%s\""), + name); + ResponseAppend_P(PSTR(",\"HA" D_JSON_IRHVAC_MODE "\":\"%s\""), + set->power ? name : "off"); + } + + dtostrfd(ConvertTemp(miel_hvac_temp2deg(set->temp)), + Settings.flag2.temperature_resolution, temp); + ResponseAppend_P(PSTR(",\"" D_JSON_IRHVAC_TEMP "\":%s"), temp); + + name = miel_hvac_map_byval(set->fan, + miel_hvac_fan_map, nitems(miel_hvac_fan_map)); + if (name != NULL) { + ResponseAppend_P(PSTR(",\"" D_JSON_IRHVAC_FANSPEED "\":\"%s\""), + name); + } + + name = miel_hvac_map_byval(set->vane, + miel_hvac_vane_map, nitems(miel_hvac_vane_map)); + if (name != NULL) { + ResponseAppend_P(PSTR(",\"" D_JSON_IRHVAC_SWINGV "\":\"%s\""), + name); + } + + name = miel_hvac_map_byval(set->widevane & + MIEL_HVAC_SETTTINGS_WIDEVANE_MASK, + miel_hvac_widevane_map, nitems(miel_hvac_widevane_map)); + if (name != NULL) { + ResponseAppend_P(PSTR(",\"" D_JSON_IRHVAC_SWINGH "\":\"%s\""), + name); + } + + ResponseAppend_P(PSTR(",\"Bytes\":\"%s\""), + ToHex_P((uint8_t *)&sc->sc_settings, sizeof(sc->sc_settings), + hex, sizeof(hex))); + + ResponseAppend_P(PSTR("}")); + + MqttPublishPrefixTopic_P(TELE, PSTR("HVACSettings")); + + XdrvRulesProcess(); +} + +static void +miel_hvac_input_settings(struct miel_hvac_softc *sc, + const struct miel_hvac_data *d) +{ + const struct miel_hvac_data_settings *set = &d->data.settings; + uint32_t state = set->power ? 1 : 0; /* see ExecuteCommandPower */ + bool publish; + + if (miel_hvac_update_pending(sc)) { + /* + * Don't flop around printing settings that we might be + * changing, but also force them to be published again. + */ + sc->sc_settings_set = 0; + return; + } + + if (bitRead(power, sc->sc_device) != !!state) + ExecuteCommandPower(sc->sc_device, state, SRC_SWITCH); + + publish = (sc->sc_settings_set == 0) || + (memcmp(d, &sc->sc_settings, sizeof(sc->sc_settings)) != 0); + sc->sc_settings_set = 1; + sc->sc_settings = *d; + + if (publish) + miel_hvac_publish_settings(sc); +} + +static void +miel_hvac_data_response(struct miel_hvac_softc *sc, + const struct miel_hvac_data *d) +{ + char hex[(sizeof(*d) + 1) * 2]; + + Response_P(PSTR("{\"Bytes\":\"%s\"}"), + ToHex_P((uint8_t *)d, sizeof(*d), hex, sizeof(hex))); + + MqttPublishPrefixTopic_P(TELE, PSTR("HVACData")); + XdrvRulesProcess(); +} + +static void +miel_hvac_input_sensor(struct miel_hvac_softc *sc, struct miel_hvac_data *dst, + const struct miel_hvac_data *src) +{ + bool publish; + + publish = (memcmp(dst, src, sizeof(*dst)) != 0); + *dst = *src; + + if (publish) + MqttPublishSensor(); + +} + +static void +miel_hvac_input_data(struct miel_hvac_softc *sc, + const void *buf, size_t len) +{ + const struct miel_hvac_data *d; + + miel_hvac_log_bytes(sc, "data", buf, len); + if (len < sizeof(*d)) { + AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + ": short data response (%zu < %zu)"), len, sizeof(*d)); + return; + } + + d = (const struct miel_hvac_data *)buf; + + switch (d->type) { + case MIEL_HVAC_DATA_T_SETTINGS: + miel_hvac_input_settings(sc, d); + break; + case MIEL_HVAC_DATA_T_ROOMTEMP: + miel_hvac_input_sensor(sc, &sc->sc_temp, d); + break; + case MIEL_HVAC_DATA_T_STATUS: + miel_hvac_input_sensor(sc, &sc->sc_status, d); + break; + case MIEL_HVAC_DATA_T_STAGE: + miel_hvac_input_sensor(sc, &sc->sc_stage, d); + break; + default: + miel_hvac_data_response(sc, d); + break; + } +} + +static void +miel_hvac_input_updated(struct miel_hvac_softc *sc, + const void *buf, size_t len) +{ + miel_hvac_log_bytes(sc, "updated", buf, len); +} + +/* + * FUNC handlers + */ + +static void +miel_hvac_pre_init(void) +{ + struct miel_hvac_softc *sc; + int baudrate = 2400; + + if (!PinUsed(GPIO_MIEL_HVAC_TX) || !PinUsed(GPIO_MIEL_HVAC_RX)) + return; + + sc = (struct miel_hvac_softc *)malloc(sizeof(*sc)); + if (sc == NULL) { + AddLog_P(LOG_LEVEL_ERROR, + PSTR(MIEL_HVAC_LOGNAME ": unable to allocate state")); + return; + } + + memset(sc, 0, sizeof(*sc)); + miel_hvac_init_update(&sc->sc_update); + + sc->sc_serial = new TasmotaSerial(Pin(GPIO_MIEL_HVAC_RX), + Pin(GPIO_MIEL_HVAC_TX), 2); + + if (!sc->sc_serial->begin(baudrate, 2)) { + AddLog_P2(LOG_LEVEL_ERROR, + PSTR(MIEL_HVAC_LOGNAME ": unable to begin serial " + "(baudrate %d)"), baudrate); + goto del; + } + + if (sc->sc_serial->hardwareSerial()) { + ClaimSerial(); + SetSerial(baudrate, TS_SERIAL_8E1); + } + + sc->sc_device = devices_present++; /* claim a POWER device slot */ + + miel_hvac_sc = sc; + return; +del: + delete sc->sc_serial; +free: + free(sc); +} + +static void +miel_hvac_loop(struct miel_hvac_softc *sc) +{ + TasmotaSerial *serial = sc->sc_serial; + + while (serial->available()) { + yield(); + + sc->sc_parser.p_state = miel_hvac_parse(sc, serial->read()); + } +} + +static void +miel_hvac_sensor(struct miel_hvac_softc *sc) +{ + char hex[(sizeof(sc->sc_status) + 1) * 2]; + const char *sep = ""; + + ResponseAppend_P(PSTR("," "\"MiElHVAC\":{")); + + if (sc->sc_temp.type != 0) { + const struct miel_hvac_data_roomtemp *rt = + &sc->sc_temp.data.roomtemp; + unsigned int temp = miel_hvac_roomtemp2deg(rt->temp); + char room_temp[33]; + + dtostrfd(ConvertTemp(temp), + Settings.flag2.temperature_resolution, room_temp); + ResponseAppend_P(PSTR("\"" D_JSON_TEMPERATURE "\":%s"), + room_temp); + + sep = ","; + } + + if (sc->sc_status.type != 0) { + const struct miel_hvac_data_status *s = + &sc->sc_status.data.status; + + ResponseAppend_P(PSTR("%s" "\"Operation\":\"%s\"" "," + "\"Compressor\":\"%s\""), sep, + s->operation ? "ON" : "OFF", + s->compressor ? "ON" : "OFF"); + + sep = ","; + } + + if (sc->sc_temp.type != 0) { + ResponseAppend_P(PSTR("%s" "\"roomtemp\":\"%s\""), sep, + ToHex_P((uint8_t *)&sc->sc_temp, sizeof(sc->sc_temp), + hex, sizeof(hex))); + + sep = ","; + } + + if (sc->sc_status.type != 0) { + ResponseAppend_P(PSTR("%s" "\"status\":\"%s\""), sep, + ToHex_P((uint8_t *)&sc->sc_status, sizeof(sc->sc_status), + hex, sizeof(hex))); + + sep = ","; + } + + if (sc->sc_stage.type != 0) { + ResponseAppend_P(PSTR("%s" "\"stage\":\"%s\""), sep, + ToHex_P((uint8_t *)&sc->sc_stage, sizeof(sc->sc_stage), + hex, sizeof(hex))); + } + + ResponseAppend_P(PSTR("}")); +} + +/* + * This is set up to pace interactions with the aircon so we should + * only have a single outstanding request at a time, and to avoid trying + * to change settings while in the middle of reading them. SETTINGS is + * requested frequently so changes from the IR remote are noticed quickly + * and published. Posting new settings preempts queries for information. + */ + +enum miel_hvac_connect_states { + MIEL_HVAC_CONNECT_S_2400_MSG, + MIEL_HVAC_CONNECT_S_9600, + MIEL_HVAC_CONNECT_S_9600_MSG, + MIEL_HVAC_CONNECT_S_2400, + + MIEL_HVAC_CONNECT_S_COUNT, +}; + +static void +miel_hvac_connect(struct miel_hvac_softc *sc) +{ + TasmotaSerial *serial = sc->sc_serial; + uint32_t baudrate; + unsigned int state; + + state = (sc->sc_tick++ % MIEL_HVAC_CONNECT_S_COUNT); + + switch (state) { + case MIEL_HVAC_CONNECT_S_2400: + baudrate = 2400; + break; + case MIEL_HVAC_CONNECT_S_9600: + baudrate = 9600; + break; + default: + miel_hvac_send_connect(sc); + return; + } + + serial->begin(baudrate, 2); + if (serial->hardwareSerial()) + SetSerial(baudrate, TS_SERIAL_8E1); +} + +static void +miel_hvac_tick(struct miel_hvac_softc *sc) +{ + static const uint8_t updates[] = { + MIEL_HVAC_REQUEST_SETTINGS, + MIEL_HVAC_REQUEST_STATUS, + MIEL_HVAC_REQUEST_SETTINGS, + MIEL_HVAC_REQUEST_ROOMTEMP, + + MIEL_HVAC_REQUEST_SETTINGS, + /* MUZ-GA80VA doesnt respond :( */ + MIEL_HVAC_REQUEST_STAGE, + }; + + unsigned int i; + + if (miel_hvac_update_pending(sc)) { + struct miel_hvac_msg_update *update = &sc->sc_update; + + miel_hvac_send_update(sc, update); + + miel_hvac_init_update(update); + + /* refresh settings on next tick */ + sc->sc_tick = 0; + return; + } + + if (sc->sc_remotetemp.seven) { + struct miel_hvac_msg_remotetemp *remotetemp = + &sc->sc_remotetemp; + + miel_hvac_send_remotetemp(sc, remotetemp); + memset(remotetemp, 0, sizeof(*remotetemp)); + return; + } + + i = (sc->sc_tick++ % nitems(updates)); + + miel_hvac_request(sc, updates[i]); +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +static const char miel_hvac_cmnd_names[] PROGMEM = + // No prefix + "|" D_CMND_MIEL_HVAC_SETFANSPEED + "|" D_CMND_MIEL_HVAC_SETMODE + "|" D_CMND_MIEL_HVAC_SETHAMODE + "|" D_CMND_MIEL_HVAC_SETTEMP + "|" D_CMND_MIEL_HVAC_SETSWINGV + "|" D_CMND_MIEL_HVAC_SETSWINGH + "|" D_CMND_MIEL_HVAC_REMOTETEMP +#ifdef MIEL_HVAC_DEBUG + "|" "HVACRequest" +#endif + ; + +static void (*const miel_hvac_cmnds[])(void) PROGMEM = { + &miel_hvac_cmnd_setfanspeed, + &miel_hvac_cmnd_setmode, + &miel_hvac_cmnd_sethamode, /* rain of hate */ + &miel_hvac_cmnd_settemp, + &miel_hvac_cmnd_setvane, + &miel_hvac_cmnd_setwidevane, + &miel_hvac_cmnd_remotetemp, +#ifdef MIEL_HVAC_DEBUG + &miel_hvac_cmnd_request, +#endif +}; + +bool Xdrv44(uint8_t function) { + bool result = false; + struct miel_hvac_softc *sc = miel_hvac_sc; + + switch (function) { + case FUNC_PRE_INIT: + miel_hvac_pre_init(); + return (false); + } + + if (sc == NULL) + return (false); + + switch (function) { + case FUNC_LOOP: + miel_hvac_loop(sc); + break; + + case FUNC_SET_DEVICE_POWER: + result = miel_hvac_set_power(sc); + break; + + case FUNC_EVERY_250_MSECOND: + if (sc->sc_connected) + miel_hvac_tick(sc); + else + miel_hvac_connect(sc); + break; + + case FUNC_EVERY_50_MSECOND: + case FUNC_EVERY_100_MSECOND: + case FUNC_EVERY_200_MSECOND: + case FUNC_EVERY_SECOND: + break; + + case FUNC_JSON_APPEND: + miel_hvac_sensor(sc); + break; + case FUNC_AFTER_TELEPERIOD: + if (sc->sc_settings_set) + miel_hvac_publish_settings(sc); + break; + + case FUNC_COMMAND: + result = DecodeCommand(miel_hvac_cmnd_names, miel_hvac_cmnds); + break; + } + + return (result); +} + +#endif // USE_MIEL_HVAC diff --git a/tools/decode-status.py b/tools/decode-status.py index f1c2c8302..928e68dd1 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -229,7 +229,7 @@ a_features = [[ "USE_VEML7700","USE_MCP9808","USE_BL0940","USE_TELEGRAM", "USE_HP303B","USE_TCP_BRIDGE","USE_TELEINFO","USE_LMT01", "USE_PROMETHEUS","USE_IEM3000","USE_DYP","USE_I2S_AUDIO", - "USE_MLX90640","USE_VL53L1X","","", + "USE_MLX90640","USE_VL53L1X","USE_MIEL_HVAC","", "","USE_TTGO_WATCH","USE_ETHERNET","USE_WEBCAM" ],[ "","","","", @@ -267,7 +267,7 @@ else: obj = json.load(fp) def StartDecode(): - print ("\n*** decode-status.py v20200915 by Theo Arends and Jacek Ziolkowski ***") + print ("\n*** decode-status.py v20201002 by Theo Arends and Jacek Ziolkowski ***") # print("Decoding\n{}".format(obj)) From 6498506f2edfb99cbcda060dc57aacf3c3414a17 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 2 Oct 2020 15:39:31 +0200 Subject: [PATCH 096/119] Fix editing cr --- tasmota/language/fr_FR.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index f1e9dc0f2..433862b98 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -714,7 +714,8 @@ #define D_SENSOR_TCP_TXD "TCP Tx" #define D_SENSOR_TCP_RXD "TCP Rx" #define D_SENSOR_IEM3000_TX "iEM3000 TX" -#define D_SENSOR_IEM3000_RX "iEM3000 RX"#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" +#define D_SENSOR_IEM3000_RX "iEM3000 RX" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" // Units From 6585fc07e853b6a3f71440115afa695eb49f7a1d Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 2 Oct 2020 16:11:13 +0200 Subject: [PATCH 097/119] Change MAX31865 driver to support up to 6 thermocouples Change MAX31865 driver to support up to 6 thermocouples selected by ``MX31865 CS`` instead of ``SSPI CS`` (#9103) --- RELEASENOTES.md | 2 + tasmota/CHANGELOG.md | 1 + tasmota/tasmota_template.h | 8 +-- tasmota/xsns_47_max31865.ino | 114 ++++++++++++++++++++--------------- 4 files changed, 74 insertions(+), 51 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b95077984..b2f70552b 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -64,3 +64,5 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Remove auto config update for all Friendlynames and Switchtopic from versions before 8.x - Change redesigning ESP8266 GPIO internal representation in line with ESP32 - Change new IR Raw compact format (#9444) +- Change MAX31865 driver to support up to 6 thermocouples selected by ``MX31865 CS`` instead of ``SSPI CS`` (#9103) +- Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237) diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index b6eaf46dd..d237822e4 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -7,6 +7,7 @@ - Remove auto config update for all Friendlynames and Switchtopic from versions before 8.x - Change redesigning ESP8266 GPIO internal representation in line with ESP32 - Change new IR Raw compact format (#9444) +- Change MAX31865 driver to support up to 6 thermocouples selected by ``MX31865 CS`` instead of ``SSPI CS`` (#9103) - Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237) ### 8.5.1 20201002 diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 6fbc3e4d7..66f702ebb 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -257,7 +257,7 @@ const char kSensorNames[] PROGMEM = const char kSensorNamesFixed[] PROGMEM = D_SENSOR_USER; -#define MAX_MAX31865_CS 6 +#define MAX_MAX31865S 6 #define MAX_WEBCAM_DATA 8 #define MAX_WEBCAM_HSD 3 @@ -310,6 +310,9 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_BACKLIGHT), // Display backlight control AGPIO(GPIO_OLED_RESET), // OLED Display Reset #endif +#ifdef USE_MAX31865 + AGPIO(GPIO_SSPI_MAX31865_CS1) + MAX_MAX31865S, +#endif AGPIO(GPIO_TXD), // Serial interface AGPIO(GPIO_RXD), // Serial interface @@ -542,9 +545,6 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_MAX31855CLK), // MAX31855 Serial interface AGPIO(GPIO_MAX31855DO), // MAX31855 Serial interface #endif -#ifdef USE_MAX31855 - AGPIO(GPIO_SSPI_MAX31865_CS1) + MAX_MAX31865_CS, -#endif #ifdef USE_HRE AGPIO(GPIO_HRE_CLOCK), AGPIO(GPIO_HRE_DATA), diff --git a/tasmota/xsns_47_max31865.ino b/tasmota/xsns_47_max31865.ino index 220af5d80..c45b13927 100644 --- a/tasmota/xsns_47_max31865.ino +++ b/tasmota/xsns_47_max31865.ino @@ -18,8 +18,9 @@ */ #ifdef USE_MAX31865 - -#include "Adafruit_MAX31865.h" +/*********************************************************************************************\ + * MAX31865 - Thermocouple +\*********************************************************************************************/ #define XSNS_47 47 @@ -31,72 +32,89 @@ #define PTD_WIRES MAX31865_2WIRE #endif -int8_t init_status = 0; +#include "Adafruit_MAX31865.h" -Adafruit_MAX31865 max31865; +int8_t max31865_init_status = 0; +uint8_t max31865_pins_used = 0; //used as a bit array + +Adafruit_MAX31865 max31865[MAX_MAX31865S]; struct MAX31865_Result_Struct { - uint8_t ErrorCode; - uint16_t Rtd; - float PtdResistance; - float PtdTemp; -} MAX31865_Result; + uint8_t ErrorCode; + uint16_t Rtd; + float PtdResistance; + float PtdTemp; +} MAX31865_Result[MAX_MAX31865S]; -void MAX31865_Init(void){ - if(init_status) - return; +void MAX31865_Init(void) { + if (max31865_init_status) { return; } - max31865.setPins( - Pin(GPIO_SSPI_CS), - Pin(GPIO_SSPI_MOSI), - Pin(GPIO_SSPI_MISO), - Pin(GPIO_SSPI_SCLK) - ); + max31865_init_status = 1; + for (uint32_t i = 0; i < MAX_MAX31865S; i++) { + if (PinUsed(GPIO_SSPI_MAX31865_CS1, i)) { + max31865_pins_used |= 1 << i; //set lowest bit + max31865[0].setPins( + Pin(GPIO_SSPI_MAX31865_CS1, i), + Pin(GPIO_SSPI_MOSI), + Pin(GPIO_SSPI_MISO), + Pin(GPIO_SSPI_SCLK) + ); - if(max31865.begin(PTD_WIRES)) - init_status = 1; - else - init_status = -1; + if (!max31865[i].begin(PTD_WIRES)) { + max31865_init_status = -1; + } + } + } } /* * MAX31865_GetResult(void) * Acquires the raw data via SPI, checks for MAX31865 errors and fills result structure */ -void MAX31865_GetResult(void){ - uint16_t rtd; +void MAX31865_GetResult(void) { + for (uint32_t i = 0; i < MAX_MAX31865S; i++) { + if (max31865_pins_used & (1 << i)) { + uint16_t rtd; - rtd = max31865.readRTD(); - MAX31865_Result.Rtd = rtd; - MAX31865_Result.PtdResistance = max31865.rtd_to_resistance(rtd, MAX31865_REF_RES); - MAX31865_Result.PtdTemp = max31865.rtd_to_temperature(rtd, MAX31865_PTD_RES, MAX31865_REF_RES) + MAX31865_PTD_BIAS; + rtd = max31865[i].readRTD(); + MAX31865_Result[i].Rtd = rtd; + MAX31865_Result[i].PtdResistance = max31865[i].rtd_to_resistance(rtd, MAX31865_REF_RES); + MAX31865_Result[i].PtdTemp = max31865[i].rtd_to_temperature(rtd, MAX31865_PTD_RES, MAX31865_REF_RES) + MAX31865_PTD_BIAS; + } + } } -void MAX31865_Show(bool Json){ - char temperature[33]; - char resistance[33]; +void MAX31865_Show(bool Json) { + uint8_t report_once = 0; + for (uint32_t i = 0; i < MAX_MAX31865S; i++) { + if (max31865_pins_used & (1 << i)) { + char temperature[33]; + char resistance[33]; - dtostrfd(MAX31865_Result.PtdResistance, Settings.flag2.temperature_resolution, resistance); - dtostrfd(MAX31865_Result.PtdTemp, Settings.flag2.temperature_resolution, temperature); + dtostrfd(MAX31865_Result[i].PtdResistance, Settings.flag2.temperature_resolution, resistance); + dtostrfd(MAX31865_Result[i].PtdTemp, Settings.flag2.temperature_resolution, temperature); - if(Json){ - ResponseAppend_P(PSTR(",\"MAX31865\":{\"" D_JSON_TEMPERATURE "\":%s,\"" D_JSON_RESISTANCE "\":%s,\"" D_JSON_ERROR "\":%d}"), \ - temperature, resistance, MAX31865_Result.ErrorCode); + if (Json) { + ResponseAppend_P(PSTR(",\"MAX31865%c%d\":{\"" D_JSON_TEMPERATURE "\":%s,\"" D_JSON_RESISTANCE "\":%s,\"" D_JSON_ERROR "\":%d}"), \ + IndexSeparator(), i, temperature, resistance, MAX31865_Result[i].ErrorCode); + if ((0 == tele_period) && (!report_once)) { #ifdef USE_DOMOTICZ - if (0 == tele_period) { DomoticzSensor(DZ_TEMP, temperature); - } #endif // USE_DOMOTICZ #ifdef USE_KNX - if (0 == tele_period) { - KnxSensor(KNX_TEMPERATURE, MAX31865_Result.PtdTemp); - } + KnxSensor(KNX_TEMPERATURE, MAX31865_Result[i].PtdTemp); #endif // USE_KNX - } else { + report_once++; + } #ifdef USE_WEBSERVER - WSContentSend_PD(HTTP_SNS_TEMP, "MAX31865", temperature, TempUnit()); + } else { + char sensorname[33]; + sprintf(sensorname, "MAX31865%c%d", IndexSeparator(), i); + WSContentSend_PD(HTTP_SNS_TEMP, sensorname, temperature, TempUnit()); #endif // USE_WEBSERVER + } } + } } /*********************************************************************************************\ @@ -106,8 +124,10 @@ void MAX31865_Show(bool Json){ bool Xsns47(uint8_t function) { bool result = false; - if (PinUsed(GPIO_SSPI_MISO) && PinUsed(GPIO_SSPI_MOSI) && - PinUsed(GPIO_SSPI_SCLK) && PinUsed(GPIO_SSPI_CS)) { + + if (PinUsed(GPIO_SSPI_MISO) && PinUsed(GPIO_SSPI_MOSI) && PinUsed(GPIO_SSPI_SCLK) && + (PinUsed(GPIO_SSPI_MAX31865_CS1) || PinUsed(GPIO_SSPI_MAX31865_CS1, 1) || PinUsed(GPIO_SSPI_MAX31865_CS1, 2) || + PinUsed(GPIO_SSPI_MAX31865_CS1, 3) || PinUsed(GPIO_SSPI_MAX31865_CS1, 4) || PinUsed(GPIO_SSPI_MAX31865_CS1, 5))) { switch (function) { case FUNC_INIT: @@ -119,12 +139,12 @@ bool Xsns47(uint8_t function) break; case FUNC_JSON_APPEND: - MAX31865_Show(true); + MAX31865_Show(1); break; #ifdef USE_WEBSERVER case FUNC_WEB_SENSOR: - MAX31865_Show(false); + MAX31865_Show(0); break; #endif // USE_WEBSERVER } From 330109d67c0c25b3805a55575a43e1b38db05963 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 2 Oct 2020 16:37:43 +0200 Subject: [PATCH 098/119] Add optional support for Orno WE517 Add optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353) --- BUILDS.md | 1 + RELEASENOTES.md | 1 + tasmota/CHANGELOG.md | 1 + tasmota/language/bg_BG.h | 2 + tasmota/language/cs_CZ.h | 2 + tasmota/language/de_DE.h | 2 + tasmota/language/el_GR.h | 2 + tasmota/language/en_GB.h | 2 + tasmota/language/es_ES.h | 2 + tasmota/language/fr_FR.h | 2 + tasmota/language/he_HE.h | 2 + tasmota/language/hu_HU.h | 2 + tasmota/language/it_IT.h | 2 + tasmota/language/ko_KO.h | 2 + tasmota/language/nl_NL.h | 2 + tasmota/language/pl_PL.h | 2 + tasmota/language/pt_BR.h | 2 + tasmota/language/pt_PT.h | 2 + tasmota/language/ro_RO.h | 2 + tasmota/language/ru_RU.h | 2 + tasmota/language/sk_SK.h | 2 + tasmota/language/sv_SE.h | 2 + tasmota/language/tr_TR.h | 2 + tasmota/language/uk_UA.h | 2 + tasmota/language/zh_CN.h | 2 + tasmota/language/zh_TW.h | 2 + tasmota/my_user_config.h | 1 + tasmota/support_features.ino | 6 +- tasmota/tasmota_configurations.h | 12 +- tasmota/tasmota_template.h | 9 +- tasmota/xnrg_17_ornowe517.ino | 232 +++++++++++++++++++++++++++++++ tools/decode-status.py | 2 +- 32 files changed, 306 insertions(+), 5 deletions(-) create mode 100644 tasmota/xnrg_17_ornowe517.ino diff --git a/BUILDS.md b/BUILDS.md index 3740f5708..254c84be8 100644 --- a/BUILDS.md +++ b/BUILDS.md @@ -73,6 +73,7 @@ | USE_BL0940 | - | x | x | x | x | - | - | | USE_TELEINFO | - | - | - | - | - | - | - | | USE_IEM3000 | - | - | - | - | - | - | - | +| USE_WE517 | - | - | - | - | - | - | - | | | | | | | | | | | USE_ADC_VCC | x | x | - | - | - | x | - | | USE_COUNTER | - | - | x | x | x | - | x | diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b2f70552b..5a0f71364 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -66,3 +66,4 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Change new IR Raw compact format (#9444) - Change MAX31865 driver to support up to 6 thermocouples selected by ``MX31865 CS`` instead of ``SSPI CS`` (#9103) - Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237) +- Add optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353) diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index d237822e4..28234a417 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -9,6 +9,7 @@ - Change new IR Raw compact format (#9444) - Change MAX31865 driver to support up to 6 thermocouples selected by ``MX31865 CS`` instead of ``SSPI CS`` (#9103) - Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237) +- Add optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353) ### 8.5.1 20201002 diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index 3d607e4bf..9cc01de9a 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index 659632efd..bf8f67a37 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 2f01b0e59..23db7da4f 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index c2429d55a..95b640da8 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 54e4a6850..2ac306f8e 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 8adc6e74e..1401c4fce 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index 433862b98..15dd090dc 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -596,6 +596,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 RX" #define D_SENSOR_SDM630_TX "SDM630 TX" #define D_SENSOR_SDM630_RX "SDM630 RX" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index 75f95fda4..ae2e439be 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 1adb960cb..8a800383d 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 3e94ce149..1a14eee05 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 - RX" #define D_SENSOR_SDM630_TX "SDM630 - TX" #define D_SENSOR_SDM630_RX "SDM630 - RX" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 - CLK" #define D_SENSOR_TM1638_DIO "TM16 - DIO" #define D_SENSOR_TM1638_STB "TM16 - STB" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index 7aadf0b78..5a8522b72 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 5b190884a..ec8116deb 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 18eedb5dc..8ebba663e 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index e6fe1a938..115704748 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 1106827ee..202564422 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index ed9848857..13c91f8e8 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 1796d1b30..fe4de2043 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 240e86003..986bc95cd 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 72030d9ce..3178cbd30 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index ddfe84e43..5c6254f3b 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 5c583da06..8e3b01691 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index b3f1de4e9..a50acdb0e 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 5ee1cd862..65c865491 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -600,6 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 Rx" #define D_SENSOR_SDM630_TX "SDM630 Tx" #define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_WE517_TX "WE517 Tx" +#define D_SENSOR_WE517_RX "WE517 Rx" #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 6c2f002a7..bef983bde 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -668,6 +668,7 @@ //#define USE_IEM3000 // Add support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code) #define IEM3000_SPEED 19200 // iEM3000-Modbus RS485 serial speed (default: 19200 baud) #define IEM3000_ADDR 1 // iEM3000-Modbus modbus address (default: 0x01) +//#define USE_WE517 // Add support for Orno WE517-Modbus energy monitor (+1k code) // -- Low level interface devices ----------------- #define USE_DHT // Add support for DHT11, AM2301 (DHT21, DHT22, AM2302, AM2321) and SI7021 Temperature and Humidity sensor (1k6 code) diff --git a/tasmota/support_features.ino b/tasmota/support_features.ino index a4cc5aab7..0a71d86ed 100644 --- a/tasmota/support_features.ino +++ b/tasmota/support_features.ino @@ -610,8 +610,12 @@ void GetFeatures(void) #ifdef USE_MIEL_HVAC feature6 |= 0x04000000; // xdrv_44_miel_hvac.ino #endif -// feature6 |= 0x08000000; +#if defined(USE_ENERGY_SENSOR) && defined(USE_WE517) + feature6 |= 0x08000000; // xnrg_17_ornowe517.ino +#endif + // feature6 |= 0x10000000; + #if defined(ESP32) && defined(USE_TTGO_WATCH) feature6 |= 0x20000000; // xdrv_83_esp32watch.ino #endif diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index 6a08a9dc6..f9b165ae7 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -174,6 +174,7 @@ //#define USE_SOLAX_X1 // Add support for Solax X1 series Modbus log info (+3k1 code) //#define USE_LE01MR // Add support for F&F LE-01MR modbus energy meter (+2k code) //#define USE_TELEINFO // Add support for French Energy Provider metering telemetry (+5k2 code, +168 RAM + SmartMeter LinkedList Values RAM) +//#define USE_WE517 // Add support for Orno WE517-Modbus energy monitor (+1k code) #define USE_DHT // Add support for DHT11, AM2301 (DHT21, DHT22, AM2302, AM2321) and SI7021 Temperature and Humidity sensor #define USE_MAX31855 // Add support for MAX31855 K-Type thermocouple sensor using softSPI @@ -271,6 +272,8 @@ #undef USE_SOLAX_X1 // Disable support for Solax X1 series Modbus log info (+3k1 code) #undef USE_LE01MR // Disable support for F&F LE-01MR Modbus energy meter (+2k code) #undef USE_TELEINFO // Disable support for French Energy Provider metering telemetry + #undef USE_IEM3000 // Disable support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code) + #undef USE_WE517 // Disable support for Orno WE517-Modbus energy monitor (+1k code) #define USE_I2C // I2C using library wire (+10k code, 0k2 mem, 124 iram) @@ -365,6 +368,8 @@ #undef USE_SOLAX_X1 // Disable support for Solax X1 series Modbus log info (+3k1 code) #undef USE_LE01MR // Disable support for F&F LE-01MR Modbus energy meter (+2k code) #undef USE_TELEINFO // Disable support for French Energy Provider metering telemetry + #undef USE_IEM3000 // Disable support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code) + #undef USE_WE517 // Disable support for Orno WE517-Modbus energy monitor (+1k code) //#undef USE_DS18x20 // Disable support for DS18x20 sensors with id sort, single scan and read retry (+1k3 code) @@ -521,7 +526,8 @@ #undef USE_SOLAX_X1 // Disable support for Solax X1 series Modbus log info (+3k1 code) #undef USE_LE01MR // Disable support for F&F LE-01MR Modbus energy meter (+2k code) #undef USE_TELEINFO // Disable support for French Energy Provider metering telemetry - +#undef USE_IEM3000 // Disable support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code) +#undef USE_WE517 // Disable support for Orno WE517-Modbus energy monitor (+1k code) #undef USE_DHT // Disable support for DHT11, AM2301 (DHT21, DHT22, AM2302, AM2321) and SI7021 Temperature and Humidity sensor #undef USE_MAX31855 // Disable MAX31855 K-Type thermocouple sensor using softSPI @@ -655,7 +661,8 @@ #undef USE_SOLAX_X1 // Disable support for Solax X1 series Modbus log info (+3k1 code) #undef USE_LE01MR // Disable support for F&F LE-01MR Modbus energy meter (+2k code) #undef USE_TELEINFO // Disable support for French Energy Provider metering telemetry - +#undef USE_IEM3000 // Disable support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code) +#undef USE_WE517 // Disable support for Orno WE517-Modbus energy monitor (+1k code) #undef USE_DHT // Disable support for DHT11, AM2301 (DHT21, DHT22, AM2302, AM2321) and SI7021 Temperature and Humidity sensor #undef USE_MAX31855 // Disable MAX31855 K-Type thermocouple sensor using softSPI @@ -791,6 +798,7 @@ #undef USE_BL0940 // Disable support for BL0940 Energy monitor as used in Blitzwolf SHP-10 (+1k6 code) #undef USE_TELEINFO // Disable support for French Energy Provider metering telemetry #undef USE_IEM3000 // Disable support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code) +#undef USE_WE517 // Disable support for Orno WE517-Modbus energy monitor (+1k code) #undef USE_DHT // Disable support for DHT11, AM2301 (DHT21, DHT22, AM2302, AM2321) and SI7021 Temperature and Humidity sensor #undef USE_MAX31855 // Disable MAX31855 K-Type thermocouple sensor using softSPI diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 66f702ebb..3fcbd11d9 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -148,6 +148,8 @@ enum UserSelectablePins { GPIO_DYP_RX, GPIO_MIEL_HVAC_TX, // Mitsubishi Electric HVAC TX pin GPIO_MIEL_HVAC_RX, // Mitsubishi Electric HVAC RX pin + GPIO_WE517_TX, // ORNO WE517 Serial interface + GPIO_WE517_RX, // ORNO WE517 Serial interface GPIO_SENSOR_END }; enum ProgramSelectablePins { @@ -251,7 +253,8 @@ const char kSensorNames[] PROGMEM = D_SENSOR_IEM3000_TX "|" D_SENSOR_IEM3000_RX "|" D_SENSOR_ZIGBEE_RST "|" D_SENSOR_DYP_RX "|" - D_SENSOR_MIEL_HVAC_TX "|" D_SENSOR_MIEL_HVAC_RX + D_SENSOR_MIEL_HVAC_TX "|" D_SENSOR_MIEL_HVAC_RX "|" + D_SENSOR_WE517_TX "|" D_SENSOR_WE517_RX ; const char kSensorNamesFixed[] PROGMEM = @@ -457,6 +460,10 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_IEM3000_TX), // IEM3000 Serial interface AGPIO(GPIO_IEM3000_RX), // IEM3000 Serial interface #endif +#ifdef USE_WE517 + AGPIO(GPIO_WE517_TX), // WE517 Serial interface + AGPIO(GPIO_WE517_RX), // WE517 Serial interface +#endif #endif // USE_ENERGY_SENSOR // Serial diff --git a/tasmota/xnrg_17_ornowe517.ino b/tasmota/xnrg_17_ornowe517.ino new file mode 100644 index 000000000..c62cccc4a --- /dev/null +++ b/tasmota/xnrg_17_ornowe517.ino @@ -0,0 +1,232 @@ +/* + xnrg_17_ornowe512.ino - Orno WE517-Modbus energy meter support for Tasmota + + Copyright (C) 2020 Maxime Vincent - based on the work of Gennaro Tortone 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 . +*/ + +#ifdef USE_ENERGY_SENSOR +#ifdef USE_WE517 +/*********************************************************************************************\ + * Orno WE517-Modbus energy meter + * + * [SetOption72: Set reference used for total energy] + * This driver supports SetOption72 = 1, which enables the use of Hardware Energy Totals, + * (as apposed to software energy totals kept in Tasmota flash memory) +\*********************************************************************************************/ + +#define XNRG_17 17 + +// can be user defined in my_user_config.h +#ifndef WE517_SPEED + #define WE517_SPEED 9600 // default WE517 Modbus address +#endif +// can be user defined in my_user_config.h +#ifndef WE517_ADDR + #define WE517_ADDR 1 // default WE517 Modbus address +#endif + +#define FUNCTION_CODE_READ_HOLDING_REGISTERS (0x03) + +#include +TasmotaModbus *We517Modbus; + +const uint16_t we517_start_addresses[] { + /* */ // 3P4 3P3 1P2 Unit Description + /* 0 */ 0x000E, // + - + V Phase 1 line to neutral volts + /* 1 */ 0x0010, // + - - V Phase 2 line to neutral volts + /* 2 */ 0x0012, // + - - V Phase 3 line to neutral volts + /* 3 */ 0x0016, // + + + A Phase 1 current + /* 4 */ 0x0018, // + + - A Phase 2 current + /* 5 */ 0x001A, // + + - A Phase 3 current + /* 6 */ 0x001E, // + - + kW Phase 1 power + /* 7 */ 0x0020, // + - + kW Phase 2 power + /* 8 */ 0x0022, // + - - kW Phase 3 power + /* 9 */ 0x0026, // + - + VAr Phase 1 volt amps reactive + /* 10 */ 0x0026, // + - - VAr Phase 2 volt amps reactive + /* 11 */ 0x002A, // + - - VAr Phase 3 volt amps reactive + /* 12 */ 0x0036, // + - + Phase 1 power factor + /* 13 */ 0x0038, // + - - Phase 2 power factor + /* 14 */ 0x003A, // + - - Phase 3 power factor + /* 15 */ 0x0014, // + + + Hz Frequency of supply voltages + /* 16 */ 0x0100 // + + + kWh Total active energy +}; + +struct WE517 { + uint8_t read_state = 0; + uint8_t send_retry = 0; +} We517; + +/*********************************************************************************************/ + +void WE517Every250ms(void) +{ + bool data_ready = We517Modbus->ReceiveReady(); + + if (data_ready) { + uint8_t buffer[14]; // At least 5 + (2 * 2) = 9 + + uint32_t error = We517Modbus->ReceiveBuffer(buffer, 2); + AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, We517Modbus->ReceiveCount()); + + if (error) { + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ORNO: WE517 error %d"), error); + } else { + Energy.data_valid[0] = 0; + Energy.data_valid[1] = 0; + Energy.data_valid[2] = 0; + + // 0 1 2 3 4 5 6 7 8 + // SA FC BC Fh Fl Sh Sl Cl Ch + // 01 04 04 43 66 33 34 1B 38 = 230.2 Volt + float value; + ((uint8_t*)&value)[3] = buffer[3]; // Get float values + ((uint8_t*)&value)[2] = buffer[4]; + ((uint8_t*)&value)[1] = buffer[5]; + ((uint8_t*)&value)[0] = buffer[6]; + + switch(We517.read_state) { + case 0: + Energy.voltage[0] = value; + break; + + case 1: + Energy.voltage[1] = value; + break; + + case 2: + Energy.voltage[2] = value; + break; + + case 3: + Energy.current[0] = value; + break; + + case 4: + Energy.current[1] = value; + break; + + case 5: + Energy.current[2] = value; + break; + + case 6: + Energy.active_power[0] = value * 1000; + break; + + case 7: + Energy.active_power[1] = value * 1000; + break; + + case 8: + Energy.active_power[2] = value * 1000; + break; + + case 9: + Energy.reactive_power[0] = value; + break; + + case 10: + Energy.reactive_power[1] = value; + break; + + case 11: + Energy.reactive_power[2] = value; + break; + + case 12: + Energy.power_factor[0] = value; + break; + + case 13: + Energy.power_factor[1] = value; + break; + + case 14: + Energy.power_factor[2] = value; + break; + + case 15: + Energy.frequency[0] = value; + break; + + case 16: + EnergyUpdateTotal(value, true); + break; + } + + We517.read_state++; + if (sizeof(we517_start_addresses)/2 == We517.read_state) { + We517.read_state = 0; + } + } + } // end data ready + + if (0 == We517.send_retry || data_ready) { + We517.send_retry = 5; + We517Modbus->Send(WE517_ADDR, FUNCTION_CODE_READ_HOLDING_REGISTERS, we517_start_addresses[We517.read_state], 2); + } else { + We517.send_retry--; + } +} + +void We517SnsInit(void) +{ + We517Modbus = new TasmotaModbus(Pin(GPIO_WE517_RX), Pin(GPIO_WE517_TX)); + uint8_t result = We517Modbus->Begin(WE517_SPEED); + if (result) { + if (2 == result) { + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ORNO: WE517 HW serial init 8E1 at %d baud"), WE517_SPEED); + Serial.begin(WE517_SPEED, SERIAL_8E1); + ClaimSerial(); + } + Energy.phase_count = 3; + Energy.frequency_common = true; // Use common frequency + } else { + energy_flg = ENERGY_NONE; + } +} + +void We517DrvInit(void) +{ + if (PinUsed(GPIO_WE517_RX) && PinUsed(GPIO_WE517_TX)) { + energy_flg = XNRG_17; + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +bool Xnrg17(uint8_t function) +{ + bool result = false; + + switch (function) { + case FUNC_EVERY_250_MSECOND: + if (uptime > 4) { WE517Every250ms(); } + break; + case FUNC_INIT: + We517SnsInit(); + break; + case FUNC_PRE_INIT: + We517DrvInit(); + break; + } + return result; +} + +#endif // USE_WE517 +#endif // USE_ENERGY_SENSOR \ No newline at end of file diff --git a/tools/decode-status.py b/tools/decode-status.py index 928e68dd1..985f06d2d 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -229,7 +229,7 @@ a_features = [[ "USE_VEML7700","USE_MCP9808","USE_BL0940","USE_TELEGRAM", "USE_HP303B","USE_TCP_BRIDGE","USE_TELEINFO","USE_LMT01", "USE_PROMETHEUS","USE_IEM3000","USE_DYP","USE_I2S_AUDIO", - "USE_MLX90640","USE_VL53L1X","USE_MIEL_HVAC","", + "USE_MLX90640","USE_VL53L1X","USE_MIEL_HVAC","USE_WE517", "","USE_TTGO_WATCH","USE_ETHERNET","USE_WEBCAM" ],[ "","","","", From d07fa4b49289f879e56117e3b69430157d3ff069 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 2 Oct 2020 17:09:09 +0200 Subject: [PATCH 099/119] Change A4988 optional microstep pin selection --- RELEASENOTES.md | 1 + tasmota/CHANGELOG.md | 1 + tasmota/tasmota_template.h | 65 +++++++++++++++++++++++++------ tasmota/xdrv_25_A4988_Stepper.ino | 6 +-- 4 files changed, 58 insertions(+), 15 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 5a0f71364..b8bb36cef 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -65,5 +65,6 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Change redesigning ESP8266 GPIO internal representation in line with ESP32 - Change new IR Raw compact format (#9444) - Change MAX31865 driver to support up to 6 thermocouples selected by ``MX31865 CS`` instead of ``SSPI CS`` (#9103) +- Change A4988 optional microstep pin selection - Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237) - Add optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353) diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index 28234a417..5d8b7ed5f 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -8,6 +8,7 @@ - Change redesigning ESP8266 GPIO internal representation in line with ESP32 - Change new IR Raw compact format (#9444) - Change MAX31865 driver to support up to 6 thermocouples selected by ``MX31865 CS`` instead of ``SSPI CS`` (#9103) +- Change A4988 optional microstep pin selection - Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237) - Add optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353) diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 3fcbd11d9..b62240e49 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -100,8 +100,9 @@ enum UserSelectablePins { GPIO_ZIGBEE_TX, GPIO_ZIGBEE_RX, // Zigbee Serial interface GPIO_RDM6300_RX, // RDM6300 RX GPIO_IBEACON_TX, GPIO_IBEACON_RX, // HM17 IBEACON Serial interface - GPIO_A4988_DIR, GPIO_A4988_STP, GPIO_A4988_ENA, // A4988 interface - GPIO_A4988_MS1, GPIO_A4988_MS2, GPIO_A4988_MS3, // A4988 microstep + GPIO_A4988_DIR, GPIO_A4988_STP, GPIO_A4988_ENA, GPIO_A4988_MS1, // A4988 interface + GPIO_SPARE1, // Do not use + GPIO_SPARE2, // Do not use GPIO_DDS2382_TX, GPIO_DDS2382_RX, // DDS2382 Serial interface GPIO_DDSU666_TX, GPIO_DDSU666_RX, // DDSU666 Serial interface GPIO_SM2135_CLK, GPIO_SM2135_DAT, // SM2135 PWM controller @@ -212,7 +213,9 @@ const char kSensorNames[] PROGMEM = D_SENSOR_ZIGBEE_TXD "|" D_SENSOR_ZIGBEE_RXD "|" D_SENSOR_RDM6300_RX "|" D_SENSOR_IBEACON_TX "|" D_SENSOR_IBEACON_RX "|" - D_SENSOR_A4988_DIR "|" D_SENSOR_A4988_STP "|" D_SENSOR_A4988_ENA "|" D_SENSOR_A4988_MS1 "|" D_SENSOR_A4988_MS2 "|" D_SENSOR_A4988_MS3 "|" + D_SENSOR_A4988_DIR "|" D_SENSOR_A4988_STP "|" D_SENSOR_A4988_ENA "|" D_SENSOR_A4988_MS1 "|" + "s1|" + "s2|" D_SENSOR_DDS2382_TX "|" D_SENSOR_DDS2382_RX "|" D_SENSOR_DDSU666_TX "|" D_SENSOR_DDSU666_RX "|" D_SENSOR_SM2135_CLK "|" D_SENSOR_SM2135_DAT "|" @@ -261,6 +264,7 @@ const char kSensorNamesFixed[] PROGMEM = D_SENSOR_USER; #define MAX_MAX31865S 6 +#define MAX_A4988_MSS 3 #define MAX_WEBCAM_DATA 8 #define MAX_WEBCAM_HSD 3 @@ -293,10 +297,16 @@ const uint16_t kGpioNiceList[] PROGMEM = { #endif AGPIO(GPIO_LEDLNK), // Link led AGPIO(GPIO_LEDLNK_INV), // Inverted link led + +/*-------------------------------------------------------------------------------------------*\ + * Protocol specifics +\*-------------------------------------------------------------------------------------------*/ + #ifdef USE_I2C AGPIO(GPIO_I2C_SCL), // I2C SCL AGPIO(GPIO_I2C_SDA), // I2C SDA #endif + #ifdef USE_SPI AGPIO(GPIO_SPI_MISO), // SPI MISO AGPIO(GPIO_SPI_MOSI), // SPI MOSI @@ -320,6 +330,10 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_TXD), // Serial interface AGPIO(GPIO_RXD), // Serial interface +/*-------------------------------------------------------------------------------------------*\ + * Single wire sensors +\*-------------------------------------------------------------------------------------------*/ + #ifdef USE_DHT AGPIO(GPIO_DHT11), // DHT11 AGPIO(GPIO_DHT22), // DHT21, DHT22, AM2301, AM2302, AM2321 @@ -334,7 +348,10 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_LMT01), // LMT01, count pulses on GPIO #endif -// Light +/*-------------------------------------------------------------------------------------------*\ + * Light +\*-------------------------------------------------------------------------------------------*/ + #ifdef USE_LIGHT #ifdef USE_WS2812 AGPIO(GPIO_WS2812), // WS2812 Led string @@ -368,13 +385,16 @@ const uint16_t kGpioNiceList[] PROGMEM = { #endif #endif // USE_LIGHT +/*-------------------------------------------------------------------------------------------*\ + * Transmission sensors +\*-------------------------------------------------------------------------------------------*/ + #if defined(USE_IR_REMOTE) || defined(USE_IR_REMOTE_FULL) AGPIO(GPIO_IRSEND), // IR remote #if defined(USE_IR_RECEIVE) || defined(USE_IR_REMOTE_FULL) AGPIO(GPIO_IRRECV), // IR receiver #endif #endif - #ifdef USE_RC_SWITCH AGPIO(GPIO_RFSEND), // RF transmitter AGPIO(GPIO_RFRECV), // RF receiver @@ -396,7 +416,10 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_HX711_DAT), // HX711 Load Cell data #endif -// Energy sensors +/*-------------------------------------------------------------------------------------------*\ + * Energy sensors +\*-------------------------------------------------------------------------------------------*/ + #ifdef USE_ENERGY_SENSOR #ifdef USE_HLW8012 AGPIO(GPIO_NRG_SEL), // HLW8012/HLJ-01 Sel output (1 = Voltage) @@ -466,7 +489,10 @@ const uint16_t kGpioNiceList[] PROGMEM = { #endif #endif // USE_ENERGY_SENSOR -// Serial +/*-------------------------------------------------------------------------------------------*\ + * Serial sensors +\*-------------------------------------------------------------------------------------------*/ + #ifdef USE_SERIAL_BRIDGE AGPIO(GPIO_SBR_TX), // Serial Bridge Serial interface AGPIO(GPIO_SBR_RX), // Serial Bridge Serial interface @@ -543,6 +569,10 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_BOILER_OT_RX), #endif +/*-------------------------------------------------------------------------------------------*\ + * Other sensors +\*-------------------------------------------------------------------------------------------*/ + #ifdef USE_MGC3130 AGPIO(GPIO_MGC3130_XFER), AGPIO(GPIO_MGC3130_RESET), @@ -561,9 +591,7 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_A4988_STP), // A4988 step pin // folowing are not mandatory AGPIO(GPIO_A4988_ENA), // A4988 enabled pin - AGPIO(GPIO_A4988_MS1), // A4988 microstep pin1 - AGPIO(GPIO_A4988_MS2), // A4988 microstep pin2 - AGPIO(GPIO_A4988_MS3), // A4988 microstep pin3 + AGPIO(GPIO_A4988_MS1) + MAX_A4988_MSS, // A4988 microstep pin1 to pin3 #endif #ifdef USE_DEEPSLEEP AGPIO(GPIO_DEEPSLEEP), @@ -590,6 +618,10 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_MIEL_HVAC_RX), // Mitsubishi Electric HVAC RX pin #endif +/*-------------------------------------------------------------------------------------------*\ + * ESP32 specifics +\*-------------------------------------------------------------------------------------------*/ + #ifdef ESP32 #ifdef USE_WEBCAM AGPIO(GPIO_WEBCAM_PWDN), @@ -610,6 +642,11 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_ETH_PHY_MDC), AGPIO(GPIO_ETH_PHY_MDIO), // Ethernet #endif // USE_ETHERNET + +/*-------------------------------------------------------------------------------------------*\ + * ESP32 multiple Analog / Digital converter inputs +\*-------------------------------------------------------------------------------------------*/ + AGPIO(GPIO_ADC_INPUT) + MAX_ADCS, // Analog inputs AGPIO(GPIO_ADC_TEMP) + MAX_ADCS, // Thermistor AGPIO(GPIO_ADC_LIGHT) + MAX_ADCS, // Light sensor @@ -621,6 +658,10 @@ const uint16_t kGpioNiceList[] PROGMEM = { #endif // ESP32 }; +/*-------------------------------------------------------------------------------------------*\ + * ESP8266 single Analog / Digital converter input +\*-------------------------------------------------------------------------------------------*/ + #ifdef ESP8266 const uint16_t kAdcNiceList[] PROGMEM = { GPIO_NONE, // Not used @@ -1151,8 +1192,8 @@ const uint16_t kGpioConvert[] PROGMEM = { AGPIO(GPIO_A4988_STP), // A4988 step pin AGPIO(GPIO_A4988_ENA), // A4988 enabled pin AGPIO(GPIO_A4988_MS1), // A4988 microstep pin1 - AGPIO(GPIO_A4988_MS2), // A4988 microstep pin2 - AGPIO(GPIO_A4988_MS3), // A4988 microstep pin3 + AGPIO(GPIO_A4988_MS1) +1, // A4988 microstep pin2 + AGPIO(GPIO_A4988_MS1) +2, // A4988 microstep pin3 AGPIO(GPIO_DDS2382_TX), // DDS2382 Serial interface AGPIO(GPIO_DDS2382_RX), // DDS2382 Serial interface AGPIO(GPIO_DDSU666_TX), // DDSU666 Serial interface diff --git a/tasmota/xdrv_25_A4988_Stepper.ino b/tasmota/xdrv_25_A4988_Stepper.ino index 48f559314..f70ed76f0 100644 --- a/tasmota/xdrv_25_A4988_Stepper.ino +++ b/tasmota/xdrv_25_A4988_Stepper.ino @@ -45,8 +45,8 @@ void A4988Init(void) A4988_stp_pin = Pin(GPIO_A4988_STP); A4988_ena_pin = Pin(GPIO_A4988_ENA); A4988_ms1_pin = Pin(GPIO_A4988_MS1); - A4988_ms2_pin = Pin(GPIO_A4988_MS2); - A4988_ms3_pin = Pin(GPIO_A4988_MS3); + A4988_ms2_pin = Pin(GPIO_A4988_MS1, 1); + A4988_ms3_pin = Pin(GPIO_A4988_MS1, 2); A4988_spr = 200; A4988_rpm = 30; A4988_mis = 1; @@ -93,7 +93,7 @@ void CmndDoTurn(void) { } void CmndSetMIS(void) { - if (PinUsed(GPIO_A4988_MS1) && PinUsed(GPIO_A4988_MS2) && PinUsed(GPIO_A4988_MS3) && (XdrvMailbox.data_len > 0)) { + if (PinUsed(GPIO_A4988_MS1) && PinUsed(GPIO_A4988_MS1, 1) && PinUsed(GPIO_A4988_MS1, 2) && (XdrvMailbox.data_len > 0)) { short newMIS = strtoul(XdrvMailbox.data,nullptr,10); myA4988->setMIS(newMIS); ResponseCmndDone(); From a9630b9d053036960ac03d2de74c97fb4f7a400d Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 2 Oct 2020 17:32:45 +0200 Subject: [PATCH 100/119] Change pulsetime to allow use for all relays Change pulsetime to allow use for all relays with 8 interleaved so ``Pulsetime1`` is valid for Relay1, Relay9, Relay17 etc. (#9279) --- RELEASENOTES.md | 1 + tasmota/CHANGELOG.md | 1 + tasmota/support_tasmota.ino | 23 ++++++++++++----------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b8bb36cef..be79a720a 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -66,5 +66,6 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Change new IR Raw compact format (#9444) - Change MAX31865 driver to support up to 6 thermocouples selected by ``MX31865 CS`` instead of ``SSPI CS`` (#9103) - Change A4988 optional microstep pin selection +- Change pulsetime to allow use for all relays with 8 interleaved so ``Pulsetime1`` is valid for Relay1, Relay9, Relay17 etc. (#9279) - Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237) - Add optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353) diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index 5d8b7ed5f..cc2ecb29c 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -9,6 +9,7 @@ - Change new IR Raw compact format (#9444) - Change MAX31865 driver to support up to 6 thermocouples selected by ``MX31865 CS`` instead of ``SSPI CS`` (#9103) - Change A4988 optional microstep pin selection +- Change pulsetime to allow use for all relays with 8 interleaved so ``Pulsetime1`` is valid for Relay1, Relay9, Relay17 etc. (#9279) - Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237) - Add optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353) diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index 62ba70a33..219f2e039 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -333,8 +333,8 @@ void SetPowerOnState(void) bitWrite(power, i, digitalRead(Pin(GPIO_REL1, i)) ^ bitRead(rel_inverted, i)); } } - if ((i < MAX_PULSETIMERS) && (bitRead(power, i) || (POWER_ALL_OFF_PULSETIME_ON == Settings.poweronstate))) { - SetPulseTimer(i, Settings.pulse_timer[i]); + if (bitRead(power, i) || (POWER_ALL_OFF_PULSETIME_ON == Settings.poweronstate)) { + SetPulseTimer(i % MAX_PULSETIMERS, Settings.pulse_timer[i % MAX_PULSETIMERS]); } } blink_powersave = power; @@ -531,9 +531,8 @@ void ExecuteCommandPower(uint32_t device, uint32_t state, uint32_t source) } active_device = device; - if (device <= MAX_PULSETIMERS) { - SetPulseTimer(device -1, 0); - } + SetPulseTimer((device -1) % MAX_PULSETIMERS, 0); + power_t mask = 1 << (device -1); // Device to control if (state <= POWER_TOGGLE) { if ((blink_mask & mask)) { @@ -589,9 +588,9 @@ void ExecuteCommandPower(uint32_t device, uint32_t state, uint32_t source) if (publish_power && Settings.flag3.hass_tele_on_power) { // SetOption59 - Send tele/%topic%/STATE in addition to stat/%topic%/RESULT MqttPublishTeleState(); } - if (device <= MAX_PULSETIMERS) { // Restart PulseTime if powered On - SetPulseTimer(device -1, (((POWER_ALL_OFF_PULSETIME_ON == Settings.poweronstate) ? ~power : power) & mask) ? Settings.pulse_timer[device -1] : 0); - } + + // Restart PulseTime if powered On + SetPulseTimer((device -1) % MAX_PULSETIMERS, (((POWER_ALL_OFF_PULSETIME_ON == Settings.poweronstate) ? ~power : power) & mask) ? Settings.pulse_timer[(device -1) % MAX_PULSETIMERS] : 0); } else if (POWER_BLINK == state) { if (!(blink_mask & mask)) { @@ -887,7 +886,9 @@ void Every100mSeconds(void) if (pulse_timer[i] != 0L) { // Timer active? if (TimeReached(pulse_timer[i])) { // Timer finished? pulse_timer[i] = 0L; // Turn off this timer - ExecuteCommandPower(i +1, (POWER_ALL_OFF_PULSETIME_ON == Settings.poweronstate) ? POWER_ON : POWER_OFF, SRC_PULSETIMER); + for (uint32_t j = 0; j < devices_present; j = j +MAX_PULSETIMERS) { + ExecuteCommandPower(i + j +1, (POWER_ALL_OFF_PULSETIME_ON == Settings.poweronstate) ? POWER_ON : POWER_OFF, SRC_PULSETIMER); + } } } } @@ -1067,8 +1068,8 @@ void Every250mSeconds(void) if (save_data_counter <= 0) { if (Settings.flag.save_state) { // SetOption0 - Save power state and use after restart power_t mask = POWER_MASK; - for (uint32_t i = 0; i < MAX_PULSETIMERS; i++) { - if ((Settings.pulse_timer[i] > 0) && (Settings.pulse_timer[i] < 30)) { // 3 seconds + for (uint32_t i = 0; i < devices_present; i++) { + if ((Settings.pulse_timer[i % MAX_PULSETIMERS] > 0) && (Settings.pulse_timer[i % MAX_PULSETIMERS] < 30)) { // 3 seconds mask &= ~(1 << i); } } From e3cc5df996fd10034de82f2362c4f13670356926 Mon Sep 17 00:00:00 2001 From: Paul C Diem Date: Fri, 2 Oct 2020 12:40:45 -0500 Subject: [PATCH 101/119] Add PWMDimmerPWMs command, Set brightness LEDs in setBriRGB & setBriCT --- tasmota/i18n.h | 1 + tasmota/settings.h | 14 +++++++++++++- tasmota/xdrv_04_light.ino | 16 +++++++++++++--- tasmota/xdrv_35_pwm_dimmer.ino | 23 +++++++++++++++++++++-- 4 files changed, 48 insertions(+), 6 deletions(-) diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 50c87660f..2f35ad1e3 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -615,6 +615,7 @@ // Commands xdrv_34_pwm_dimmer.ino #ifdef USE_PWM_DIMMER #define D_CMND_BRI_PRESET "BriPreset" +#define D_CMND_PWM_DIMMER_PWMS "PWMDimmerPWMs" #endif // Commands xdrv_38_ping.ino diff --git a/tasmota/settings.h b/tasmota/settings.h index b4598f987..842444c03 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -277,6 +277,18 @@ typedef union { }; } SensorCfg1; +typedef union { + uint8_t data; + struct { + uint8_t pwm_count : 3; // Number of PWMs to use for light + uint8_t spare3 : 1; + uint8_t spare4 : 1; + uint8_t spare5 : 1; + uint8_t spare6 : 1; + uint8_t spare7 : 1; + }; +} PWMDimmerCfg; + typedef union { uint8_t data; struct { @@ -589,7 +601,7 @@ struct { uint8_t sps30_inuse_hours; // F02 uint8_t hotplug_scan; // F03 uint8_t bri_power_on; // F04 - uint8_t bri_min; // F05 + PWMDimmerCfg pwm_dimmer_cfg; // F05 uint8_t bri_preset_low; // F06 uint8_t bri_preset_high; // F07 int8_t hum_comp; // F08 diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index b90d882c8..e0e3a7e66 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -564,9 +564,6 @@ class LightStateClass { #ifdef DEBUG_LIGHT AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setBri RGB raw (%d %d %d) HS (%d %d) bri (%d)", _r, _g, _b, _hue, _sat, _briRGB); #endif -#ifdef USE_PWM_DIMMER - if (PWM_DIMMER == my_module_type) PWMDimmerSetBrightnessLeds(0); -#endif // USE_PWM_DIMMER } // changes the RGB brightness alone @@ -574,6 +571,9 @@ class LightStateClass { uint8_t prev_bri = _briRGB; _briRGB = bri_rgb; if (bri_rgb > 0) { addRGBMode(); } +#ifdef USE_PWM_DIMMER + if (PWM_DIMMER == my_module_type) PWMDimmerSetBrightnessLeds(0); +#endif // USE_PWM_DIMMER return prev_bri; } @@ -582,6 +582,9 @@ class LightStateClass { uint8_t prev_bri = _briCT; _briCT = bri_ct; if (bri_ct > 0) { addCTMode(); } +#ifdef USE_PWM_DIMMER + if (PWM_DIMMER == my_module_type) PWMDimmerSetBrightnessLeds(0); +#endif // USE_PWM_DIMMER return prev_bri; } @@ -1275,6 +1278,13 @@ bool LightModuleInit(void) light_type = LT_PWM2; } #endif // ESP8266 +#ifdef USE_PWM_DIMMER +#ifdef USE_DEVICE_GROUPS + else if (PWM_DIMMER == my_module_type) { + light_type = Settings.pwm_dimmer_cfg.pwm_count + 1; + } +#endif // USE_DEVICE_GROUPS +#endif // USE_PWM_DIMMER if (light_type > LT_BASIC) { devices_present++; diff --git a/tasmota/xdrv_35_pwm_dimmer.ino b/tasmota/xdrv_35_pwm_dimmer.ino index 0e7a7bea8..fc2de3034 100644 --- a/tasmota/xdrv_35_pwm_dimmer.ino +++ b/tasmota/xdrv_35_pwm_dimmer.ino @@ -33,10 +33,18 @@ #define XDRV_35 35 const char kPWMDimmerCommands[] PROGMEM = "|" // No prefix - D_CMND_BRI_PRESET; + D_CMND_BRI_PRESET +#ifdef USE_DEVICE_GROUPS + "|" D_CMND_PWM_DIMMER_PWMS +#endif // USE_DEVICE_GROUPS + ; void (* const PWMDimmerCommand[])(void) PROGMEM = { - &CmndBriPreset }; + &CmndBriPreset, +#ifdef USE_DEVICE_GROUPS + &CmndPWMDimmerPWMs, +#endif // USE_DEVICE_GROUPS + }; #ifdef USE_PWM_DIMMER_REMOTE struct remote_pwm_dimmer { @@ -731,6 +739,17 @@ void CmndBriPreset(void) Response_P(PSTR("{\"" D_CMND_BRI_PRESET "\":{\"Low\":%d,\"High\":%d}}"), Settings.bri_preset_low, Settings.bri_preset_high); } +#ifdef USE_DEVICE_GROUPS +void CmndPWMDimmerPWMs(void) +{ + if (XdrvMailbox.data_len > 0 && XdrvMailbox.payload <= 5) { + Settings.pwm_dimmer_cfg.pwm_count = XdrvMailbox.payload - 1; + restart_flag = 2; + } + Response_P(PSTR("{\"" D_CMND_PWM_DIMMER_PWMS "\":%u}"), Settings.pwm_dimmer_cfg.pwm_count + 1); +} +#endif // USE_DEVICE_GROUPS + /*********************************************************************************************\ * Interface \*********************************************************************************************/ From c09828617d788e34d0ebb702eef9117da8c5f6e9 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 2 Oct 2020 22:05:55 +0200 Subject: [PATCH 102/119] Auto-binding for TRV --- tasmota/xdrv_23_zigbee_5_converters.ino | 8 ++++++++ tasmota/xdrv_23_zigbee_8_parsers.ino | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index 217a003c4..6cdc245ba 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -1302,6 +1302,7 @@ void ZCLFrame::parseReadConfigAttributes(Z_attribute_list& attr_list) { } // find the attribute name + int8_t multiplier = 1; for (uint32_t i = 0; i < ARRAY_SIZE(Z_PostProcess); i++) { const Z_AttributeConverter *converter = &Z_PostProcess[i]; uint16_t conv_cluster = CxToCluster(pgm_read_byte(&converter->cluster_short)); @@ -1310,6 +1311,7 @@ void ZCLFrame::parseReadConfigAttributes(Z_attribute_list& attr_list) { if ((conv_cluster == _cluster_id) && (conv_attribute == attrid)) { const char * attr_name = Z_strings + pgm_read_word(&converter->name_offset); attr_2.addAttribute(attr_name, true).setBool(true); + multiplier = pgm_read_byte(&converter->multiplier); break; } } @@ -1337,6 +1339,12 @@ void ZCLFrame::parseReadConfigAttributes(Z_attribute_list& attr_list) { // decode Reportable Change Z_attribute &attr_change = attr_2.addAttribute(F("ReportableChange")); i += parseSingleAttribute(attr_change, _payload, i, attr_type); + if ((1 != multiplier) && (0 != multiplier)) { + float fval = attr_change.getFloat(); + if (multiplier > 0) { fval = fval * multiplier; } + else { fval = fval / (-multiplier); } + attr_change.setFloat(fval); + } } } } diff --git a/tasmota/xdrv_23_zigbee_8_parsers.ino b/tasmota/xdrv_23_zigbee_8_parsers.ino index 2ce98cd01..68dfa4212 100644 --- a/tasmota/xdrv_23_zigbee_8_parsers.ino +++ b/tasmota/xdrv_23_zigbee_8_parsers.ino @@ -562,7 +562,7 @@ int32_t Z_ReceiveActiveEp(int32_t res, const class SBuffer &buf) { // list of clusters that need bindings const uint8_t Z_bindings[] PROGMEM = { - Cx0001, Cx0006, Cx0008, Cx0300, + Cx0001, Cx0006, Cx0008, Cx0201, Cx0300, Cx0400, Cx0402, Cx0403, Cx0405, Cx0406, Cx0500, }; @@ -1216,6 +1216,9 @@ const Z_autoAttributeReporting_t Z_autoAttributeReporting[] PROGMEM = { { 0x0001, 0x0020, 15*60, 15*60, 0.1 }, // BatteryVoltage { 0x0001, 0x0021, 15*60, 15*60, 1 }, // BatteryPercentage { 0x0006, 0x0000, 1, 60*60, 0 }, // Power + { 0x0201, 0x0000, 60, 60*10, 0.5 }, // LocalTemperature + { 0x0201, 0x0008, 60, 60*10, 10 }, // PIHeatingDemand + { 0x0201, 0x0012, 60, 60*10, 0.5 }, // OccupiedHeatingSetpoint { 0x0008, 0x0000, 1, 60*60, 5 }, // Dimmer { 0x0300, 0x0000, 1, 60*60, 5 }, // Hue { 0x0300, 0x0001, 1, 60*60, 5 }, // Sat From 9b85487d399490ed44b1eb71caec7a00dba796f4 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 2 Oct 2020 22:30:11 +0200 Subject: [PATCH 103/119] Zigbee add TRV to UI --- tasmota/xdrv_23_zigbee_A_impl.ino | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index 7bacb43d9..3e29c7962 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -1432,16 +1432,26 @@ void ZigbeeShow(bool json) // Sensors bool temperature_ok = device.validTemperature(); + bool tempareture_target_ok = device.validTemperatureTarget(); + bool th_setpoint_ok = device.validThSetpoint(); bool humidity_ok = device.validHumidity(); bool pressure_ok = device.validPressure(); - if (temperature_ok || humidity_ok || pressure_ok) { + if (temperature_ok || tempareture_target_ok || th_setpoint_ok || humidity_ok || pressure_ok) { WSContentSend_P(PSTR("┆")); if (temperature_ok) { char buf[12]; dtostrf(device.temperature / 10.0f, 3, 1, buf); WSContentSend_PD(PSTR(" ☀️ %s°C"), buf); } + if (tempareture_target_ok) { + char buf[12]; + dtostrf(device.temperature_target / 10.0f, 3, 1, buf); + WSContentSend_PD(PSTR(" 🎯 %s°C"), buf); + } + if (th_setpoint_ok) { + WSContentSend_PD(PSTR(" ⚙️ %d%%"), device.th_setpoint); + } if (humidity_ok) { WSContentSend_P(PSTR(" 💧 %d%%"), device.humidity); } From ba5268c8686d4fb313475762de1d1d4c810f065a Mon Sep 17 00:00:00 2001 From: bovirus <1262554+bovirus@users.noreply.github.com> Date: Sat, 3 Oct 2020 08:50:30 +0200 Subject: [PATCH 104/119] Update Italian language --- tasmota/language/it_IT.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 1a14eee05..d82c47aa3 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -1,7 +1,7 @@ /* it-IT.h - localization for Italian - Italy for Tasmota - Copyright (C) 2020 Gennaro Tortone - some mods by Antonio Fragola - Updated by bovirus - rev. 05.09.2020 + Copyright (C) 2020 Gennaro Tortone - some mods by Antonio Fragola - Updated by bovirus - rev. 03.10.2020 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 @@ -600,8 +600,8 @@ #define D_SENSOR_SDM120_RX "SDMx20 - RX" #define D_SENSOR_SDM630_TX "SDM630 - TX" #define D_SENSOR_SDM630_RX "SDM630 - RX" -#define D_SENSOR_WE517_TX "WE517 Tx" -#define D_SENSOR_WE517_RX "WE517 Rx" +#define D_SENSOR_WE517_TX "WE517 - TX" +#define D_SENSOR_WE517_RX "WE517 - RX" #define D_SENSOR_TM1638_CLK "TM16 - CLK" #define D_SENSOR_TM1638_DIO "TM16 - DIO" #define D_SENSOR_TM1638_STB "TM16 - STB" From dab734ad3fda4c616ba392c26966cbb3dd4bf1f0 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 3 Oct 2020 12:08:43 +0200 Subject: [PATCH 105/119] Update v9.0.0.1 information --- README.md | 8 +++++++- RELEASENOTES.md | 2 +- tasmota/CHANGELOG.md | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d45340157..f5c750cbb 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ If you like **Tasmota**, give it a star, or fork it and contribute! [![GitHub forks](https://img.shields.io/github/forks/arendst/Tasmota.svg?style=social&label=Fork)](https://github.com/arendst/Tasmota/network) [![donate](https://img.shields.io/badge/donate-PayPal-blue.svg)](https://paypal.me/tasmota) -See [RELEASENOTES.md](RELEASENOTES.md) for release information. +See [RELEASENOTES.md](https://github.com/arendst/Tasmota/blob/master/RELEASENOTES.md) for release information. In addition to the [release webpage](https://github.com/arendst/Tasmota/releases/latest) the binaries can also be downloaded from http://ota.tasmota.com/tasmota/release/ @@ -78,6 +78,12 @@ See [wiki migration path](https://tasmota.github.io/docs/Upgrading#migration-pat 6. Migrate to **Tasmota 8.1** 7. Migrate to **Tasmota 8.x** +--- Major change in internal GPIO function representation --- + +8. Migrate to **Tasmota 9.x** + +While fallback or downgrading is common practice it was never supported due to Settings additions or changes in newer releases. Starting with version **v9.0.0.1** the internal GPIO function representation has changed in such a way that fallback is only possible to the latest GPIO configuration before installing **v9.0.0.1**. + ## Support Information diff --git a/RELEASENOTES.md b/RELEASENOTES.md index be79a720a..d36b14a0c 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -17,7 +17,7 @@ See [migration path](https://tasmota.github.io/docs/Upgrading#migration-path) fo 6. Migrate to **Tasmota 8.1** 7. Migrate to **Tasmota 8.x** ---- Major change in GPIO function representation --- +--- Major change in internal GPIO function representation --- 8. Migrate to **Tasmota 9.x** diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index cc2ecb29c..18e1336a2 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -1,5 +1,3 @@ -## Released - ## Unreleased (development) ### 9.0.0.1 20201002 @@ -13,6 +11,8 @@ - Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237) - Add optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353) +## Released + ### 8.5.1 20201002 - Release Hannah From ad3cfa6cbbe5d6c0095f0aee10e326ed5b8d2fc0 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 3 Oct 2020 12:46:58 +0200 Subject: [PATCH 106/119] Add SDM630 three phase ImportActive Energy display Add SDM630 three phase ImportActive Energy display when ``#define SDM630_IMPORT`` is enabled by Janusz Kostorz (#9124) --- RELEASENOTES.md | 1 + tasmota/CHANGELOG.md | 1 + tasmota/my_user_config.h | 2 +- tasmota/xdrv_03_energy.ino | 14 +++++++------- tasmota/xnrg_10_sdm630.ino | 8 ++++---- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index d36b14a0c..19b30f3d2 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -69,3 +69,4 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Change pulsetime to allow use for all relays with 8 interleaved so ``Pulsetime1`` is valid for Relay1, Relay9, Relay17 etc. (#9279) - Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237) - Add optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353) +- Add SDM630 three phase ImportActive Energy display when ``#define SDM630_IMPORT`` is enabled by Janusz Kostorz (#9124) diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index 18e1336a2..b7f84b270 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -10,6 +10,7 @@ - Change pulsetime to allow use for all relays with 8 interleaved so ``Pulsetime1`` is valid for Relay1, Relay9, Relay17 etc. (#9279) - Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237) - Add optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353) +- Add SDM630 three phase ImportActive Energy display when ``#define SDM630_IMPORT`` is enabled by Janusz Kostorz (#9124) ## Released diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 3df0a428f..e08a486ce 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -652,7 +652,7 @@ #define SDM120_SPEED 2400 // SDM120-Modbus RS485 serial speed (default: 2400 baud) //#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy monitor (+0k6 code) #define SDM630_SPEED 9600 // SDM630-Modbus RS485 serial speed (default: 9600 baud) -//#define SDM630_IMPORT // Show import active energy in MQTT and Web (+0k3 code) +// #define SDM630_IMPORT // Show import active energy in MQTT and Web (+0k3 code) //#define USE_DDS2382 // Add support for Hiking DDS2382 Modbus energy monitor (+0k6 code) #define DDS2382_SPEED 9600 // Hiking DDS2382 Modbus RS485 serial speed (default: 9600 baud) //#define USE_DDSU666 // Add support for Chint DDSU666 Modbus energy monitor (+0k6 code) diff --git a/tasmota/xdrv_03_energy.ino b/tasmota/xdrv_03_energy.ino index b221291d1..789f9fab4 100644 --- a/tasmota/xdrv_03_energy.ino +++ b/tasmota/xdrv_03_energy.ino @@ -80,9 +80,9 @@ struct ENERGY { float power_factor[3] = { NAN, NAN, NAN }; // 0.12 float frequency[3] = { NAN, NAN, NAN }; // 123.1 Hz - #ifdef SDM630_IMPORT +#ifdef SDM630_IMPORT float import_active[3] = { NAN, NAN, NAN }; // 123.123 kWh -#endif +#endif // SDM630_IMPORT float export_active[3] = { NAN, NAN, NAN }; // 123.123 kWh float start_energy = 0; // 12345.12345 kWh total previous @@ -994,7 +994,7 @@ void EnergyShow(bool json) char active_power_chr[Energy.phase_count][FLOATSZ]; #ifdef SDM630_IMPORT char import_active_chr[Energy.phase_count][FLOATSZ]; -#endif +#endif // SDM630_IMPORT char export_active_chr[Energy.phase_count][FLOATSZ]; for (uint32_t i = 0; i < Energy.phase_count; i++) { dtostrfd(Energy.voltage[i], Settings.flag2.voltage_resolution, voltage_chr[i]); @@ -1002,7 +1002,7 @@ void EnergyShow(bool json) dtostrfd(Energy.active_power[i], Settings.flag2.wattage_resolution, active_power_chr[i]); #ifdef SDM630_IMPORT dtostrfd(Energy.import_active[i], Settings.flag2.energy_resolution, import_active_chr[i]); -#endif +#endif // SDM630_IMPORT dtostrfd(Energy.export_active[i], Settings.flag2.energy_resolution, export_active_chr[i]); } @@ -1054,7 +1054,7 @@ void EnergyShow(bool json) EnergyFormatIndex(value_chr, energy_return_chr[0], json, 2)); } } -#endif +#endif // SDM630_IMPORT if (!isnan(Energy.export_active[0])) { ResponseAppend_P(PSTR(",\"" D_JSON_EXPORT_ACTIVE "\":%s"), @@ -1160,11 +1160,11 @@ void EnergyShow(bool json) if (!isnan(Energy.export_active[0])) { WSContentSend_PD(HTTP_ENERGY_SNS3, EnergyFormat(value_chr, export_active_chr[0], json)); } - #ifdef SDM630_IMPORT +#ifdef SDM630_IMPORT if (!isnan(Energy.import_active[0])) { WSContentSend_PD(HTTP_ENERGY_SNS4, EnergyFormat(value_chr, import_active_chr[0], json)); } -#endif +#endif // SDM630_IMPORT XnrgCall(FUNC_WEB_SENSOR); #endif // USE_WEBSERVER diff --git a/tasmota/xnrg_10_sdm630.ino b/tasmota/xnrg_10_sdm630.ino index 92b8e98e4..c1f36b110 100644 --- a/tasmota/xnrg_10_sdm630.ino +++ b/tasmota/xnrg_10_sdm630.ino @@ -60,11 +60,11 @@ const uint16_t sdm630_start_addresses[] { 0x0160, // + + + kWh Phase 1 export active energy 0x0162, // + + + kWh Phase 2 export active energy 0x0164, // + + + kWh Phase 3 export active energy - #ifdef SDM630_IMPORT +#ifdef SDM630_IMPORT 0x015A, // + + + kWh Phase 1 import active energy 0x015C, // + + + kWh Phase 2 import active energy 0x015E, // + + + kWh Phase 3 import active energy -#endif +#endif // SDM630_IMPORT 0x0156 // + + + kWh Total active energy }; @@ -179,7 +179,7 @@ void SDM630Every250ms(void) break; case 19: - #ifdef SDM630_IMPORT +#ifdef SDM630_IMPORT Energy.import_active[0] = value; break; @@ -192,7 +192,7 @@ void SDM630Every250ms(void) break; case 22: -#endif +#endif // SDM630_IMPORT EnergyUpdateTotal(value, true); break; } From 6f790c0bb0cfdd49af476b844d181ca0c46a4cef Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 3 Oct 2020 15:06:52 +0200 Subject: [PATCH 107/119] Add support for GPIO_ANY --- tasmota/my_user_config.h | 2 +- tasmota/support.ino | 9 +++++++-- tasmota/tasmota_template.h | 2 ++ tasmota/xsns_47_max31865.ino | 5 +---- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index e08a486ce..647217911 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -652,7 +652,7 @@ #define SDM120_SPEED 2400 // SDM120-Modbus RS485 serial speed (default: 2400 baud) //#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy monitor (+0k6 code) #define SDM630_SPEED 9600 // SDM630-Modbus RS485 serial speed (default: 9600 baud) -// #define SDM630_IMPORT // Show import active energy in MQTT and Web (+0k3 code) +// #define SDM630_IMPORT // Show import active energy in MQTT and Web (+0k3 code) //#define USE_DDS2382 // Add support for Hiking DDS2382 Modbus energy monitor (+0k6 code) #define DDS2382_SPEED 9600 // Hiking DDS2382 Modbus RS485 serial speed (default: 9600 baud) //#define USE_DDSU666 // Add support for Chint DDSU666 Modbus energy monitor (+0k6 code) diff --git a/tasmota/support.ino b/tasmota/support.ino index a0d515d24..ce5a523f1 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -1218,9 +1218,14 @@ void DumpConvertTable(void) { uint32_t ICACHE_RAM_ATTR Pin(uint32_t gpio, uint32_t index = 0); uint32_t ICACHE_RAM_ATTR Pin(uint32_t gpio, uint32_t index) { - uint16_t real_gpio = (gpio << 5) + index; + uint16_t real_gpio = gpio << 5; + uint16_t mask = 0xFFE0; + if (index < GPIO_ANY) { + real_gpio += index; + mask = 0xFFFF; + } for (uint32_t i = 0; i < ARRAY_SIZE(gpio_pin); i++) { - if (gpio_pin[i] == real_gpio) { + if ((gpio_pin[i] & mask) == real_gpio) { return i; // Pin number configured for gpio } } diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index b62240e49..0099a46e8 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -695,6 +695,8 @@ enum UserSelectableAdc { * ATTENTION: No user changeable features beyond this point - do not add templates !!! \*********************************************************************************************/ +#define GPIO_ANY 32 // Any GPIO + #ifdef ESP8266 #define MAX_GPI8_PIN 17 // Number of supported GPIO (0..16) diff --git a/tasmota/xsns_47_max31865.ino b/tasmota/xsns_47_max31865.ino index c45b13927..adf4d3611 100644 --- a/tasmota/xsns_47_max31865.ino +++ b/tasmota/xsns_47_max31865.ino @@ -125,10 +125,7 @@ bool Xsns47(uint8_t function) { bool result = false; - if (PinUsed(GPIO_SSPI_MISO) && PinUsed(GPIO_SSPI_MOSI) && PinUsed(GPIO_SSPI_SCLK) && - (PinUsed(GPIO_SSPI_MAX31865_CS1) || PinUsed(GPIO_SSPI_MAX31865_CS1, 1) || PinUsed(GPIO_SSPI_MAX31865_CS1, 2) || - PinUsed(GPIO_SSPI_MAX31865_CS1, 3) || PinUsed(GPIO_SSPI_MAX31865_CS1, 4) || PinUsed(GPIO_SSPI_MAX31865_CS1, 5))) { - + if (PinUsed(GPIO_SSPI_MAX31865_CS1, GPIO_ANY) && PinUsed(GPIO_SSPI_MISO) && PinUsed(GPIO_SSPI_MOSI) && PinUsed(GPIO_SSPI_SCLK)) { switch (function) { case FUNC_INIT: MAX31865_Init(); From ef63b21d99c23ca292dd0ad696fc09acbb2c1aa2 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sat, 3 Oct 2020 18:30:18 +0200 Subject: [PATCH 108/119] fix scripter json decode crash --- tasmota/xdrv_10_scripter.ino | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index a3cba3385..40961770d 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -3708,6 +3708,7 @@ void esp32_beep(int32_t freq ,uint32_t len) { #define IF_NEST 8 // execute section of scripter int16_t Run_Scripter(const char *type, int8_t tlen, char *js) { +int16_t retval; if (!glob_script_mem.scriptptr) { return -99; @@ -3717,12 +3718,15 @@ int16_t Run_Scripter(const char *type, int8_t tlen, char *js) { JsonParserObject jo; if (js) { - String jss = js; // copy the string to a new buffer, not sure we can change the original buffer - JsonParser parser((char*)jss.c_str()); + //String jss = js; // copy the string to a new buffer, not sure we can change the original buffer + //JsonParser parser((char*)jss.c_str()); + JsonParser parser(js); jo = parser.getRootObject(); + retval = Run_script_sub(type, tlen, &jo); + } else { + retval = Run_script_sub(type, tlen, 0); } - - return Run_script_sub(type, tlen, &jo); + return retval; } int16_t Run_script_sub(const char *type, int8_t tlen, JsonParserObject *jo) { From e2983e3f1be342dd5476645111a7dd81cd8a223b Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sat, 3 Oct 2020 18:30:39 +0200 Subject: [PATCH 109/119] sendmail allow array attachment --- tasmota/sendemail.ino | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/tasmota/sendemail.ino b/tasmota/sendemail.ino index bc080bd7f..a93c51358 100644 --- a/tasmota/sendemail.ino +++ b/tasmota/sendemail.ino @@ -402,10 +402,15 @@ void xsend_message_txt(char *msg) { g_client->print(F("\r\n--frontier\r\n")); } #else - g_client->print(F("--frontier\r\n")); - g_client->print(F("Content-Type: text/plain\r\n\r\n")); - g_client->println(msg); - g_client->print(F("\r\n--frontier\r\n")); + if (*msg=='&') { + msg++; + attach_Array(msg); + } else { + g_client->print(F("--frontier\r\n")); + g_client->print(F("Content-Type: text/plain\r\n\r\n")); + g_client->println(msg); + g_client->print(F("\r\n--frontier\r\n")); + } #endif } @@ -439,6 +444,8 @@ void attach_File(char *path) { g_client->print(F("\r\n--frontier\r\n")); } +#endif // defined(USE_SCRIPT_FATFS) && defined(USE_SCRIPT) + float *get_array_by_name(char *name, uint16_t *alen); void flt2char(float num, char *nbuff); @@ -473,8 +480,6 @@ void attach_Array(char *aname) { g_client->print(F("\r\n--frontier\r\n")); } -#endif // defined(USE_SCRIPT_FATFS) && defined(USE_SCRIPT) - #else From 1cb4964a4ee5c7d306d23eb3082d125633c45a4b Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sat, 3 Oct 2020 18:31:14 +0200 Subject: [PATCH 110/119] fix i2saudio when file not found --- tasmota/xdrv_42_i2s_audio.ino | 39 ++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/tasmota/xdrv_42_i2s_audio.ino b/tasmota/xdrv_42_i2s_audio.ino index 4a3bd91b0..aa0979797 100644 --- a/tasmota/xdrv_42_i2s_audio.ino +++ b/tasmota/xdrv_42_i2s_audio.ino @@ -54,6 +54,8 @@ AudioFileSourceID3 *id3; AudioGeneratorMP3 *decoder = NULL; void *mp3ram = NULL; +#define I2SAUDIO_TASK_STACK_SIZE 8192 + #ifdef ESP8266 const int preallocateBufferSize = 5*1024; @@ -189,6 +191,7 @@ void sayTime(int hour, int minutes, AudioGeneratorTalkie *talkie) { } else { talkie->say(spA_M_, sizeof(spA_M_)); } + out->stop(); delete talkie; TTGO_PWR_OFF } @@ -293,7 +296,7 @@ void Webradio(const char *url) { retryms = millis() + 2000; } - xTaskCreatePinnedToCore(mp3_task2, "MP3-2", 8192, NULL, 3, &mp3_task_h, 1); + xTaskCreatePinnedToCore(mp3_task2, "MP3-2", I2SAUDIO_TASK_STACK_SIZE, NULL, 3, &mp3_task_h, 1); } void mp3_task2(void *arg){ @@ -373,25 +376,27 @@ void Play_mp3(const char *path) { } file = new AudioFileSourceFS(*fsp,path); - id3 = new AudioFileSourceID3(file); + if (file->isOpen()) { + id3 = new AudioFileSourceID3(file); - if (mp3ram) { - mp3 = new AudioGeneratorMP3(mp3ram, preallocateCodecSize); - } else { - mp3 = new AudioGeneratorMP3(); - } - mp3->begin(id3, out); + if (mp3ram) { + mp3 = new AudioGeneratorMP3(mp3ram, preallocateCodecSize); + } else { + mp3 = new AudioGeneratorMP3(); + } + mp3->begin(id3, out); - if (I2S_Task) { - xTaskCreatePinnedToCore(mp3_task, "MP3", 8192, NULL, 3, &mp3_task_h, 1); - } else { - while (mp3->isRunning()) { - if (!mp3->loop()) { - mp3->stop(); - mp3_delete(); - break; + if (I2S_Task) { + xTaskCreatePinnedToCore(mp3_task, "MP3", I2SAUDIO_TASK_STACK_SIZE, NULL, 3, &mp3_task_h, 1); + } else { + while (mp3->isRunning()) { + if (!mp3->loop()) { + mp3->stop(); + mp3_delete(); + break; + } + OsWatchLoop(); } - OsWatchLoop(); } } From 51bf7bcd7d454c1e813fb4415860e76d1b8efdff Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sat, 3 Oct 2020 18:31:40 +0200 Subject: [PATCH 111/119] ili9488 esp32 dimmer --- lib/JaretBurkett_ILI9488-gemu-1.0/ILI9488.cpp | 37 +++++++++++++++++-- lib/JaretBurkett_ILI9488-gemu-1.0/ILI9488.h | 3 +- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/lib/JaretBurkett_ILI9488-gemu-1.0/ILI9488.cpp b/lib/JaretBurkett_ILI9488-gemu-1.0/ILI9488.cpp index c7cdeba0a..357000a69 100644 --- a/lib/JaretBurkett_ILI9488-gemu-1.0/ILI9488.cpp +++ b/lib/JaretBurkett_ILI9488-gemu-1.0/ILI9488.cpp @@ -20,6 +20,11 @@ // if using software spi this optimizes the code +#ifdef ESP32 +#define ILI9488_DIMMER +#undef ESP32_PWM_CHANNEL +#define ESP32_PWM_CHANNEL 1 +#endif #define ILI9488_START start(); #define ILI9488_STOP stop(); @@ -322,8 +327,13 @@ void ILI9488::DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font) { void ILI9488::DisplayOnff(int8_t on) { if (on) { writecommand(ILI9488_DISPON); //Display on + if (_bp>=0) { + #ifdef ILI9488_DIMMER + ledcWrite(ESP32_PWM_CHANNEL,dimmer); + #else digitalWrite(_bp,HIGH); + #endif /* writecommand(ILI9488_WRCTRLD); writedata(0x0c); @@ -332,15 +342,30 @@ void ILI9488::DisplayOnff(int8_t on) { } } else { writecommand(ILI9488_DISPOFF); + if (_bp>=0) { +#ifdef ILI9488_DIMMER + ledcWrite(ESP32_PWM_CHANNEL,0); +#else digitalWrite(_bp,LOW); +#endif + } //writecommand(ILI9488_WRCTRLD); //writedata(0x04); - } + } ILI9488_STOP } +// dimmer 0-100 +void ILI9488::dim(uint8_t dim) { + dimmer = dim; + if (dimmer>15) dimmer=15; + dimmer=((float)dimmer/15.0)*255.0; +#ifdef ESP32 + ledcWrite(ESP32_PWM_CHANNEL,dimmer); +#endif +} void ILI9488::begin(void) { pinMode(_cs, OUTPUT); @@ -348,8 +373,14 @@ void ILI9488::begin(void) { pinMode(_sclk, OUTPUT); pinMode(_mosi, OUTPUT); if (_bp>=0) { - pinMode(_bp, OUTPUT); - digitalWrite(_bp,HIGH); +#ifdef ILI9488_DIMMER + ledcSetup(ESP32_PWM_CHANNEL,4000,8); + ledcAttachPin(_bp,ESP32_PWM_CHANNEL); + ledcWrite(ESP32_PWM_CHANNEL,128); +#else + pinMode(_bp, OUTPUT); + digitalWrite(_bp,HIGH); +#endif } #ifndef ESP32 diff --git a/lib/JaretBurkett_ILI9488-gemu-1.0/ILI9488.h b/lib/JaretBurkett_ILI9488-gemu-1.0/ILI9488.h index 89c7a909b..5fd2e39e5 100644 --- a/lib/JaretBurkett_ILI9488-gemu-1.0/ILI9488.h +++ b/lib/JaretBurkett_ILI9488-gemu-1.0/ILI9488.h @@ -157,10 +157,11 @@ class ILI9488 : public Renderer { void write16BitColor(uint16_t color); void commandList(uint8_t *addr); void hw_spi_init(); - + void dim(uint8_t contrast); private: uint8_t tabcolor; + uint8_t dimmer; void fastSPIwrite(uint8_t d,uint8_t dc); void spi_lcd_mode_init(void); void start(void); From 1d7fe0063af9980262c0316f63200c495176224c Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 4 Oct 2020 11:04:34 +0200 Subject: [PATCH 112/119] IRremoteESP8266-2.7.11 --- lib/IRremoteESP8266-2.7.10/.gitignore | 53 - lib/IRremoteESP8266-2.7.10/.gitmodules | 4 - lib/IRremoteESP8266-2.7.10/.style.yapf | 3 - lib/IRremoteESP8266-2.7.10/.travis.yml | 69 - lib/IRremoteESP8266-2.7.10/CPPLINT.cfg | 3 - lib/IRremoteESP8266-2.7.10/Doxyfile | 15 - lib/IRremoteESP8266-2.7.10/LICENSE.txt | 458 -- lib/IRremoteESP8266-2.7.10/README.md | 88 - lib/IRremoteESP8266-2.7.10/README_fr.md | 90 - lib/IRremoteESP8266-2.7.10/ReleaseNotes.md | 836 --- .../SupportedProtocols.md | 190 - .../html/classIRAmcorAc__coll__graph.map | 4 - .../html/classIRAmcorAc__coll__graph.md5 | 1 - .../html/classIRAmcorAc__coll__graph.png | Bin 3009 -> 0 bytes .../html/classIRArgoAC__coll__graph.map | 4 - .../html/classIRArgoAC__coll__graph.md5 | 1 - .../html/classIRArgoAC__coll__graph.png | Bin 3164 -> 0 bytes .../html/classIRCarrierAc64__coll__graph.map | 4 - .../html/classIRCarrierAc64__coll__graph.md5 | 1 - .../html/classIRCarrierAc64__coll__graph.png | Bin 3653 -> 0 bytes .../html/classIRCoronaAc__coll__graph.map | 4 - .../html/classIRCoronaAc__coll__graph.md5 | 1 - .../html/classIRCoronaAc__coll__graph.png | Bin 3290 -> 0 bytes .../html/classIRDelonghiAc__coll__graph.map | 4 - .../html/classIRDelonghiAc__coll__graph.md5 | 1 - .../html/classIRDelonghiAc__coll__graph.png | Bin 3457 -> 0 bytes .../docs/doxygen/html/ir__Carrier_8h.html | 568 -- .../docs/doxygen/html/ir__Delonghi_8h.html | 695 --- .../docs/doxygen/html/search/all_0.js | 70 - .../docs/doxygen/html/search/all_1.js | 24 - .../docs/doxygen/html/search/all_10.js | 16 - .../docs/doxygen/html/search/all_12.js | 29 - .../docs/doxygen/html/search/all_15.js | 13 - .../docs/doxygen/html/search/all_1a.js | 6 - .../docs/doxygen/html/search/all_1b.js | 4 - .../docs/doxygen/html/search/all_4.js | 115 - .../docs/doxygen/html/search/all_5.js | 35 - .../docs/doxygen/html/search/all_6.js | 16 - .../docs/doxygen/html/search/all_8.js | 28 - .../docs/doxygen/html/search/all_9.js | 186 - .../docs/doxygen/html/search/all_c.js | 16 - .../docs/doxygen/html/search/all_e.js | 8 - .../docs/doxygen/html/search/classes_0.js | 4 - .../docs/doxygen/html/search/classes_1.js | 4 - .../docs/doxygen/html/search/classes_2.js | 4 - .../docs/doxygen/html/search/classes_3.js | 5 - .../docs/doxygen/html/search/classes_4.js | 54 - .../docs/doxygen/html/search/classes_5.js | 6 - .../docs/doxygen/html/search/classes_6.js | 4 - .../docs/doxygen/html/search/classes_7.js | 4 - .../docs/doxygen/html/search/classes_8.js | 4 - .../docs/doxygen/html/search/enums_5.js | 4 - .../docs/doxygen/html/search/enums_7.js | 5 - .../docs/doxygen/html/search/enumvalues_10.js | 7 - .../docs/doxygen/html/search/files_0.js | 7 - .../docs/doxygen/html/search/files_1.js | 8 - .../docs/doxygen/html/search/files_2.js | 4 - .../docs/doxygen/html/search/files_3.js | 109 - .../docs/doxygen/html/search/files_4.js | 4 - .../docs/doxygen/html/search/files_5.js | 4 - .../docs/doxygen/html/search/functions_1.js | 15 - .../docs/doxygen/html/search/functions_13.js | 6 - .../docs/doxygen/html/search/functions_15.js | 4 - .../docs/doxygen/html/search/functions_17.js | 4 - .../docs/doxygen/html/search/functions_4.js | 98 - .../docs/doxygen/html/search/functions_8.js | 15 - .../docs/doxygen/html/search/functions_a.js | 4 - .../docs/doxygen/html/search/functions_b.js | 7 - .../docs/doxygen/html/search/functions_d.js | 4 - .../docs/doxygen/html/search/functions_f.js | 4 - .../docs/doxygen/html/search/namespaces_0.js | 5 - .../docs/doxygen/html/search/namespaces_1.js | 4 - .../docs/doxygen/html/search/pages_0.js | 4 - .../docs/doxygen/html/search/pages_1.js | 5 - .../docs/doxygen/html/search/pages_2.js | 4 - .../docs/doxygen/html/search/variables_0.js | 53 - .../docs/doxygen/html/search/variables_1.js | 5 - .../docs/doxygen/html/search/variables_10.js | 12 - .../docs/doxygen/html/search/variables_11.js | 19 - .../docs/doxygen/html/search/variables_12.js | 14 - .../docs/doxygen/html/search/variables_13.js | 9 - .../docs/doxygen/html/search/variables_14.js | 4 - .../docs/doxygen/html/search/variables_16.js | 4 - .../docs/doxygen/html/search/variables_2.js | 9 - .../docs/doxygen/html/search/variables_3.js | 13 - .../docs/doxygen/html/search/variables_4.js | 7 - .../docs/doxygen/html/search/variables_5.js | 4 - .../docs/doxygen/html/search/variables_6.js | 7 - .../docs/doxygen/html/search/variables_7.js | 5 - .../docs/doxygen/html/search/variables_8.js | 8 - .../docs/doxygen/html/search/variables_a.js | 7 - .../docs/doxygen/html/search/variables_b.js | 8 - .../docs/doxygen/html/search/variables_c.js | 4 - .../docs/doxygen/html/search/variables_d.js | 22 - .../docs/doxygen/html/search/variables_e.js | 11 - lib/IRremoteESP8266-2.7.10/keywords.txt | 3855 ------------ lib/IRremoteESP8266-2.7.10/library.json | 49 - lib/IRremoteESP8266-2.7.10/library.properties | 9 - lib/IRremoteESP8266-2.7.10/platformio.ini | 22 - lib/IRremoteESP8266-2.7.10/pylintrc | 12 - lib/IRremoteESP8266-2.7.10/src/ir_Delonghi.h | 165 - .../.github/CONTRIBUTING.md | 0 .../.github/Contributors.md | 1 + .../.github/issue_template.md | 5 + .../docs/README.md | 0 .../docs/README_fr.md | 0 .../docs/_config.yml | 0 .../docs/doxygen/html/IRac_8cpp.html | 0 .../docs/doxygen/html/IRac_8h.html | 0 .../docs/doxygen/html/IRac_8h_source.html | 991 ++-- .../docs/doxygen/html/IRrecv_8cpp.html | 0 .../docs/doxygen/html/IRrecv_8h.html | 0 .../docs/doxygen/html/IRrecv_8h_source.html | 261 +- .../docs/doxygen/html/IRremoteESP8266_8h.html | 74 +- .../html/IRremoteESP8266_8h_source.html | 1566 ++--- .../docs/doxygen/html/IRsend_8cpp.html | 0 .../docs/doxygen/html/IRsend_8h.html | 0 .../docs/doxygen/html/IRsend_8h_source.html | 434 +- .../docs/doxygen/html/IRtext_8cpp.html | 19 + .../docs/doxygen/html/IRtext_8h.html | 19 + .../docs/doxygen/html/IRtext_8h_source.html | 456 +- .../docs/doxygen/html/IRtimer_8cpp.html | 0 .../docs/doxygen/html/IRtimer_8h.html | 0 .../docs/doxygen/html/IRtimer_8h_source.html | 0 .../docs/doxygen/html/IRutils_8cpp.html | 0 .../docs/doxygen/html/IRutils_8h.html | 0 .../docs/doxygen/html/IRutils_8h_source.html | 4 +- .../docs/doxygen/html/README_8md.html | 0 .../docs/doxygen/html/annotated.html | 128 +- .../docs/doxygen/html/bc_s.png | Bin .../docs/doxygen/html/bdwn.png | Bin .../html/classIRAirwellAc-members.html | 2 +- .../docs/doxygen/html/classIRAirwellAc.html | 20 +- .../html/classIRAirwellAc__coll__graph.map | 0 .../html/classIRAirwellAc__coll__graph.md5 | 0 .../html/classIRAirwellAc__coll__graph.png | Bin .../doxygen/html/classIRAmcorAc-members.html | 38 +- .../docs/doxygen/html/classIRAmcorAc.html | 173 +- .../html/classIRAmcorAc__coll__graph.map | 5 + .../html/classIRAmcorAc__coll__graph.md5 | 1 + .../html/classIRAmcorAc__coll__graph.png | Bin 0 -> 5829 bytes .../doxygen/html/classIRArgoAC-members.html | 26 +- .../docs/doxygen/html/classIRArgoAC.html | 186 +- .../html/classIRArgoAC__coll__graph.map | 5 + .../html/classIRArgoAC__coll__graph.md5 | 1 + .../html/classIRArgoAC__coll__graph.png | Bin 0 -> 5939 bytes .../html/classIRCarrierAc64-members.html | 48 +- .../docs/doxygen/html/classIRCarrierAc64.html | 248 +- .../html/classIRCarrierAc64__coll__graph.map | 5 + .../html/classIRCarrierAc64__coll__graph.md5 | 1 + .../html/classIRCarrierAc64__coll__graph.png | Bin 0 -> 6489 bytes .../doxygen/html/classIRCoolixAC-members.html | 0 .../docs/doxygen/html/classIRCoolixAC.html | 0 .../html/classIRCoolixAC__coll__graph.map | 0 .../html/classIRCoolixAC__coll__graph.md5 | 0 .../html/classIRCoolixAC__coll__graph.png | Bin .../doxygen/html/classIRCoronaAc-members.html | 67 +- .../docs/doxygen/html/classIRCoronaAc.html | 303 +- .../html/classIRCoronaAc__coll__graph.map | 6 + .../html/classIRCoronaAc__coll__graph.md5 | 1 + .../html/classIRCoronaAc__coll__graph.png | Bin 0 -> 7060 bytes .../html/classIRDaikin128-members.html | 0 .../docs/doxygen/html/classIRDaikin128.html | 0 .../html/classIRDaikin128__coll__graph.map | 0 .../html/classIRDaikin128__coll__graph.md5 | 0 .../html/classIRDaikin128__coll__graph.png | Bin .../html/classIRDaikin152-members.html | 0 .../docs/doxygen/html/classIRDaikin152.html | 0 .../html/classIRDaikin152__coll__graph.map | 0 .../html/classIRDaikin152__coll__graph.md5 | 0 .../html/classIRDaikin152__coll__graph.png | Bin .../html/classIRDaikin160-members.html | 0 .../docs/doxygen/html/classIRDaikin160.html | 0 .../html/classIRDaikin160__coll__graph.map | 0 .../html/classIRDaikin160__coll__graph.md5 | 0 .../html/classIRDaikin160__coll__graph.png | Bin .../html/classIRDaikin176-members.html | 0 .../docs/doxygen/html/classIRDaikin176.html | 0 .../html/classIRDaikin176__coll__graph.map | 0 .../html/classIRDaikin176__coll__graph.md5 | 0 .../html/classIRDaikin176__coll__graph.png | Bin .../doxygen/html/classIRDaikin2-members.html | 0 .../docs/doxygen/html/classIRDaikin2.html | 0 .../html/classIRDaikin216-members.html | 0 .../docs/doxygen/html/classIRDaikin216.html | 0 .../html/classIRDaikin216__coll__graph.map | 0 .../html/classIRDaikin216__coll__graph.md5 | 0 .../html/classIRDaikin216__coll__graph.png | Bin .../html/classIRDaikin2__coll__graph.map | 0 .../html/classIRDaikin2__coll__graph.md5 | 0 .../html/classIRDaikin2__coll__graph.png | Bin .../doxygen/html/classIRDaikin64-members.html | 0 .../docs/doxygen/html/classIRDaikin64.html | 0 .../html/classIRDaikin64__coll__graph.map | 0 .../html/classIRDaikin64__coll__graph.md5 | 0 .../html/classIRDaikin64__coll__graph.png | Bin .../html/classIRDaikinESP-members.html | 0 .../docs/doxygen/html/classIRDaikinESP.html | 0 .../html/classIRDaikinESP__coll__graph.map | 0 .../html/classIRDaikinESP__coll__graph.md5 | 0 .../html/classIRDaikinESP__coll__graph.png | Bin .../html/classIRDelonghiAc-members.html | 56 +- .../docs/doxygen/html/classIRDelonghiAc.html | 312 +- .../html/classIRDelonghiAc__coll__graph.map | 5 + .../html/classIRDelonghiAc__coll__graph.md5 | 1 + .../html/classIRDelonghiAc__coll__graph.png | Bin 0 -> 6477 bytes .../html/classIRElectraAc-members.html | 0 .../docs/doxygen/html/classIRElectraAc.html | 0 .../html/classIRElectraAc__coll__graph.map | 0 .../html/classIRElectraAc__coll__graph.md5 | 0 .../html/classIRElectraAc__coll__graph.png | Bin .../html/classIRFujitsuAC-members.html | 73 +- .../docs/doxygen/html/classIRFujitsuAC.html | 315 + .../html/classIRFujitsuAC__coll__graph.map | 0 .../html/classIRFujitsuAC__coll__graph.md5 | 0 .../html/classIRFujitsuAC__coll__graph.png | Bin .../html/classIRGoodweatherAc-members.html | 0 .../doxygen/html/classIRGoodweatherAc.html | 0 .../classIRGoodweatherAc__coll__graph.map | 0 .../classIRGoodweatherAc__coll__graph.md5 | 0 .../classIRGoodweatherAc__coll__graph.png | Bin .../doxygen/html/classIRGreeAC-members.html | 0 .../docs/doxygen/html/classIRGreeAC.html | 0 .../html/classIRGreeAC__coll__graph.map | 0 .../html/classIRGreeAC__coll__graph.md5 | 0 .../html/classIRGreeAC__coll__graph.png | Bin .../doxygen/html/classIRHaierAC-members.html | 0 .../docs/doxygen/html/classIRHaierAC.html | 0 .../html/classIRHaierACYRW02-members.html | 0 .../doxygen/html/classIRHaierACYRW02.html | 0 .../html/classIRHaierACYRW02__coll__graph.map | 0 .../html/classIRHaierACYRW02__coll__graph.md5 | 0 .../html/classIRHaierACYRW02__coll__graph.png | Bin .../html/classIRHaierAC__coll__graph.map | 0 .../html/classIRHaierAC__coll__graph.md5 | 0 .../html/classIRHaierAC__coll__graph.png | Bin .../html/classIRHitachiAc-members.html | 0 .../docs/doxygen/html/classIRHitachiAc.html | 0 .../html/classIRHitachiAc1-members.html | 0 .../docs/doxygen/html/classIRHitachiAc1.html | 0 .../html/classIRHitachiAc1__coll__graph.map | 0 .../html/classIRHitachiAc1__coll__graph.md5 | 0 .../html/classIRHitachiAc1__coll__graph.png | Bin .../html/classIRHitachiAc3-members.html | 0 .../docs/doxygen/html/classIRHitachiAc3.html | 0 .../html/classIRHitachiAc344-members.html | 0 .../doxygen/html/classIRHitachiAc344.html | 0 .../html/classIRHitachiAc344__coll__graph.map | 0 .../html/classIRHitachiAc344__coll__graph.md5 | 0 .../html/classIRHitachiAc344__coll__graph.png | Bin .../classIRHitachiAc344__inherit__graph.map | 0 .../classIRHitachiAc344__inherit__graph.md5 | 0 .../classIRHitachiAc344__inherit__graph.png | Bin .../html/classIRHitachiAc3__coll__graph.map | 0 .../html/classIRHitachiAc3__coll__graph.md5 | 0 .../html/classIRHitachiAc3__coll__graph.png | Bin .../html/classIRHitachiAc424-members.html | 0 .../doxygen/html/classIRHitachiAc424.html | 0 .../html/classIRHitachiAc424__coll__graph.map | 0 .../html/classIRHitachiAc424__coll__graph.md5 | 0 .../html/classIRHitachiAc424__coll__graph.png | Bin .../classIRHitachiAc424__inherit__graph.map | 0 .../classIRHitachiAc424__inherit__graph.md5 | 0 .../classIRHitachiAc424__inherit__graph.png | Bin .../html/classIRHitachiAc__coll__graph.map | 0 .../html/classIRHitachiAc__coll__graph.md5 | 0 .../html/classIRHitachiAc__coll__graph.png | Bin .../html/classIRKelvinatorAC-members.html | 0 .../doxygen/html/classIRKelvinatorAC.html | 0 .../html/classIRKelvinatorAC__coll__graph.map | 0 .../html/classIRKelvinatorAC__coll__graph.md5 | 0 .../html/classIRKelvinatorAC__coll__graph.png | Bin .../doxygen/html/classIRLgAc-members.html | 0 .../docs/doxygen/html/classIRLgAc.html | 0 .../doxygen/html/classIRLgAc__coll__graph.map | 0 .../doxygen/html/classIRLgAc__coll__graph.md5 | 0 .../doxygen/html/classIRLgAc__coll__graph.png | Bin .../doxygen/html/classIRMideaAC-members.html | 0 .../docs/doxygen/html/classIRMideaAC.html | 0 .../html/classIRMideaAC__coll__graph.map | 0 .../html/classIRMideaAC__coll__graph.md5 | 0 .../html/classIRMideaAC__coll__graph.png | Bin .../html/classIRMitsubishi112-members.html | 0 .../doxygen/html/classIRMitsubishi112.html | 0 .../classIRMitsubishi112__coll__graph.map | 0 .../classIRMitsubishi112__coll__graph.md5 | 0 .../classIRMitsubishi112__coll__graph.png | Bin .../html/classIRMitsubishi136-members.html | 0 .../doxygen/html/classIRMitsubishi136.html | 0 .../classIRMitsubishi136__coll__graph.map | 0 .../classIRMitsubishi136__coll__graph.md5 | 0 .../classIRMitsubishi136__coll__graph.png | Bin .../html/classIRMitsubishiAC-members.html | 0 .../doxygen/html/classIRMitsubishiAC.html | 0 .../html/classIRMitsubishiAC__coll__graph.map | 0 .../html/classIRMitsubishiAC__coll__graph.md5 | 0 .../html/classIRMitsubishiAC__coll__graph.png | Bin .../classIRMitsubishiHeavy152Ac-members.html | 0 .../html/classIRMitsubishiHeavy152Ac.html | 0 ...assIRMitsubishiHeavy152Ac__coll__graph.map | 0 ...assIRMitsubishiHeavy152Ac__coll__graph.md5 | 0 ...assIRMitsubishiHeavy152Ac__coll__graph.png | Bin .../classIRMitsubishiHeavy88Ac-members.html | 0 .../html/classIRMitsubishiHeavy88Ac.html | 0 ...lassIRMitsubishiHeavy88Ac__coll__graph.map | 0 ...lassIRMitsubishiHeavy88Ac__coll__graph.md5 | 0 ...lassIRMitsubishiHeavy88Ac__coll__graph.png | Bin .../html/classIRNeoclimaAc-members.html | 71 +- .../docs/doxygen/html/classIRNeoclimaAc.html | 103 +- .../html/classIRNeoclimaAc__coll__graph.map | 0 .../html/classIRNeoclimaAc__coll__graph.md5 | 0 .../html/classIRNeoclimaAc__coll__graph.png | Bin .../html/classIRPanasonicAc-members.html | 0 .../docs/doxygen/html/classIRPanasonicAc.html | 0 .../html/classIRPanasonicAc__coll__graph.map | 0 .../html/classIRPanasonicAc__coll__graph.md5 | 0 .../html/classIRPanasonicAc__coll__graph.png | Bin .../html/classIRSamsungAc-members.html | 0 .../docs/doxygen/html/classIRSamsungAc.html | 0 .../html/classIRSamsungAc__coll__graph.map | 0 .../html/classIRSamsungAc__coll__graph.md5 | 0 .../html/classIRSamsungAc__coll__graph.png | Bin .../doxygen/html/classIRSanyoAc-members.html | 0 .../docs/doxygen/html/classIRSanyoAc.html | 0 .../html/classIRSanyoAc__coll__graph.map | 0 .../html/classIRSanyoAc__coll__graph.md5 | 0 .../html/classIRSanyoAc__coll__graph.png | Bin .../doxygen/html/classIRSharpAc-members.html | 0 .../docs/doxygen/html/classIRSharpAc.html | 0 .../html/classIRSharpAc__coll__graph.map | 0 .../html/classIRSharpAc__coll__graph.md5 | 0 .../html/classIRSharpAc__coll__graph.png | Bin .../doxygen/html/classIRTcl112Ac-members.html | 0 .../docs/doxygen/html/classIRTcl112Ac.html | 0 .../html/classIRTcl112Ac__coll__graph.map | 0 .../html/classIRTcl112Ac__coll__graph.md5 | 0 .../html/classIRTcl112Ac__coll__graph.png | Bin .../html/classIRTechnibelAc-members.html | 122 + .../docs/doxygen/html/classIRTechnibelAc.html | 1324 +++++ .../html/classIRTechnibelAc__coll__graph.map | 4 + .../html/classIRTechnibelAc__coll__graph.md5 | 1 + .../html/classIRTechnibelAc__coll__graph.png | Bin 0 -> 3199 bytes .../doxygen/html/classIRTecoAc-members.html | 0 .../docs/doxygen/html/classIRTecoAc.html | 0 .../html/classIRTecoAc__coll__graph.map | 0 .../html/classIRTecoAc__coll__graph.md5 | 0 .../html/classIRTecoAc__coll__graph.png | Bin .../html/classIRToshibaAC-members.html | 0 .../docs/doxygen/html/classIRToshibaAC.html | 0 .../html/classIRToshibaAC__coll__graph.map | 0 .../html/classIRToshibaAC__coll__graph.md5 | 0 .../html/classIRToshibaAC__coll__graph.png | Bin .../html/classIRTranscoldAc-members.html | 118 + .../docs/doxygen/html/classIRTranscoldAc.html | 1231 ++++ .../html/classIRTranscoldAc__coll__graph.map | 4 + .../html/classIRTranscoldAc__coll__graph.md5 | 1 + .../html/classIRTranscoldAc__coll__graph.png | Bin 0 -> 3498 bytes .../html/classIRTrotecESP-members.html | 0 .../docs/doxygen/html/classIRTrotecESP.html | 0 .../html/classIRTrotecESP__coll__graph.map | 0 .../html/classIRTrotecESP__coll__graph.md5 | 0 .../html/classIRTrotecESP__coll__graph.png | Bin .../doxygen/html/classIRVestelAc-members.html | 0 .../docs/doxygen/html/classIRVestelAc.html | 0 .../html/classIRVestelAc__coll__graph.map | 0 .../html/classIRVestelAc__coll__graph.md5 | 0 .../html/classIRVestelAc__coll__graph.png | Bin .../doxygen/html/classIRVoltas-members.html | 0 .../docs/doxygen/html/classIRVoltas.html | 0 .../html/classIRVoltas__coll__graph.map | 0 .../html/classIRVoltas__coll__graph.md5 | 0 .../html/classIRVoltas__coll__graph.png | Bin .../html/classIRWhirlpoolAc-members.html | 6 +- .../docs/doxygen/html/classIRWhirlpoolAc.html | 48 +- .../html/classIRWhirlpoolAc__coll__graph.map | 0 .../html/classIRWhirlpoolAc__coll__graph.md5 | 0 .../html/classIRWhirlpoolAc__coll__graph.png | Bin .../docs/doxygen/html/classIRac-members.html | 10 +- .../docs/doxygen/html/classIRac.html | 218 +- .../doxygen/html/classIRac__coll__graph.map | 0 .../doxygen/html/classIRac__coll__graph.md5 | 0 .../doxygen/html/classIRac__coll__graph.png | Bin .../doxygen/html/classIRrecv-members.html | 6 +- .../docs/doxygen/html/classIRrecv.html | 128 + .../doxygen/html/classIRrecv__coll__graph.map | 0 .../doxygen/html/classIRrecv__coll__graph.md5 | 0 .../doxygen/html/classIRrecv__coll__graph.png | Bin .../doxygen/html/classIRsend-members.html | 6 +- .../docs/doxygen/html/classIRsend.html | 102 +- .../doxygen/html/classIRtimer-members.html | 0 .../docs/doxygen/html/classIRtimer.html | 0 .../doxygen/html/classTimerMs-members.html | 0 .../docs/doxygen/html/classTimerMs.html | 0 .../html/classdecode__results-members.html | 0 .../doxygen/html/classdecode__results.html | 32 +- .../docs/doxygen/html/classes.html | 118 +- .../docs/doxygen/html/closed.png | Bin .../docs/doxygen/html/de-CH_8h.html | 0 .../docs/doxygen/html/de-CH_8h_source.html | 0 .../docs/doxygen/html/de-DE_8h.html | 0 .../docs/doxygen/html/de-DE_8h_source.html | 0 .../docs/doxygen/html/defaults_8h.html | 0 .../docs/doxygen/html/defaults_8h_source.html | 1242 ++-- .../docs/doxygen/html/deprecated.html | 0 .../dir_49e56c817e5e54854c35e136979f97ca.html | 0 .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 14 +- .../dir_84fe998d1eb06414cc389ad334e77e63.html | 0 .../docs/doxygen/html/doc.png | Bin .../docs/doxygen/html/doxygen.css | 0 .../docs/doxygen/html/doxygen.png | Bin .../docs/doxygen/html/doxygen__index_8md.html | 0 .../docs/doxygen/html/dynsections.js | 0 .../docs/doxygen/html/en-AU_8h.html | 0 .../docs/doxygen/html/en-AU_8h_source.html | 0 .../docs/doxygen/html/en-IE_8h.html | 0 .../docs/doxygen/html/en-IE_8h_source.html | 0 .../docs/doxygen/html/en-UK_8h.html | 0 .../docs/doxygen/html/en-UK_8h_source.html | 0 .../docs/doxygen/html/en-US_8h.html | 0 .../docs/doxygen/html/en-US_8h_source.html | 0 .../docs/doxygen/html/es-ES_8h.html | 0 .../docs/doxygen/html/es-ES_8h_source.html | 0 .../docs/doxygen/html/files.html | 60 +- .../docs/doxygen/html/folderclosed.png | Bin .../docs/doxygen/html/folderopen.png | Bin .../docs/doxygen/html/fr-FR_8h.html | 0 .../docs/doxygen/html/fr-FR_8h_source.html | 0 .../docs/doxygen/html/functions.html | 99 +- .../docs/doxygen/html/functions_a.html | 1 - .../docs/doxygen/html/functions_b.html | 7 +- .../docs/doxygen/html/functions_c.html | 13 +- .../docs/doxygen/html/functions_d.html | 18 + .../docs/doxygen/html/functions_e.html | 3 + .../docs/doxygen/html/functions_f.html | 13 +- .../docs/doxygen/html/functions_func.html | 5 +- .../docs/doxygen/html/functions_func_a.html | 0 .../docs/doxygen/html/functions_func_b.html | 4 +- .../docs/doxygen/html/functions_func_c.html | 11 + .../docs/doxygen/html/functions_func_d.html | 6 + .../docs/doxygen/html/functions_func_e.html | 0 .../docs/doxygen/html/functions_func_f.html | 2 +- .../docs/doxygen/html/functions_func_g.html | 119 +- .../docs/doxygen/html/functions_func_h.html | 1 + .../docs/doxygen/html/functions_func_i.html | 7 + .../docs/doxygen/html/functions_func_k.html | 0 .../docs/doxygen/html/functions_func_l.html | 0 .../docs/doxygen/html/functions_func_m.html | 0 .../docs/doxygen/html/functions_func_n.html | 2 +- .../docs/doxygen/html/functions_func_o.html | 20 +- .../docs/doxygen/html/functions_func_p.html | 0 .../docs/doxygen/html/functions_func_r.html | 1 + .../docs/doxygen/html/functions_func_s.html | 45 +- .../docs/doxygen/html/functions_func_t.html | 41 +- .../docs/doxygen/html/functions_func_u.html | 1 + .../docs/doxygen/html/functions_func_v.html | 1 + .../docs/doxygen/html/functions_func_w.html | 0 .../docs/doxygen/html/functions_func_~.html | 0 .../docs/doxygen/html/functions_g.html | 119 +- .../docs/doxygen/html/functions_h.html | 7 + .../docs/doxygen/html/functions_i.html | 12 +- .../docs/doxygen/html/functions_k.html | 0 .../docs/doxygen/html/functions_l.html | 3 + .../docs/doxygen/html/functions_m.html | 9 + .../docs/doxygen/html/functions_n.html | 5 +- .../docs/doxygen/html/functions_o.html | 46 +- .../docs/doxygen/html/functions_p.html | 11 +- .../docs/doxygen/html/functions_q.html | 0 .../docs/doxygen/html/functions_r.html | 15 +- .../docs/doxygen/html/functions_rela.html | 0 .../docs/doxygen/html/functions_s.html | 66 +- .../docs/doxygen/html/functions_t.html | 46 +- .../docs/doxygen/html/functions_u.html | 1 + .../docs/doxygen/html/functions_v.html | 4 + .../docs/doxygen/html/functions_vars.html | 94 +- .../docs/doxygen/html/functions_vars_a.html | 3 - .../docs/doxygen/html/functions_vars_b.html | 3 + .../docs/doxygen/html/functions_vars_c.html | 2 +- .../docs/doxygen/html/functions_vars_d.html | 12 + .../docs/doxygen/html/functions_vars_e.html | 3 + .../docs/doxygen/html/functions_vars_f.html | 11 + .../docs/doxygen/html/functions_vars_h.html | 6 + .../docs/doxygen/html/functions_vars_i.html | 3 + .../docs/doxygen/html/functions_vars_l.html | 3 + .../docs/doxygen/html/functions_vars_m.html | 9 + .../docs/doxygen/html/functions_vars_n.html | 3 + .../docs/doxygen/html/functions_vars_o.html | 26 +- .../docs/doxygen/html/functions_vars_p.html | 11 +- .../docs/doxygen/html/functions_vars_q.html | 0 .../docs/doxygen/html/functions_vars_r.html | 14 +- .../docs/doxygen/html/functions_vars_s.html | 23 +- .../docs/doxygen/html/functions_vars_t.html | 5 + .../docs/doxygen/html/functions_vars_u.html | 0 .../docs/doxygen/html/functions_vars_v.html | 3 + .../docs/doxygen/html/functions_vars_w.html | 0 .../docs/doxygen/html/functions_vars_x.html | 0 .../docs/doxygen/html/functions_vars_z.html | 0 .../docs/doxygen/html/functions_w.html | 0 .../docs/doxygen/html/functions_x.html | 0 .../docs/doxygen/html/functions_z.html | 0 .../docs/doxygen/html/functions_~.html | 0 .../docs/doxygen/html/globals.html | 0 .../docs/doxygen/html/globals_a.html | 0 .../docs/doxygen/html/globals_c.html | 0 .../docs/doxygen/html/globals_d.html | 0 .../docs/doxygen/html/globals_e.html | 0 .../docs/doxygen/html/globals_enum.html | 0 .../docs/doxygen/html/globals_eval.html | 6 + .../docs/doxygen/html/globals_f.html | 0 .../docs/doxygen/html/globals_func.html | 0 .../docs/doxygen/html/globals_g.html | 0 .../docs/doxygen/html/globals_h.html | 0 .../docs/doxygen/html/globals_i.html | 0 .../docs/doxygen/html/globals_j.html | 0 .../docs/doxygen/html/globals_k.html | 746 +-- .../docs/doxygen/html/globals_l.html | 0 .../docs/doxygen/html/globals_m.html | 0 .../docs/doxygen/html/globals_n.html | 0 .../docs/doxygen/html/globals_p.html | 0 .../docs/doxygen/html/globals_r.html | 0 .../docs/doxygen/html/globals_s.html | 0 .../docs/doxygen/html/globals_t.html | 10 +- .../docs/doxygen/html/globals_type.html | 0 .../docs/doxygen/html/globals_u.html | 0 .../docs/doxygen/html/globals_v.html | 0 .../docs/doxygen/html/globals_vars.html | 0 .../docs/doxygen/html/globals_vars_i.html | 0 .../docs/doxygen/html/globals_vars_k.html | 710 +-- .../docs/doxygen/html/globals_w.html | 0 .../docs/doxygen/html/globals_x.html | 0 .../docs/doxygen/html/globals_y.html | 0 .../docs/doxygen/html/globals_z.html | 0 .../docs/doxygen/html/graph_legend.html | 0 .../docs/doxygen/html/graph_legend.md5 | 0 .../docs/doxygen/html/graph_legend.png | Bin .../docs/doxygen/html/hierarchy.html | 130 +- .../docs/doxygen/html/i18n_8h.html | 0 .../docs/doxygen/html/i18n_8h_source.html | 0 .../docs/doxygen/html/index.html | 0 .../docs/doxygen/html/inherit_graph_0.map | 0 .../docs/doxygen/html/inherit_graph_0.md5 | 0 .../docs/doxygen/html/inherit_graph_0.png | Bin .../docs/doxygen/html/inherit_graph_1.map | 3 + .../docs/doxygen/html/inherit_graph_1.md5 | 1 + .../docs/doxygen/html/inherit_graph_1.png | Bin 0 -> 1156 bytes .../docs/doxygen/html/inherit_graph_10.map} | 0 .../docs/doxygen/html/inherit_graph_10.md5} | 0 .../docs/doxygen/html/inherit_graph_10.png} | Bin .../docs/doxygen/html/inherit_graph_11.map} | 0 .../docs/doxygen/html/inherit_graph_11.md5} | 0 .../docs/doxygen/html/inherit_graph_11.png} | Bin .../docs/doxygen/html/inherit_graph_12.map} | 0 .../docs/doxygen/html/inherit_graph_12.md5} | 0 .../docs/doxygen/html/inherit_graph_12.png} | Bin .../docs/doxygen/html/inherit_graph_13.map} | 0 .../docs/doxygen/html/inherit_graph_13.md5} | 0 .../docs/doxygen/html/inherit_graph_13.png} | Bin .../docs/doxygen/html/inherit_graph_14.map} | 0 .../docs/doxygen/html/inherit_graph_14.md5} | 0 .../docs/doxygen/html/inherit_graph_14.png} | Bin .../docs/doxygen/html/inherit_graph_15.map} | 0 .../docs/doxygen/html/inherit_graph_15.md5} | 0 .../docs/doxygen/html/inherit_graph_15.png} | Bin .../docs/doxygen/html/inherit_graph_16.map} | 0 .../docs/doxygen/html/inherit_graph_16.md5} | 0 .../docs/doxygen/html/inherit_graph_16.png} | Bin .../docs/doxygen/html/inherit_graph_17.map} | 0 .../docs/doxygen/html/inherit_graph_17.md5} | 0 .../docs/doxygen/html/inherit_graph_17.png} | Bin .../docs/doxygen/html/inherit_graph_18.map} | 0 .../docs/doxygen/html/inherit_graph_18.md5} | 0 .../docs/doxygen/html/inherit_graph_18.png} | Bin .../docs/doxygen/html/inherit_graph_19.map} | 0 .../docs/doxygen/html/inherit_graph_19.md5} | 0 .../docs/doxygen/html/inherit_graph_19.png} | Bin .../docs/doxygen/html/inherit_graph_2.map | 3 + .../docs/doxygen/html/inherit_graph_2.md5 | 1 + .../docs/doxygen/html/inherit_graph_2.png | Bin 0 -> 1217 bytes .../docs/doxygen/html/inherit_graph_20.map} | 0 .../docs/doxygen/html/inherit_graph_20.md5} | 0 .../docs/doxygen/html/inherit_graph_20.png} | Bin .../docs/doxygen/html/inherit_graph_21.map} | 0 .../docs/doxygen/html/inherit_graph_21.md5} | 0 .../docs/doxygen/html/inherit_graph_21.png} | Bin .../docs/doxygen/html/inherit_graph_22.map} | 0 .../docs/doxygen/html/inherit_graph_22.md5} | 0 .../docs/doxygen/html/inherit_graph_22.png} | Bin .../docs/doxygen/html/inherit_graph_23.map} | 0 .../docs/doxygen/html/inherit_graph_23.md5} | 0 .../docs/doxygen/html/inherit_graph_23.png} | Bin .../docs/doxygen/html/inherit_graph_24.map} | 0 .../docs/doxygen/html/inherit_graph_24.md5} | 0 .../docs/doxygen/html/inherit_graph_24.png} | Bin .../docs/doxygen/html/inherit_graph_25.map} | 0 .../docs/doxygen/html/inherit_graph_25.md5} | 0 .../docs/doxygen/html/inherit_graph_25.png} | Bin .../docs/doxygen/html/inherit_graph_26.map} | 0 .../docs/doxygen/html/inherit_graph_26.md5} | 0 .../docs/doxygen/html/inherit_graph_26.png} | Bin .../docs/doxygen/html/inherit_graph_27.map} | 0 .../docs/doxygen/html/inherit_graph_27.md5} | 0 .../docs/doxygen/html/inherit_graph_27.png} | Bin .../docs/doxygen/html/inherit_graph_28.map} | 0 .../docs/doxygen/html/inherit_graph_28.md5} | 0 .../docs/doxygen/html/inherit_graph_28.png} | Bin .../docs/doxygen/html/inherit_graph_29.map} | 0 .../docs/doxygen/html/inherit_graph_29.md5} | 0 .../docs/doxygen/html/inherit_graph_29.png} | Bin .../docs/doxygen/html/inherit_graph_3.map | 3 + .../docs/doxygen/html/inherit_graph_3.md5 | 1 + .../docs/doxygen/html/inherit_graph_3.png | Bin 0 -> 1328 bytes .../docs/doxygen/html/inherit_graph_30.map} | 0 .../docs/doxygen/html/inherit_graph_30.md5} | 0 .../docs/doxygen/html/inherit_graph_30.png} | Bin .../docs/doxygen/html/inherit_graph_31.map} | 0 .../docs/doxygen/html/inherit_graph_31.md5} | 0 .../docs/doxygen/html/inherit_graph_31.png} | Bin .../docs/doxygen/html/inherit_graph_32.map} | 0 .../docs/doxygen/html/inherit_graph_32.md5} | 0 .../docs/doxygen/html/inherit_graph_32.png} | Bin .../docs/doxygen/html/inherit_graph_33.map} | 0 .../docs/doxygen/html/inherit_graph_33.md5} | 0 .../docs/doxygen/html/inherit_graph_33.png} | Bin .../docs/doxygen/html/inherit_graph_34.map} | 0 .../docs/doxygen/html/inherit_graph_34.md5} | 0 .../docs/doxygen/html/inherit_graph_34.png} | Bin .../docs/doxygen/html/inherit_graph_35.map} | 0 .../docs/doxygen/html/inherit_graph_35.md5} | 0 .../docs/doxygen/html/inherit_graph_35.png} | Bin .../docs/doxygen/html/inherit_graph_36.map} | 0 .../docs/doxygen/html/inherit_graph_36.md5} | 0 .../docs/doxygen/html/inherit_graph_36.png} | Bin .../docs/doxygen/html/inherit_graph_37.map} | 0 .../docs/doxygen/html/inherit_graph_37.md5} | 0 .../docs/doxygen/html/inherit_graph_37.png} | Bin .../docs/doxygen/html/inherit_graph_38.map} | 0 .../docs/doxygen/html/inherit_graph_38.md5} | 0 .../docs/doxygen/html/inherit_graph_38.png} | Bin .../docs/doxygen/html/inherit_graph_39.map} | 0 .../docs/doxygen/html/inherit_graph_39.md5} | 0 .../docs/doxygen/html/inherit_graph_39.png} | Bin .../docs/doxygen/html/inherit_graph_4.map | 3 + .../docs/doxygen/html/inherit_graph_4.md5 | 1 + .../docs/doxygen/html/inherit_graph_4.png | Bin 0 -> 1198 bytes .../docs/doxygen/html/inherit_graph_40.map} | 0 .../docs/doxygen/html/inherit_graph_40.md5} | 0 .../docs/doxygen/html/inherit_graph_40.png} | Bin .../docs/doxygen/html/inherit_graph_41.map} | 0 .../docs/doxygen/html/inherit_graph_41.md5} | 0 .../docs/doxygen/html/inherit_graph_41.png} | Bin .../docs/doxygen/html/inherit_graph_42.map} | 0 .../docs/doxygen/html/inherit_graph_42.md5} | 0 .../docs/doxygen/html/inherit_graph_42.png} | Bin .../docs/doxygen/html/inherit_graph_43.map} | 0 .../docs/doxygen/html/inherit_graph_43.md5} | 0 .../docs/doxygen/html/inherit_graph_43.png} | Bin .../docs/doxygen/html/inherit_graph_44.map} | 0 .../docs/doxygen/html/inherit_graph_44.md5} | 0 .../docs/doxygen/html/inherit_graph_44.png} | Bin .../docs/doxygen/html/inherit_graph_45.map} | 0 .../docs/doxygen/html/inherit_graph_45.md5} | 0 .../docs/doxygen/html/inherit_graph_45.png} | Bin .../docs/doxygen/html/inherit_graph_46.map} | 0 .../docs/doxygen/html/inherit_graph_46.md5} | 0 .../docs/doxygen/html/inherit_graph_46.png} | Bin .../docs/doxygen/html/inherit_graph_47.map} | 0 .../docs/doxygen/html/inherit_graph_47.md5} | 0 .../docs/doxygen/html/inherit_graph_47.png} | Bin .../docs/doxygen/html/inherit_graph_48.map} | 0 .../docs/doxygen/html/inherit_graph_48.md5} | 0 .../docs/doxygen/html/inherit_graph_48.png} | Bin .../docs/doxygen/html/inherit_graph_49.map} | 0 .../docs/doxygen/html/inherit_graph_49.md5} | 0 .../docs/doxygen/html/inherit_graph_49.png} | Bin .../docs/doxygen/html/inherit_graph_5.map | 3 + .../docs/doxygen/html/inherit_graph_5.md5 | 1 + .../docs/doxygen/html/inherit_graph_5.png | Bin 0 -> 1556 bytes .../docs/doxygen/html/inherit_graph_50.map} | 0 .../docs/doxygen/html/inherit_graph_50.md5} | 0 .../docs/doxygen/html/inherit_graph_50.png} | Bin .../docs/doxygen/html/inherit_graph_51.map} | 0 .../docs/doxygen/html/inherit_graph_51.md5} | 0 .../docs/doxygen/html/inherit_graph_51.png} | Bin .../docs/doxygen/html/inherit_graph_52.map} | 0 .../docs/doxygen/html/inherit_graph_52.md5} | 0 .../docs/doxygen/html/inherit_graph_52.png} | Bin .../docs/doxygen/html/inherit_graph_53.map} | 0 .../docs/doxygen/html/inherit_graph_53.md5} | 0 .../docs/doxygen/html/inherit_graph_53.png} | Bin .../docs/doxygen/html/inherit_graph_54.map | 3 + .../docs/doxygen/html/inherit_graph_54.md5 | 1 + .../docs/doxygen/html/inherit_graph_54.png | Bin 0 -> 1212 bytes .../docs/doxygen/html/inherit_graph_55.map} | 0 .../docs/doxygen/html/inherit_graph_55.md5} | 0 .../docs/doxygen/html/inherit_graph_55.png} | Bin .../docs/doxygen/html/inherit_graph_56.map} | 0 .../docs/doxygen/html/inherit_graph_56.md5} | 0 .../docs/doxygen/html/inherit_graph_56.png} | Bin .../docs/doxygen/html/inherit_graph_57.map} | 0 .../docs/doxygen/html/inherit_graph_57.md5} | 0 .../docs/doxygen/html/inherit_graph_57.png} | Bin .../docs/doxygen/html/inherit_graph_58.map | 3 + .../docs/doxygen/html/inherit_graph_58.md5 | 1 + .../docs/doxygen/html/inherit_graph_58.png | Bin 0 -> 1466 bytes .../docs/doxygen/html/inherit_graph_59.map} | 0 .../docs/doxygen/html/inherit_graph_59.md5} | 0 .../docs/doxygen/html/inherit_graph_59.png} | Bin .../docs/doxygen/html/inherit_graph_6.map} | 0 .../docs/doxygen/html/inherit_graph_6.md5} | 0 .../docs/doxygen/html/inherit_graph_6.png} | Bin .../docs/doxygen/html/inherit_graph_60.map} | 0 .../docs/doxygen/html/inherit_graph_60.md5} | 0 .../docs/doxygen/html/inherit_graph_60.png} | Bin .../docs/doxygen/html/inherit_graph_61.map} | 0 .../docs/doxygen/html/inherit_graph_61.md5} | 0 .../docs/doxygen/html/inherit_graph_61.png} | Bin .../docs/doxygen/html/inherit_graph_62.map} | 0 .../docs/doxygen/html/inherit_graph_62.md5} | 0 .../docs/doxygen/html/inherit_graph_62.png} | Bin .../docs/doxygen/html/inherit_graph_63.map} | 0 .../docs/doxygen/html/inherit_graph_63.md5} | 0 .../docs/doxygen/html/inherit_graph_63.png} | Bin .../docs/doxygen/html/inherit_graph_64.map} | 0 .../docs/doxygen/html/inherit_graph_64.md5} | 0 .../docs/doxygen/html/inherit_graph_64.png} | Bin .../docs/doxygen/html/inherit_graph_65.map} | 0 .../docs/doxygen/html/inherit_graph_65.md5} | 0 .../docs/doxygen/html/inherit_graph_65.png} | Bin .../docs/doxygen/html/inherit_graph_66.map} | 0 .../docs/doxygen/html/inherit_graph_66.md5} | 0 .../docs/doxygen/html/inherit_graph_66.png} | Bin .../docs/doxygen/html/inherit_graph_67.map} | 0 .../docs/doxygen/html/inherit_graph_67.md5} | 0 .../docs/doxygen/html/inherit_graph_67.png} | Bin .../docs/doxygen/html/inherit_graph_68.map} | 0 .../docs/doxygen/html/inherit_graph_68.md5} | 0 .../docs/doxygen/html/inherit_graph_68.png} | Bin .../docs/doxygen/html/inherit_graph_7.map | 3 + .../docs/doxygen/html/inherit_graph_7.md5 | 1 + .../docs/doxygen/html/inherit_graph_7.png | Bin 0 -> 1465 bytes .../docs/doxygen/html/inherit_graph_8.map} | 0 .../docs/doxygen/html/inherit_graph_8.md5} | 0 .../docs/doxygen/html/inherit_graph_8.png} | Bin .../docs/doxygen/html/inherit_graph_9.map} | 0 .../docs/doxygen/html/inherit_graph_9.md5} | 0 .../docs/doxygen/html/inherit_graph_9.png} | Bin .../docs/doxygen/html/inherits.html | 160 +- .../docs/doxygen/html/ir__Airwell_8cpp.html | 0 .../docs/doxygen/html/ir__Airwell_8h.html | 0 .../doxygen/html/ir__Airwell_8h_source.html | 10 +- .../docs/doxygen/html/ir__Aiwa_8cpp.html | 0 .../docs/doxygen/html/ir__Amcor_8cpp.html | 0 .../docs/doxygen/html/ir__Amcor_8h.html | 274 +- .../doxygen/html/ir__Amcor_8h_source.html | 328 +- .../docs/doxygen/html/ir__Argo_8cpp.html | 0 .../docs/doxygen/html/ir__Argo_8h.html | 270 +- .../docs/doxygen/html/ir__Argo_8h_source.html | 507 +- .../docs/doxygen/html/ir__Carrier_8cpp.html | 0 .../docs/doxygen/html/ir__Carrier_8h.html | 314 + .../doxygen/html/ir__Carrier_8h_source.html | 334 +- .../docs/doxygen/html/ir__Coolix_8cpp.html | 0 .../docs/doxygen/html/ir__Coolix_8h.html | 0 .../doxygen/html/ir__Coolix_8h_source.html | 4 +- .../docs/doxygen/html/ir__Corona_8cpp.html | 0 .../docs/doxygen/html/ir__Corona_8h.html | 294 +- .../doxygen/html/ir__Corona_8h_source.html | 415 +- .../docs/doxygen/html/ir__Daikin_8cpp.html | 0 .../docs/doxygen/html/ir__Daikin_8h.html | 8 +- .../doxygen/html/ir__Daikin_8h_source.html | 32 +- .../docs/doxygen/html/ir__Delonghi_8cpp.html | 0 .../docs/doxygen/html/ir__Delonghi_8h.html | 361 ++ .../doxygen/html/ir__Delonghi_8h_source.html | 375 +- .../docs/doxygen/html/ir__Denon_8cpp.html | 2 +- .../docs/doxygen/html/ir__Dish_8cpp.html | 0 .../docs/doxygen/html/ir__Doshisha_8cpp.html | 0 .../docs/doxygen/html/ir__Electra_8cpp.html | 0 .../docs/doxygen/html/ir__Electra_8h.html | 0 .../doxygen/html/ir__Electra_8h_source.html | 6 +- .../docs/doxygen/html/ir__Epson_8cpp.html | 0 .../docs/doxygen/html/ir__Fujitsu_8cpp.html | 0 .../docs/doxygen/html/ir__Fujitsu_8h.html | 137 + .../doxygen/html/ir__Fujitsu_8h_source.html | 544 +- .../docs/doxygen/html/ir__GICable_8cpp.html | 2 +- .../doxygen/html/ir__GlobalCache_8cpp.html | 0 .../doxygen/html/ir__Goodweather_8cpp.html | 0 .../docs/doxygen/html/ir__Goodweather_8h.html | 0 .../html/ir__Goodweather_8h_source.html | 4 +- .../docs/doxygen/html/ir__Gree_8cpp.html | 0 .../docs/doxygen/html/ir__Gree_8h.html | 0 .../docs/doxygen/html/ir__Gree_8h_source.html | 6 +- .../docs/doxygen/html/ir__Haier_8cpp.html | 0 .../docs/doxygen/html/ir__Haier_8h.html | 0 .../doxygen/html/ir__Haier_8h_source.html | 10 +- .../docs/doxygen/html/ir__Hitachi_8cpp.html | 0 .../docs/doxygen/html/ir__Hitachi_8h.html | 0 .../doxygen/html/ir__Hitachi_8h_source.html | 14 +- .../docs/doxygen/html/ir__Inax_8cpp.html | 0 .../docs/doxygen/html/ir__JVC_8cpp.html | 2 +- .../doxygen/html/ir__Kelvinator_8cpp.html | 0 .../docs/doxygen/html/ir__Kelvinator_8h.html | 0 .../html/ir__Kelvinator_8h_source.html | 6 +- .../docs/doxygen/html/ir__LG_8cpp.html | 0 .../docs/doxygen/html/ir__LG_8h.html | 0 .../docs/doxygen/html/ir__LG_8h_source.html | 6 +- .../docs/doxygen/html/ir__Lasertag_8cpp.html | 0 .../docs/doxygen/html/ir__Lego_8cpp.html | 0 .../docs/doxygen/html/ir__Lutron_8cpp.html | 0 .../docs/doxygen/html/ir__MWM_8cpp.html | 0 .../docs/doxygen/html/ir__Magiquest_8cpp.html | 0 .../docs/doxygen/html/ir__Magiquest_8h.html | 0 .../doxygen/html/ir__Magiquest_8h_source.html | 4 +- .../docs/doxygen/html/ir__Metz_8cpp.html | 0 .../docs/doxygen/html/ir__Midea_8cpp.html | 0 .../docs/doxygen/html/ir__Midea_8h.html | 0 .../doxygen/html/ir__Midea_8h_source.html | 4 +- .../html/ir__MitsubishiHeavy_8cpp.html | 0 .../doxygen/html/ir__MitsubishiHeavy_8h.html | 0 .../html/ir__MitsubishiHeavy_8h_source.html | 10 +- .../doxygen/html/ir__Mitsubishi_8cpp.html | 0 .../docs/doxygen/html/ir__Mitsubishi_8h.html | 0 .../html/ir__Mitsubishi_8h_source.html | 14 +- .../doxygen/html/ir__Multibrackets_8cpp.html | 0 .../docs/doxygen/html/ir__NEC_8cpp.html | 0 .../docs/doxygen/html/ir__NEC_8h.html | 2 +- .../docs/doxygen/html/ir__NEC_8h_source.html | 2 +- .../docs/doxygen/html/ir__Neoclima_8cpp.html | 8 +- .../docs/doxygen/html/ir__Neoclima_8h.html | 140 +- .../doxygen/html/ir__Neoclima_8h_source.html | 512 +- .../docs/doxygen/html/ir__Nikai_8cpp.html | 0 .../docs/doxygen/html/ir__Panasonic_8cpp.html | 2 +- .../docs/doxygen/html/ir__Panasonic_8h.html | 0 .../doxygen/html/ir__Panasonic_8h_source.html | 6 +- .../docs/doxygen/html/ir__Pioneer_8cpp.html | 0 .../docs/doxygen/html/ir__Pronto_8cpp.html | 0 .../docs/doxygen/html/ir__RC5__RC6_8cpp.html | 0 .../docs/doxygen/html/ir__RCMM_8cpp.html | 0 .../docs/doxygen/html/ir__Samsung_8cpp.html | 2 +- .../docs/doxygen/html/ir__Samsung_8h.html | 0 .../doxygen/html/ir__Samsung_8h_source.html | 8 +- .../docs/doxygen/html/ir__Sanyo_8cpp.html | 2 +- .../docs/doxygen/html/ir__Sanyo_8h.html | 0 .../doxygen/html/ir__Sanyo_8h_source.html | 6 +- .../docs/doxygen/html/ir__Sharp_8cpp.html | 4 +- .../docs/doxygen/html/ir__Sharp_8h.html | 0 .../doxygen/html/ir__Sharp_8h_source.html | 6 +- .../docs/doxygen/html/ir__Sherwood_8cpp.html | 0 .../docs/doxygen/html/ir__Sony_8cpp.html | 0 .../docs/doxygen/html/ir__Symphony_8cpp.html | 0 .../docs/doxygen/html/ir__Tcl_8cpp.html | 0 .../docs/doxygen/html/ir__Tcl_8h.html | 0 .../docs/doxygen/html/ir__Tcl_8h_source.html | 6 +- .../docs/doxygen/html/ir__Technibel_8cpp.html | 204 + .../docs/doxygen/html/ir__Technibel_8h.html | 703 +++ .../doxygen/html/ir__Technibel_8h_source.html | 328 + .../docs/doxygen/html/ir__Teco_8cpp.html | 0 .../docs/doxygen/html/ir__Teco_8h.html | 0 .../docs/doxygen/html/ir__Teco_8h_source.html | 4 +- .../docs/doxygen/html/ir__Toshiba_8cpp.html | 0 .../docs/doxygen/html/ir__Toshiba_8h.html | 0 .../doxygen/html/ir__Toshiba_8h_source.html | 8 +- .../docs/doxygen/html/ir__Transcold_8cpp.html | 188 + .../docs/doxygen/html/ir__Transcold_8h.html | 567 ++ .../doxygen/html/ir__Transcold_8h_source.html | 318 + .../docs/doxygen/html/ir__Trotec_8cpp.html | 0 .../docs/doxygen/html/ir__Trotec_8h.html | 0 .../doxygen/html/ir__Trotec_8h_source.html | 6 +- .../docs/doxygen/html/ir__Vestel_8cpp.html | 0 .../docs/doxygen/html/ir__Vestel_8h.html | 0 .../doxygen/html/ir__Vestel_8h_source.html | 4 +- .../docs/doxygen/html/ir__Voltas_8cpp.html | 0 .../docs/doxygen/html/ir__Voltas_8h.html | 0 .../doxygen/html/ir__Voltas_8h_source.html | 6 +- .../docs/doxygen/html/ir__Whirlpool_8cpp.html | 0 .../docs/doxygen/html/ir__Whirlpool_8h.html | 0 .../doxygen/html/ir__Whirlpool_8h_source.html | 24 +- .../docs/doxygen/html/ir__Whynter_8cpp.html | 2 +- .../docs/doxygen/html/ir__Zepeal_8cpp.html | 0 .../docs/doxygen/html/it-IT_8h.html | 0 .../docs/doxygen/html/it-IT_8h_source.html | 0 .../docs/doxygen/html/jquery.js | 0 .../doxygen/html/md_src_locale_README.html | 0 .../docs/doxygen/html/menu.js | 0 .../docs/doxygen/html/menudata.js | 0 .../docs/doxygen/html/namespaceIRAcUtils.html | 0 .../docs/doxygen/html/namespaceirutils.html | 0 .../docs/doxygen/html/namespacemembers.html | 0 .../doxygen/html/namespacemembers_enum.html | 0 .../doxygen/html/namespacemembers_func.html | 0 .../docs/doxygen/html/namespaces.html | 0 .../docs/doxygen/html/namespacestdAc.html | 0 .../docs/doxygen/html/nav_f.png | Bin .../docs/doxygen/html/nav_g.png | Bin .../docs/doxygen/html/nav_h.png | Bin .../docs/doxygen/html/open.png | Bin .../docs/doxygen/html/pages.html | 0 .../docs/doxygen/html/search/all_0.html | 0 .../docs/doxygen/html/search/all_0.js | 76 + .../docs/doxygen/html/search/all_1.html | 0 .../docs/doxygen/html/search/all_1.js | 26 + .../docs/doxygen/html/search/all_10.html | 0 .../docs/doxygen/html/search/all_10.js | 17 + .../docs/doxygen/html/search/all_11.html | 0 .../docs/doxygen/html/search/all_11.js | 2 +- .../docs/doxygen/html/search/all_12.html | 0 .../docs/doxygen/html/search/all_12.js | 30 + .../docs/doxygen/html/search/all_13.html | 0 .../docs/doxygen/html/search/all_13.js | 509 +- .../docs/doxygen/html/search/all_14.html | 0 .../docs/doxygen/html/search/all_14.js | 68 +- .../docs/doxygen/html/search/all_15.html | 0 .../docs/doxygen/html/search/all_15.js | 13 + .../docs/doxygen/html/search/all_16.html | 0 .../docs/doxygen/html/search/all_16.js | 17 +- .../docs/doxygen/html/search/all_17.html | 0 .../docs/doxygen/html/search/all_17.js | 12 +- .../docs/doxygen/html/search/all_18.html | 0 .../docs/doxygen/html/search/all_18.js | 4 +- .../docs/doxygen/html/search/all_19.html | 0 .../docs/doxygen/html/search/all_19.js | 4 +- .../docs/doxygen/html/search/all_1a.html | 0 .../docs/doxygen/html/search/all_1a.js | 6 + .../docs/doxygen/html/search/all_1b.html | 0 .../docs/doxygen/html/search/all_1b.js | 4 + .../docs/doxygen/html/search/all_2.html | 0 .../docs/doxygen/html/search/all_2.js | 23 +- .../docs/doxygen/html/search/all_3.html | 0 .../docs/doxygen/html/search/all_3.js | 94 +- .../docs/doxygen/html/search/all_4.html | 0 .../docs/doxygen/html/search/all_4.js | 122 + .../docs/doxygen/html/search/all_5.html | 0 .../docs/doxygen/html/search/all_5.js | 35 + .../docs/doxygen/html/search/all_6.html | 0 .../docs/doxygen/html/search/all_6.js | 18 + .../docs/doxygen/html/search/all_7.html | 0 .../docs/doxygen/html/search/all_7.js | 238 +- .../docs/doxygen/html/search/all_8.html | 0 .../docs/doxygen/html/search/all_8.js | 30 + .../docs/doxygen/html/search/all_9.html | 0 .../docs/doxygen/html/search/all_9.js | 192 + .../docs/doxygen/html/search/all_a.html | 0 .../docs/doxygen/html/search/all_a.js | 2 +- .../docs/doxygen/html/search/all_b.html | 0 .../docs/doxygen/html/search/all_b.js | 5261 +++++++++-------- .../docs/doxygen/html/search/all_c.html | 0 .../docs/doxygen/html/search/all_c.js | 17 + .../docs/doxygen/html/search/all_d.html | 0 .../docs/doxygen/html/search/all_d.js | 77 +- .../docs/doxygen/html/search/all_e.html | 0 .../docs/doxygen/html/search/all_e.js | 9 + .../docs/doxygen/html/search/all_f.html | 0 .../docs/doxygen/html/search/all_f.js | 46 +- .../docs/doxygen/html/search/classes_0.html | 0 .../docs/doxygen/html/search/classes_0.js | 6 + .../docs/doxygen/html/search/classes_1.html | 0 .../docs/doxygen/html/search/classes_1.js | 6 + .../docs/doxygen/html/search/classes_2.html | 0 .../docs/doxygen/html/search/classes_2.js | 5 + .../docs/doxygen/html/search/classes_3.html | 0 .../docs/doxygen/html/search/classes_3.js | 4 + .../docs/doxygen/html/search/classes_4.html | 0 .../docs/doxygen/html/search/classes_4.js | 5 + .../docs/doxygen/html/search/classes_5.html | 0 .../docs/doxygen/html/search/classes_5.js | 56 + .../docs/doxygen/html/search/classes_6.html | 0 .../docs/doxygen/html/search/classes_6.js | 6 + .../docs/doxygen/html/search/classes_7.html | 0 .../docs/doxygen/html/search/classes_7.js | 4 + .../docs/doxygen/html/search/classes_8.html | 0 .../docs/doxygen/html/search/classes_8.js | 4 + .../docs/doxygen/html/search/classes_9.html | 30 + .../docs/doxygen/html/search/classes_9.js | 4 + .../docs/doxygen/html/search/close.png | Bin .../docs/doxygen/html/search/enums_0.html | 0 .../docs/doxygen/html/search/enums_0.js | 2 +- .../docs/doxygen/html/search/enums_1.html | 0 .../docs/doxygen/html/search/enums_1.js | 4 +- .../docs/doxygen/html/search/enums_2.html | 0 .../docs/doxygen/html/search/enums_2.js | 2 +- .../docs/doxygen/html/search/enums_3.html | 0 .../docs/doxygen/html/search/enums_3.js | 2 +- .../docs/doxygen/html/search/enums_4.html | 0 .../docs/doxygen/html/search/enums_4.js | 2 +- .../docs/doxygen/html/search/enums_5.html | 0 .../docs/doxygen/html/search/enums_5.js | 4 + .../docs/doxygen/html/search/enums_6.html | 0 .../docs/doxygen/html/search/enums_6.js | 2 +- .../docs/doxygen/html/search/enums_7.html | 0 .../docs/doxygen/html/search/enums_7.js | 5 + .../docs/doxygen/html/search/enums_8.html | 0 .../docs/doxygen/html/search/enums_8.js | 2 +- .../docs/doxygen/html/search/enums_9.html | 0 .../docs/doxygen/html/search/enums_9.js | 2 +- .../doxygen/html/search/enumvalues_0.html | 0 .../docs/doxygen/html/search/enumvalues_0.js | 20 +- .../doxygen/html/search/enumvalues_1.html | 0 .../docs/doxygen/html/search/enumvalues_1.js | 10 +- .../doxygen/html/search/enumvalues_10.html | 0 .../docs/doxygen/html/search/enumvalues_10.js | 9 + .../doxygen/html/search/enumvalues_11.html | 0 .../docs/doxygen/html/search/enumvalues_11.js | 4 +- .../doxygen/html/search/enumvalues_12.html | 0 .../docs/doxygen/html/search/enumvalues_12.js | 4 +- .../doxygen/html/search/enumvalues_13.html | 0 .../docs/doxygen/html/search/enumvalues_13.js | 4 +- .../doxygen/html/search/enumvalues_14.html | 0 .../docs/doxygen/html/search/enumvalues_14.js | 4 +- .../doxygen/html/search/enumvalues_15.html | 0 .../docs/doxygen/html/search/enumvalues_15.js | 2 +- .../doxygen/html/search/enumvalues_2.html | 0 .../docs/doxygen/html/search/enumvalues_2.js | 28 +- .../doxygen/html/search/enumvalues_3.html | 0 .../docs/doxygen/html/search/enumvalues_3.js | 4 +- .../doxygen/html/search/enumvalues_4.html | 0 .../docs/doxygen/html/search/enumvalues_4.js | 2 +- .../doxygen/html/search/enumvalues_5.html | 0 .../docs/doxygen/html/search/enumvalues_5.js | 10 +- .../doxygen/html/search/enumvalues_6.html | 0 .../docs/doxygen/html/search/enumvalues_6.js | 16 +- .../doxygen/html/search/enumvalues_7.html | 0 .../docs/doxygen/html/search/enumvalues_7.js | 2 +- .../doxygen/html/search/enumvalues_8.html | 0 .../docs/doxygen/html/search/enumvalues_8.js | 2 +- .../doxygen/html/search/enumvalues_9.html | 0 .../docs/doxygen/html/search/enumvalues_9.js | 68 +- .../doxygen/html/search/enumvalues_a.html | 0 .../docs/doxygen/html/search/enumvalues_a.js | 10 +- .../doxygen/html/search/enumvalues_b.html | 0 .../docs/doxygen/html/search/enumvalues_b.js | 26 +- .../doxygen/html/search/enumvalues_c.html | 0 .../docs/doxygen/html/search/enumvalues_c.js | 8 +- .../doxygen/html/search/enumvalues_d.html | 0 .../docs/doxygen/html/search/enumvalues_d.js | 8 +- .../doxygen/html/search/enumvalues_e.html | 0 .../docs/doxygen/html/search/enumvalues_e.js | 14 +- .../doxygen/html/search/enumvalues_f.html | 0 .../docs/doxygen/html/search/enumvalues_f.js | 24 +- .../docs/doxygen/html/search/files_0.html | 0 .../docs/doxygen/html/search/files_0.js | 7 + .../docs/doxygen/html/search/files_1.html | 0 .../docs/doxygen/html/search/files_1.js | 8 + .../docs/doxygen/html/search/files_2.html | 0 .../docs/doxygen/html/search/files_2.js | 4 + .../docs/doxygen/html/search/files_3.html | 0 .../docs/doxygen/html/search/files_3.js | 113 + .../docs/doxygen/html/search/files_4.html | 0 .../docs/doxygen/html/search/files_4.js | 4 + .../docs/doxygen/html/search/files_5.html | 0 .../docs/doxygen/html/search/files_5.js | 4 + .../docs/doxygen/html/search/functions_0.html | 0 .../docs/doxygen/html/search/functions_0.js | 33 +- .../docs/doxygen/html/search/functions_1.html | 0 .../docs/doxygen/html/search/functions_1.js | 15 + .../doxygen/html/search/functions_10.html | 0 .../docs/doxygen/html/search/functions_10.js | 20 +- .../doxygen/html/search/functions_11.html | 0 .../docs/doxygen/html/search/functions_11.js | 447 +- .../doxygen/html/search/functions_12.html | 0 .../docs/doxygen/html/search/functions_12.js | 39 +- .../doxygen/html/search/functions_13.html | 0 .../docs/doxygen/html/search/functions_13.js | 6 + .../doxygen/html/search/functions_14.html | 0 .../docs/doxygen/html/search/functions_14.js | 8 +- .../doxygen/html/search/functions_15.html | 0 .../docs/doxygen/html/search/functions_15.js | 4 + .../doxygen/html/search/functions_16.html | 0 .../docs/doxygen/html/search/functions_16.js | 2 +- .../doxygen/html/search/functions_17.html | 0 .../docs/doxygen/html/search/functions_17.js | 4 + .../docs/doxygen/html/search/functions_2.html | 0 .../docs/doxygen/html/search/functions_2.js | 10 +- .../docs/doxygen/html/search/functions_3.html | 0 .../docs/doxygen/html/search/functions_3.js | 65 +- .../docs/doxygen/html/search/functions_4.html | 0 .../docs/doxygen/html/search/functions_4.js | 100 + .../docs/doxygen/html/search/functions_5.html | 0 .../docs/doxygen/html/search/functions_5.js | 48 +- .../docs/doxygen/html/search/functions_6.html | 0 .../docs/doxygen/html/search/functions_6.js | 10 +- .../docs/doxygen/html/search/functions_7.html | 0 .../docs/doxygen/html/search/functions_7.js | 228 +- .../docs/doxygen/html/search/functions_8.html | 0 .../docs/doxygen/html/search/functions_8.js | 15 + .../docs/doxygen/html/search/functions_9.html | 0 .../docs/doxygen/html/search/functions_9.js | 134 +- .../docs/doxygen/html/search/functions_a.html | 0 .../docs/doxygen/html/search/functions_a.js | 4 + .../docs/doxygen/html/search/functions_b.html | 0 .../docs/doxygen/html/search/functions_b.js | 7 + .../docs/doxygen/html/search/functions_c.html | 0 .../docs/doxygen/html/search/functions_c.js | 44 +- .../docs/doxygen/html/search/functions_d.html | 0 .../docs/doxygen/html/search/functions_d.js | 4 + .../docs/doxygen/html/search/functions_e.html | 0 .../docs/doxygen/html/search/functions_e.js | 6 +- .../docs/doxygen/html/search/functions_f.html | 0 .../docs/doxygen/html/search/functions_f.js | 4 + .../docs/doxygen/html/search/mag_sel.png | Bin .../doxygen/html/search/namespaces_0.html | 0 .../docs/doxygen/html/search/namespaces_0.js | 5 + .../doxygen/html/search/namespaces_1.html | 0 .../docs/doxygen/html/search/namespaces_1.js | 4 + .../docs/doxygen/html/search/nomatches.html | 0 .../docs/doxygen/html/search/pages_0.html | 0 .../docs/doxygen/html/search/pages_0.js | 4 + .../docs/doxygen/html/search/pages_1.html | 0 .../docs/doxygen/html/search/pages_1.js | 5 + .../docs/doxygen/html/search/pages_2.html | 0 .../docs/doxygen/html/search/pages_2.js | 4 + .../docs/doxygen/html/search/related_0.html | 0 .../docs/doxygen/html/search/related_0.js | 2 +- .../docs/doxygen/html/search/search.css | 0 .../docs/doxygen/html/search/search.js | 0 .../docs/doxygen/html/search/search_l.png | Bin .../docs/doxygen/html/search/search_m.png | Bin .../docs/doxygen/html/search/search_r.png | Bin .../docs/doxygen/html/search/searchdata.js | 2 +- .../docs/doxygen/html/search/typedefs_0.html | 0 .../docs/doxygen/html/search/typedefs_0.js | 2 +- .../docs/doxygen/html/search/variables_0.html | 0 .../docs/doxygen/html/search/variables_0.js | 60 + .../docs/doxygen/html/search/variables_1.html | 0 .../docs/doxygen/html/search/variables_1.js | 4 + .../doxygen/html/search/variables_10.html | 0 .../docs/doxygen/html/search/variables_10.js | 13 + .../doxygen/html/search/variables_11.html | 0 .../docs/doxygen/html/search/variables_11.js | 21 + .../doxygen/html/search/variables_12.html | 0 .../docs/doxygen/html/search/variables_12.js | 14 + .../doxygen/html/search/variables_13.html | 0 .../docs/doxygen/html/search/variables_13.js | 9 + .../doxygen/html/search/variables_14.html | 0 .../docs/doxygen/html/search/variables_14.js | 5 + .../doxygen/html/search/variables_15.html | 0 .../docs/doxygen/html/search/variables_15.js | 4 +- .../doxygen/html/search/variables_16.html | 0 .../docs/doxygen/html/search/variables_16.js | 4 + .../doxygen/html/search/variables_17.html | 0 .../docs/doxygen/html/search/variables_17.js | 2 +- .../docs/doxygen/html/search/variables_2.html | 0 .../docs/doxygen/html/search/variables_2.js | 10 + .../docs/doxygen/html/search/variables_3.html | 0 .../docs/doxygen/html/search/variables_3.js | 13 + .../docs/doxygen/html/search/variables_4.html | 0 .../docs/doxygen/html/search/variables_4.js | 11 + .../docs/doxygen/html/search/variables_5.html | 0 .../docs/doxygen/html/search/variables_5.js | 4 + .../docs/doxygen/html/search/variables_6.html | 0 .../docs/doxygen/html/search/variables_6.js | 9 + .../docs/doxygen/html/search/variables_7.html | 0 .../docs/doxygen/html/search/variables_7.js | 7 + .../docs/doxygen/html/search/variables_8.html | 0 .../docs/doxygen/html/search/variables_8.js | 8 + .../docs/doxygen/html/search/variables_9.html | 0 .../docs/doxygen/html/search/variables_9.js | 5193 ++++++++-------- .../docs/doxygen/html/search/variables_a.html | 0 .../docs/doxygen/html/search/variables_a.js | 8 + .../docs/doxygen/html/search/variables_b.html | 0 .../docs/doxygen/html/search/variables_b.js | 9 + .../docs/doxygen/html/search/variables_c.html | 0 .../docs/doxygen/html/search/variables_c.js | 5 + .../docs/doxygen/html/search/variables_d.html | 0 .../docs/doxygen/html/search/variables_d.js | 22 + .../docs/doxygen/html/search/variables_e.html | 0 .../docs/doxygen/html/search/variables_e.js | 12 + .../docs/doxygen/html/search/variables_f.html | 0 .../docs/doxygen/html/search/variables_f.js | 2 +- .../docs/doxygen/html/splitbar.png | Bin .../html/structCoronaSection-members.html | 86 + .../doxygen/html/structCoronaSection.html | 201 + .../html/structirparams__t-members.html | 0 .../docs/doxygen/html/structirparams__t.html | 0 .../html/structmatch__result__t-members.html | 0 .../doxygen/html/structmatch__result__t.html | 0 .../html/structstdAc_1_1state__t-members.html | 0 .../doxygen/html/structstdAc_1_1state__t.html | 0 .../docs/doxygen/html/sync_off.png | Bin .../docs/doxygen/html/sync_on.png | Bin .../docs/doxygen/html/tab_a.png | Bin .../docs/doxygen/html/tab_b.png | Bin .../docs/doxygen/html/tab_h.png | Bin .../docs/doxygen/html/tab_s.png | Bin .../docs/doxygen/html/tabs.css | 0 .../docs/doxygen/html/todo.html | 0 .../html/unionAirwellProtocol-members.html | 0 .../doxygen/html/unionAirwellProtocol.html | 0 .../html/unionAmcorProtocol-members.html | 96 + .../docs/doxygen/html/unionAmcorProtocol.html | 378 ++ .../html/unionArgoProtocol-members.html | 107 + .../docs/doxygen/html/unionArgoProtocol.html | 557 ++ .../html/unionCarrierProtocol-members.html | 99 + .../doxygen/html/unionCarrierProtocol.html | 429 ++ .../html/unionCoronaProtocol-members.html | 96 + .../doxygen/html/unionCoronaProtocol.html | 390 ++ .../html/unionCoronaProtocol__coll__graph.map | 4 + .../html/unionCoronaProtocol__coll__graph.md5 | 1 + .../html/unionCoronaProtocol__coll__graph.png | Bin 0 -> 3779 bytes .../html/unionDelonghiProtocol-members.html | 100 + .../doxygen/html/unionDelonghiProtocol.html | 445 ++ .../html/unionGreeProtocol-members.html | 0 .../docs/doxygen/html/unionGreeProtocol.html | 122 +- .../html/unionHaierProtocol-members.html | 0 .../docs/doxygen/html/unionHaierProtocol.html | 90 +- .../html/unionHaierYRW02Protocol-members.html | 0 .../doxygen/html/unionHaierYRW02Protocol.html | 106 +- .../html/unionMideaProtocol-members.html | 0 .../docs/doxygen/html/unionMideaProtocol.html | 58 +- .../html/unionVoltasProtocol-members.html | 0 .../doxygen/html/unionVoltasProtocol.html | 126 +- .../doxygen/html/unionmagiquest-members.html | 2 +- .../docs/doxygen/html/unionmagiquest.html | 26 +- .../docs/doxygen/html/zh-CN_8h.html | 0 .../docs/doxygen/html/zh-CN_8h_source.html | 0 .../docs/doxygen_index.md | 0 .../examples/BlynkIrRemote/BlynkIrRemote.ino | 0 .../examples/BlynkIrRemote/platformio.ini | 0 .../CommonAcControl/CommonAcControl.ino | 0 .../examples/CommonAcControl/platformio.ini | 0 .../ControlSamsungAC/ControlSamsungAC.ino | 0 .../examples/ControlSamsungAC/platformio.ini | 0 .../DumbIRRepeater/DumbIRRepeater.ino | 0 .../examples/DumbIRRepeater/platformio.ini | 0 .../examples/IRGCSendDemo/IRGCSendDemo.ino | 0 .../examples/IRGCSendDemo/platformio.ini | 0 .../examples/IRGCTCPServer/IRGCTCPServer.ino | 0 .../examples/IRGCTCPServer/platformio.ini | 0 .../examples/IRMQTTServer/IRMQTTServer.h | 12 +- .../examples/IRMQTTServer/IRMQTTServer.ino | 21 +- .../examples/IRMQTTServer/platformio.ini | 4 +- .../examples/IRServer/IRServer.ino | 0 .../examples/IRServer/platformio.ini | 0 .../examples/IRrecvDemo/IRrecvDemo.ino | 0 .../examples/IRrecvDemo/platformio.ini | 0 .../examples/IRrecvDump/IRrecvDump.ino | 0 .../examples/IRrecvDump/platformio.ini | 0 .../examples/IRrecvDumpV2/IRrecvDumpV2.ino | 0 .../examples/IRrecvDumpV2/platformio.ini | 0 .../examples/IRrecvDumpV3/BaseOTA.h | 0 .../examples/IRrecvDumpV3/IRrecvDumpV3.ino | 0 .../examples/IRrecvDumpV3/platformio.ini | 0 .../examples/IRsendDemo/IRsendDemo.ino | 0 .../examples/IRsendDemo/platformio.ini | 0 .../IRsendProntoDemo/IRsendProntoDemo.ino | 0 .../examples/IRsendProntoDemo/platformio.ini | 0 .../JVCPanasonicSendDemo.ino | 0 .../JVCPanasonicSendDemo/platformio.ini | 0 .../examples/LGACSend/LGACSend.ino | 0 .../examples/LGACSend/platformio.ini | 0 .../SmartIRRepeater/SmartIRRepeater.ino | 0 .../examples/SmartIRRepeater/platformio.ini | 0 .../examples/TurnOnArgoAC/TurnOnArgoAC.ino | 0 .../examples/TurnOnArgoAC/platformio.ini | 0 .../TurnOnDaikinAC/TurnOnDaikinAC.ino | 0 .../examples/TurnOnDaikinAC/platformio.ini | 0 .../TurnOnFujitsuAC/TurnOnFujitsuAC.ino | 0 .../examples/TurnOnFujitsuAC/platformio.ini | 0 .../examples/TurnOnGreeAC/TurnOnGreeAC.ino | 0 .../examples/TurnOnGreeAC/platformio.ini | 0 .../TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino | 0 .../TurnOnKelvinatorAC/platformio.ini | 0 .../TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino | 0 .../TurnOnMitsubishiAC/platformio.ini | 0 .../TurnOnMitsubishiHeavyAc.ino | 0 .../TurnOnMitsubishiHeavyAc/platformio.ini | 0 .../TurnOnPanasonicAC/TurnOnPanasonicAC.ino | 0 .../examples/TurnOnPanasonicAC/platformio.ini | 0 .../TurnOnToshibaAC/TurnOnToshibaAC.ino | 0 .../examples/TurnOnToshibaAC/platformio.ini | 0 .../TurnOnTrotecAC/TurnOnTrotecAC.ino | 0 .../examples/TurnOnTrotecAC/platformio.ini | 0 .../examples/Web-AC-control/README.md | 0 .../examples/Web-AC-control/Web-AC-control.h | 0 .../Web-AC-control/Web-AC-control.ino | 0 .../examples/Web-AC-control/data/favicon.ico | Bin .../Web-AC-control/data/level_1_off.svg | 0 .../Web-AC-control/data/level_1_on.svg | 0 .../Web-AC-control/data/level_2_off.svg | 0 .../Web-AC-control/data/level_2_on.svg | 0 .../Web-AC-control/data/level_3_off.svg | 0 .../Web-AC-control/data/level_3_on.svg | 0 .../Web-AC-control/data/level_4_off.svg | 0 .../Web-AC-control/data/level_4_on.svg | 0 .../examples/Web-AC-control/data/ui.html | 0 .../examples/Web-AC-control/data/ui.js | 0 .../examples/Web-AC-control/platformio.ini | 0 .../examples/Web-AC-control/printscreen.png | Bin .../src/CPPLINT.cfg | 0 .../src/IRac.cpp | 161 +- .../src/IRac.h | 23 +- .../src/IRrecv.cpp | 8 + .../src/IRrecv.h | 11 + .../src/IRremoteESP8266.h | 28 +- .../src/IRsend.cpp | 26 +- .../src/IRsend.h | 10 +- .../src/IRtext.cpp | 4 + .../src/IRtext.h | 1 + .../src/IRtimer.cpp | 0 .../src/IRtimer.h | 0 .../src/IRutils.cpp | 0 .../src/IRutils.h | 0 .../src/i18n.h | 0 .../src/ir_Airwell.cpp | 14 +- .../src/ir_Airwell.h | 2 +- .../src/ir_Aiwa.cpp | 0 .../src/ir_Amcor.cpp | 93 +- .../src/ir_Amcor.h | 90 +- .../src/ir_Argo.cpp | 124 +- .../src/ir_Argo.h | 115 +- .../src/ir_Carrier.cpp | 106 +- .../src/ir_Carrier.h | 87 +- .../src/ir_Coolix.cpp | 0 .../src/ir_Coolix.h | 0 .../src/ir_Corona.cpp | 171 +- .../src/ir_Corona.h | 105 +- .../src/ir_Daikin.cpp | 0 .../src/ir_Daikin.h | 0 .../src/ir_Delonghi.cpp | 161 +- lib/IRremoteESP8266-2.7.11/src/ir_Delonghi.h | 135 + .../src/ir_Denon.cpp | 0 .../src/ir_Dish.cpp | 0 .../src/ir_Doshisha.cpp | 0 .../src/ir_Electra.cpp | 0 .../src/ir_Electra.h | 0 .../src/ir_Epson.cpp | 0 .../src/ir_Fujitsu.cpp | 255 +- .../src/ir_Fujitsu.h | 47 +- .../src/ir_GICable.cpp | 0 .../src/ir_GlobalCache.cpp | 0 .../src/ir_Goodweather.cpp | 0 .../src/ir_Goodweather.h | 0 .../src/ir_Gree.cpp | 0 .../src/ir_Gree.h | 0 .../src/ir_Haier.cpp | 0 .../src/ir_Haier.h | 0 .../src/ir_Hitachi.cpp | 0 .../src/ir_Hitachi.h | 0 .../src/ir_Inax.cpp | 0 .../src/ir_JVC.cpp | 0 .../src/ir_Kelvinator.cpp | 0 .../src/ir_Kelvinator.h | 0 .../src/ir_LG.cpp | 0 .../src/ir_LG.h | 0 .../src/ir_Lasertag.cpp | 0 .../src/ir_Lego.cpp | 0 .../src/ir_Lutron.cpp | 0 .../src/ir_MWM.cpp | 0 .../src/ir_Magiquest.cpp | 0 .../src/ir_Magiquest.h | 0 .../src/ir_Metz.cpp | 0 .../src/ir_Midea.cpp | 0 .../src/ir_Midea.h | 0 .../src/ir_Mitsubishi.cpp | 0 .../src/ir_Mitsubishi.h | 0 .../src/ir_MitsubishiHeavy.cpp | 0 .../src/ir_MitsubishiHeavy.h | 0 .../src/ir_Multibrackets.cpp | 0 .../src/ir_NEC.cpp | 0 .../src/ir_NEC.h | 0 .../src/ir_Neoclima.cpp | 134 +- .../src/ir_Neoclima.h | 59 +- .../src/ir_Nikai.cpp | 0 .../src/ir_Panasonic.cpp | 0 .../src/ir_Panasonic.h | 0 .../src/ir_Pioneer.cpp | 0 .../src/ir_Pronto.cpp | 0 .../src/ir_RC5_RC6.cpp | 0 .../src/ir_RCMM.cpp | 0 .../src/ir_Samsung.cpp | 0 .../src/ir_Samsung.h | 0 .../src/ir_Sanyo.cpp | 0 .../src/ir_Sanyo.h | 0 .../src/ir_Sharp.cpp | 0 .../src/ir_Sharp.h | 0 .../src/ir_Sherwood.cpp | 0 .../src/ir_Sony.cpp | 0 .../src/ir_Symphony.cpp | 0 .../src/ir_Tcl.cpp | 0 .../src/ir_Tcl.h | 0 .../src/ir_Technibel.cpp | 416 ++ lib/IRremoteESP8266-2.7.11/src/ir_Technibel.h | 165 + .../src/ir_Teco.cpp | 0 .../src/ir_Teco.h | 0 .../src/ir_Toshiba.cpp | 0 .../src/ir_Toshiba.h | 0 .../src/ir_Transcold.cpp | 541 ++ lib/IRremoteESP8266-2.7.11/src/ir_Transcold.h | 170 + .../src/ir_Trotec.cpp | 0 .../src/ir_Trotec.h | 0 .../src/ir_Vestel.cpp | 0 .../src/ir_Vestel.h | 0 .../src/ir_Voltas.cpp | 0 .../src/ir_Voltas.h | 0 .../src/ir_Whirlpool.cpp | 126 +- .../src/ir_Whirlpool.h | 6 +- .../src/ir_Whynter.cpp | 0 .../src/ir_Zepeal.cpp | 0 .../src/locale/README.md | 0 .../src/locale/de-CH.h | 0 .../src/locale/de-DE.h | 0 .../src/locale/defaults.h | 12 + .../src/locale/en-AU.h | 0 .../src/locale/en-IE.h | 0 .../src/locale/en-UK.h | 0 .../src/locale/en-US.h | 0 .../src/locale/es-ES.h | 0 .../src/locale/fr-FR.h | 0 .../src/locale/it-IT.h | 0 .../src/locale/zh-CN.h | 0 .../test/IRac_test.cpp | 157 +- .../test/IRrecv_test.cpp | 0 .../test/IRrecv_test.h | 0 .../test/IRsend_test.cpp | 0 .../test/IRsend_test.h | 0 .../test/IRutils_test.cpp | 0 .../test/Makefile | 0 .../test/ir_Airwell_test.cpp | 0 .../test/ir_Aiwa_test.cpp | 0 .../test/ir_Amcor_test.cpp | 0 .../test/ir_Argo_test.cpp | 0 .../test/ir_Carrier_test.cpp | 2 - .../test/ir_Coolix_test.cpp | 0 .../test/ir_Corona_test.cpp | 3 - .../test/ir_Daikin_test.cpp | 0 .../test/ir_Delonghi_test.cpp | 0 .../test/ir_Denon_test.cpp | 0 .../test/ir_Dish_test.cpp | 0 .../test/ir_Doshisha_test.cpp | 0 .../test/ir_Electra_test.cpp | 0 .../test/ir_Epson_test.cpp | 0 .../test/ir_Fujitsu_test.cpp | 171 +- .../test/ir_GICable_test.cpp | 0 .../test/ir_GlobalCache_test.cpp | 0 .../test/ir_Goodweather_test.cpp | 0 .../test/ir_Gree_test.cpp | 0 .../test/ir_Haier_test.cpp | 0 .../test/ir_Hitachi_test.cpp | 0 .../test/ir_Inax_test.cpp | 0 .../test/ir_JVC_test.cpp | 0 .../test/ir_Kelvinator_test.cpp | 0 .../test/ir_LG_test.cpp | 0 .../test/ir_Lasertag_test.cpp | 0 .../test/ir_Lego_test.cpp | 0 .../test/ir_Lutron_test.cpp | 0 .../test/ir_MWM_test.cpp | 0 .../test/ir_Magiquest_test.cpp | 0 .../test/ir_Metz_test.cpp | 0 .../test/ir_Midea_test.cpp | 0 .../test/ir_MitsubishiHeavy_test.cpp | 0 .../test/ir_Mitsubishi_test.cpp | 0 .../test/ir_Multibrackets_test.cpp | 0 .../test/ir_NEC_test.cpp | 0 .../test/ir_Neoclima_test.cpp | 135 +- .../test/ir_Nikai_test.cpp | 0 .../test/ir_Panasonic_test.cpp | 0 .../test/ir_Pioneer_test.cpp | 0 .../test/ir_Pronto_test.cpp | 0 .../test/ir_RC5_RC6_test.cpp | 0 .../test/ir_RCMM_test.cpp | 0 .../test/ir_Samsung_test.cpp | 52 + .../test/ir_Sanyo_test.cpp | 0 .../test/ir_Sharp_test.cpp | 0 .../test/ir_Sherwood_test.cpp | 0 .../test/ir_Sony_test.cpp | 0 .../test/ir_Symphony_test.cpp | 0 .../test/ir_Tcl_test.cpp | 0 .../test/ir_Technibel_test.cpp | 322 + .../test/ir_Teco_test.cpp | 0 .../test/ir_Toshiba_test.cpp | 0 .../test/ir_Transcold_test.cpp | 210 + .../test/ir_Trotec_test.cpp | 0 .../test/ir_Vestel_test.cpp | 0 .../test/ir_Voltas_test.cpp | 0 .../test/ir_Whirlpool_test.cpp | 63 +- .../test/ir_Whynter_test.cpp | 0 .../test/ir_Zepeal_test.cpp | 0 .../tools/Makefile | 0 .../tools/RawToGlobalCache.sh | 0 .../tools/auto_analyse_raw_data.py | 0 .../tools/auto_analyse_raw_data_test.py | 0 .../tools/gc_decode.cpp | 0 .../tools/generate_irtext_h.sh | 0 .../tools/mkkeywords | 2 +- .../tools/mode2_decode.cpp | 0 .../tools/raw_to_pronto_code.py | 0 .../tools/raw_to_pronto_code_test.py | 0 .../tools/scrape_supported_devices.py | 0 1484 files changed, 28811 insertions(+), 22936 deletions(-) delete mode 100644 lib/IRremoteESP8266-2.7.10/.gitignore delete mode 100644 lib/IRremoteESP8266-2.7.10/.gitmodules delete mode 100644 lib/IRremoteESP8266-2.7.10/.style.yapf delete mode 100644 lib/IRremoteESP8266-2.7.10/.travis.yml delete mode 100644 lib/IRremoteESP8266-2.7.10/CPPLINT.cfg delete mode 100644 lib/IRremoteESP8266-2.7.10/Doxyfile delete mode 100644 lib/IRremoteESP8266-2.7.10/LICENSE.txt delete mode 100644 lib/IRremoteESP8266-2.7.10/README.md delete mode 100644 lib/IRremoteESP8266-2.7.10/README_fr.md delete mode 100644 lib/IRremoteESP8266-2.7.10/ReleaseNotes.md delete mode 100644 lib/IRremoteESP8266-2.7.10/SupportedProtocols.md delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRAmcorAc__coll__graph.map delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRAmcorAc__coll__graph.png delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRArgoAC__coll__graph.map delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRArgoAC__coll__graph.md5 delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRArgoAC__coll__graph.png delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCarrierAc64__coll__graph.map delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCarrierAc64__coll__graph.png delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCoronaAc__coll__graph.map delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCoronaAc__coll__graph.png delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRDelonghiAc__coll__graph.map delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRDelonghiAc__coll__graph.png delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/ir__Carrier_8h.html delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/ir__Delonghi_8h.html delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_0.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_1.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_10.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_12.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_15.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_1a.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_1b.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_4.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_5.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_6.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_8.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_9.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_c.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_e.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_0.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_1.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_2.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_3.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_4.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_5.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_6.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_7.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_8.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/enums_5.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/enums_7.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/enumvalues_10.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_0.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_1.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_2.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_3.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_4.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_5.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_1.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_13.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_15.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_17.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_4.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_8.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_a.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_b.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_d.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_f.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/namespaces_0.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/namespaces_1.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/pages_0.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/pages_1.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/pages_2.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_0.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_1.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_10.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_11.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_12.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_13.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_14.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_16.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_2.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_3.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_4.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_5.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_6.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_7.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_8.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_a.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_b.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_c.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_d.js delete mode 100644 lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_e.js delete mode 100644 lib/IRremoteESP8266-2.7.10/keywords.txt delete mode 100644 lib/IRremoteESP8266-2.7.10/library.json delete mode 100644 lib/IRremoteESP8266-2.7.10/library.properties delete mode 100644 lib/IRremoteESP8266-2.7.10/platformio.ini delete mode 100644 lib/IRremoteESP8266-2.7.10/pylintrc delete mode 100644 lib/IRremoteESP8266-2.7.10/src/ir_Delonghi.h rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/.github/CONTRIBUTING.md (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/.github/Contributors.md (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/.github/issue_template.md (82%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/README.md (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/README_fr.md (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/_config.yml (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRac_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRac_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRac_8h_source.html (87%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRrecv_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRrecv_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRrecv_8h_source.html (95%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRremoteESP8266_8h.html (98%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRremoteESP8266_8h_source.html (86%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRsend_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRsend_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRsend_8h_source.html (94%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRtext_8cpp.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRtext_8h.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRtext_8h_source.html (94%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRtimer_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRtimer_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRtimer_8h_source.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRutils_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRutils_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/IRutils_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/README_8md.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/annotated.html (84%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/bc_s.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/bdwn.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRAirwellAc-members.html (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRAirwellAc.html (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRAirwellAc__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRAirwellAc__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRAirwellAc__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRAmcorAc-members.html (70%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRAmcorAc.html (85%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRAmcorAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRAmcorAc__coll__graph.png rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRArgoAC-members.html (84%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRArgoAC.html (89%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRArgoAC__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRArgoAC__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRArgoAC__coll__graph.png rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRCarrierAc64-members.html (69%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRCarrierAc64.html (84%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRCarrierAc64__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRCarrierAc64__coll__graph.png rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRCoolixAC-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRCoolixAC.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRCoolixAC__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRCoolixAC__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRCoolixAC__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRCoronaAc-members.html (61%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRCoronaAc.html (83%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRCoronaAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRCoronaAc__coll__graph.png rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin128-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin128.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin128__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin128__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin128__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin152-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin152.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin152__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin152__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin152__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin160-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin160.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin160__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin160__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin160__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin176-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin176.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin176__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin176__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin176__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin2-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin2.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin216-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin216.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin216__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin216__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin216__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin2__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin2__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin2__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin64-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin64.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin64__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin64__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikin64__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikinESP-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikinESP.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikinESP__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikinESP__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDaikinESP__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDelonghiAc-members.html (68%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRDelonghiAc.html (81%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDelonghiAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDelonghiAc__coll__graph.png rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRElectraAc-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRElectraAc.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRElectraAc__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRElectraAc__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRElectraAc__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRFujitsuAC-members.html (62%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRFujitsuAC.html (85%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRFujitsuAC__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRFujitsuAC__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRGoodweatherAc-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRGoodweatherAc.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRGreeAC-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRGreeAC.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRGreeAC__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRGreeAC__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRGreeAC__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHaierAC-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHaierAC.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHaierACYRW02-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHaierACYRW02.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHaierAC__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHaierAC__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHaierAC__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc1-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc1.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc1__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc1__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc3-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc3.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc344-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc344.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc344__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc344__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc344__inherit__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc3__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc3__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc424-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc424.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc424__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc424__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc424__inherit__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRHitachiAc__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRKelvinatorAC-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRKelvinatorAC.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRLgAc-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRLgAc.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRLgAc__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRLgAc__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRLgAc__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMideaAC-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMideaAC.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMideaAC__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMideaAC__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMideaAC__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishi112-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishi112.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishi112__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishi112__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishi136-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishi136.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishi136__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishi136__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishiAC-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishiAC.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishiHeavy152Ac-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRNeoclimaAc-members.html (70%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRNeoclimaAc.html (93%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRNeoclimaAc__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRNeoclimaAc__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRNeoclimaAc__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRPanasonicAc-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRPanasonicAc.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRPanasonicAc__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRPanasonicAc__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRPanasonicAc__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRSamsungAc-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRSamsungAc.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRSamsungAc__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRSamsungAc__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRSamsungAc__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRSanyoAc-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRSanyoAc.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRSanyoAc__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRSanyoAc__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRSanyoAc__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRSharpAc-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRSharpAc.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRSharpAc__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRSharpAc__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRSharpAc__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRTcl112Ac-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRTcl112Ac.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRTcl112Ac__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRTcl112Ac__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRTcl112Ac__coll__graph.png (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTechnibelAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTechnibelAc.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTechnibelAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTechnibelAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTechnibelAc__coll__graph.png rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRTecoAc-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRTecoAc.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRTecoAc__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRTecoAc__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRTecoAc__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRToshibaAC-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRToshibaAC.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRToshibaAC__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRToshibaAC__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRToshibaAC__coll__graph.png (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTranscoldAc-members.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTranscoldAc.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTranscoldAc__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTranscoldAc__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTranscoldAc__coll__graph.png rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRTrotecESP-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRTrotecESP.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRTrotecESP__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRTrotecESP__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRTrotecESP__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRVestelAc-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRVestelAc.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRVestelAc__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRVestelAc__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRVestelAc__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRVoltas-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRVoltas.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRVoltas__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRVoltas__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRVoltas__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRWhirlpoolAc-members.html (98%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRWhirlpoolAc.html (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRac-members.html (93%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRac.html (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRac__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRac__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRac__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRrecv-members.html (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRrecv.html (98%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRrecv__coll__graph.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRrecv__coll__graph.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRrecv__coll__graph.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRsend-members.html (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRsend.html (98%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRtimer-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classIRtimer.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classTimerMs-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classTimerMs.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classdecode__results-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classdecode__results.html (91%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/classes.html (77%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/closed.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/de-CH_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/de-CH_8h_source.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/de-DE_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/de-DE_8h_source.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/defaults_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/defaults_8h_source.html (67%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/deprecated.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/dir_49e56c817e5e54854c35e136979f97ca.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/dir_84fe998d1eb06414cc389ad334e77e63.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/doc.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/doxygen.css (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/doxygen.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/doxygen__index_8md.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/dynsections.js (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/en-AU_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/en-AU_8h_source.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/en-IE_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/en-IE_8h_source.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/en-UK_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/en-UK_8h_source.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/en-US_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/en-US_8h_source.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/es-ES_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/es-ES_8h_source.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/files.html (95%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/folderclosed.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/folderopen.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/fr-FR_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/fr-FR_8h_source.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions.html (72%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_a.html (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_b.html (95%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_c.html (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_d.html (95%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_e.html (98%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_f.html (84%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func.html (95%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_a.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_b.html (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_c.html (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_d.html (98%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_e.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_f.html (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_g.html (88%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_h.html (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_i.html (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_k.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_l.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_m.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_n.html (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_o.html (89%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_p.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_r.html (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_s.html (95%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_t.html (90%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_u.html (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_v.html (98%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_w.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_func_~.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_g.html (88%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_h.html (92%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_i.html (95%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_k.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_l.html (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_m.html (89%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_n.html (93%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_o.html (81%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_p.html (84%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_q.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_r.html (89%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_rela.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_s.html (94%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_t.html (89%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_u.html (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_v.html (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars.html (69%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_a.html (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_b.html (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_c.html (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_d.html (87%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_e.html (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_f.html (83%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_h.html (92%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_i.html (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_l.html (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_m.html (84%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_n.html (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_o.html (74%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_p.html (84%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_q.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_r.html (90%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_s.html (79%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_t.html (90%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_u.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_v.html (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_w.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_x.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_vars_z.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_w.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_x.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_z.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/functions_~.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_a.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_c.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_d.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_e.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_enum.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_eval.html (98%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_f.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_func.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_g.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_i.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_j.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_k.html (94%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_l.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_m.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_n.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_p.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_r.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_s.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_t.html (88%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_type.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_u.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_v.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_vars.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_vars_i.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_vars_k.html (94%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_w.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_x.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_y.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/globals_z.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/graph_legend.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/graph_legend.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/graph_legend.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/hierarchy.html (81%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/i18n_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/i18n_8h_source.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/index.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/inherit_graph_0.map (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/inherit_graph_0.md5 (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/inherit_graph_0.png (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_1.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_1.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_1.png rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_4.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_10.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_4.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_10.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_4.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_10.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_5.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_11.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_5.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_11.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_5.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_11.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_6.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_12.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_6.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_12.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_6.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_12.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_7.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_13.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_7.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_13.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_7.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_13.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_8.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_14.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_8.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_14.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_8.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_14.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_9.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_15.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_9.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_15.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_9.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_15.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_10.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_16.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_10.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_16.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_10.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_16.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_11.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_17.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_11.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_17.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_11.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_17.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_12.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_18.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_12.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_18.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_12.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_18.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_13.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_19.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_13.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_19.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_13.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_19.png} (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_2.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_2.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_2.png rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_14.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_20.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_14.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_20.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_14.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_20.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_15.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_21.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_15.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_21.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_15.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_21.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_16.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_22.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_16.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_22.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_16.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_22.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_17.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_23.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_17.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_23.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_17.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_23.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_18.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_24.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_18.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_24.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_18.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_24.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_19.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_25.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_19.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_25.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_19.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_25.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_20.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_26.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_20.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_26.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_20.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_26.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_21.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_27.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_21.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_27.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_21.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_27.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_22.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_28.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_22.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_28.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_22.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_28.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_23.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_29.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_23.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_29.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_23.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_29.png} (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_3.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_3.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_3.png rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_24.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_30.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_24.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_30.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_24.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_30.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_25.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_31.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_25.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_31.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_25.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_31.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_26.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_32.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_26.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_32.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_26.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_32.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_27.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_33.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_27.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_33.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_27.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_33.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_28.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_34.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_28.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_34.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_28.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_34.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_29.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_35.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_29.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_35.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_29.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_35.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_30.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_36.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_30.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_36.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_30.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_36.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_31.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_37.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_31.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_37.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_31.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_37.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_32.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_38.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_32.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_38.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_32.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_38.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_33.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_39.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_33.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_39.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_33.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_39.png} (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_4.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_4.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_4.png rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_34.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_40.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_34.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_40.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_34.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_40.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_35.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_41.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_35.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_41.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_35.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_41.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_36.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_42.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_36.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_42.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_36.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_42.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_37.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_43.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_37.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_43.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_37.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_43.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_38.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_44.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_38.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_44.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_38.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_44.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_39.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_45.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_39.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_45.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_39.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_45.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_40.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_46.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_40.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_46.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_40.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_46.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_41.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_47.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_41.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_47.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_41.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_47.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_42.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_48.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_42.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_48.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_42.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_48.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_43.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_49.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_43.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_49.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_43.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_49.png} (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_5.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_5.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_5.png rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_44.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_50.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_44.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_50.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_44.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_50.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_45.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_51.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_45.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_51.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_45.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_51.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_46.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_52.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_46.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_52.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_46.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_52.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_47.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_53.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_47.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_53.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_47.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_53.png} (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_54.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_54.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_54.png rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_48.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_55.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_48.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_55.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_48.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_55.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_49.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_56.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_49.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_56.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_49.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_56.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_50.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_57.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_50.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_57.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_50.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_57.png} (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_58.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_58.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_58.png rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_51.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_59.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_51.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_59.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_51.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_59.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_1.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_6.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_1.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_6.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_1.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_6.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_52.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_60.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_52.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_60.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_52.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_60.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_53.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_61.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_53.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_61.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_53.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_61.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_54.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_62.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_54.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_62.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_54.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_62.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_55.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_63.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_55.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_63.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_55.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_63.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_56.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_64.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_56.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_64.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_56.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_64.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_57.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_65.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_57.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_65.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_57.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_65.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_58.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_66.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_58.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_66.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_58.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_66.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_59.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_67.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_59.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_67.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_59.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_67.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_60.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_68.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_60.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_68.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_60.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_68.png} (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_7.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_7.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_7.png rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_2.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_8.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_2.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_8.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_2.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_8.png} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_3.map => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_9.map} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_3.md5 => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_9.md5} (100%) rename lib/{IRremoteESP8266-2.7.10/docs/doxygen/html/inherit_graph_3.png => IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_9.png} (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/inherits.html (73%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Airwell_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Airwell_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Airwell_8h_source.html (98%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Aiwa_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Amcor_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Amcor_8h.html (54%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Amcor_8h_source.html (56%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Argo_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Argo_8h.html (61%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Argo_8h_source.html (62%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Carrier_8cpp.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__Carrier_8h.html rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Carrier_8h_source.html (55%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Coolix_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Coolix_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Coolix_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Corona_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Corona_8h.html (57%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Corona_8h_source.html (56%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Daikin_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Daikin_8h.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Daikin_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Delonghi_8cpp.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__Delonghi_8h.html rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Delonghi_8h_source.html (51%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Denon_8cpp.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Dish_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Doshisha_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Electra_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Electra_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Electra_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Epson_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Fujitsu_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Fujitsu_8h.html (79%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Fujitsu_8h_source.html (69%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__GICable_8cpp.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__GlobalCache_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Goodweather_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Goodweather_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Goodweather_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Gree_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Gree_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Gree_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Haier_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Haier_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Haier_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Hitachi_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Hitachi_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Hitachi_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Inax_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__JVC_8cpp.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Kelvinator_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Kelvinator_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Kelvinator_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__LG_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__LG_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__LG_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Lasertag_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Lego_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Lutron_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__MWM_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Magiquest_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Magiquest_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Magiquest_8h_source.html (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Metz_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Midea_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Midea_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Midea_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__MitsubishiHeavy_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__MitsubishiHeavy_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__MitsubishiHeavy_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Mitsubishi_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Mitsubishi_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Mitsubishi_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Multibrackets_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__NEC_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__NEC_8h.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__NEC_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Neoclima_8cpp.html (95%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Neoclima_8h.html (84%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Neoclima_8h_source.html (72%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Nikai_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Panasonic_8cpp.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Panasonic_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Panasonic_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Pioneer_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Pronto_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__RC5__RC6_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__RCMM_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Samsung_8cpp.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Samsung_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Samsung_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Sanyo_8cpp.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Sanyo_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Sanyo_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Sharp_8cpp.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Sharp_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Sharp_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Sherwood_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Sony_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Symphony_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Tcl_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Tcl_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Tcl_8h_source.html (99%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__Technibel_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__Technibel_8h.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__Technibel_8h_source.html rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Teco_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Teco_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Teco_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Toshiba_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Toshiba_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Toshiba_8h_source.html (99%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__Transcold_8cpp.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__Transcold_8h.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__Transcold_8h_source.html rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Trotec_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Trotec_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Trotec_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Vestel_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Vestel_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Vestel_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Voltas_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Voltas_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Voltas_8h_source.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Whirlpool_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Whirlpool_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Whirlpool_8h_source.html (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Whynter_8cpp.html (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/ir__Zepeal_8cpp.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/it-IT_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/it-IT_8h_source.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/jquery.js (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/md_src_locale_README.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/menu.js (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/menudata.js (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/namespaceIRAcUtils.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/namespaceirutils.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/namespacemembers.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/namespacemembers_enum.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/namespacemembers_func.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/namespaces.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/namespacestdAc.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/nav_f.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/nav_g.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/nav_h.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/open.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/pages.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_0.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_0.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_1.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_1.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_10.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_10.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_11.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_11.js (53%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_12.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_12.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_13.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_13.js (66%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_14.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_14.js (67%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_15.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_15.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_16.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_16.js (74%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_17.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_17.js (57%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_18.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_18.js (73%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_19.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_19.js (54%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_1a.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_1a.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_1b.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_1b.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_2.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_2.js (62%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_3.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_3.js (67%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_4.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_4.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_5.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_5.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_6.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_6.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_7.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_7.js (66%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_8.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_8.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_9.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_9.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_a.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_a.js (60%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_b.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_b.js (52%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_c.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_c.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_d.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_d.js (50%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_e.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_e.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_f.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/all_f.js (55%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/classes_0.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_0.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/classes_1.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_1.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/classes_2.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_2.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/classes_3.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_3.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/classes_4.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_4.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/classes_5.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_5.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/classes_6.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_6.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/classes_7.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_7.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/classes_8.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_8.js create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_9.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_9.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/close.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_0.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_0.js (58%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_1.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_1.js (53%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_2.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_2.js (59%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_3.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_3.js (61%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_4.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_4.js (58%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_5.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enums_5.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_6.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_6.js (62%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_7.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enums_7.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_8.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_8.js (60%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_9.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enums_9.js (62%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_0.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_0.js (55%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_1.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_1.js (60%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_10.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enumvalues_10.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_11.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_11.js (60%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_12.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_12.js (60%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_13.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_13.js (61%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_14.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_14.js (54%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_15.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_15.js (62%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_2.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_2.js (58%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_3.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_3.js (60%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_4.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_4.js (64%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_5.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_5.js (59%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_6.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_6.js (61%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_7.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_7.js (61%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_8.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_8.js (60%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_9.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_9.js (62%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_a.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_a.js (57%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_b.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_b.js (60%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_c.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_c.js (58%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_d.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_d.js (60%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_e.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_e.js (57%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_f.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/enumvalues_f.js (58%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/files_0.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_0.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/files_1.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_1.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/files_2.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_2.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/files_3.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_3.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/files_4.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_4.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/files_5.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_5.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_0.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_0.js (50%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_1.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_1.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_10.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_10.js (68%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_11.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_11.js (69%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_12.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_12.js (73%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_13.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_13.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_14.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_14.js (79%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_15.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_15.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_16.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_16.js (82%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_17.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_17.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_2.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_2.js (74%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_3.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_3.js (79%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_4.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_4.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_5.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_5.js (52%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_6.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_6.js (58%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_7.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_7.js (66%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_8.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_8.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_9.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_9.js (51%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_a.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_a.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_b.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_b.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_c.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_c.js (58%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_d.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_d.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_e.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_e.js (72%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/functions_f.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_f.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/mag_sel.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/namespaces_0.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/namespaces_0.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/namespaces_1.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/namespaces_1.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/nomatches.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/pages_0.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/pages_0.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/pages_1.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/pages_1.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/pages_2.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/pages_2.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/related_0.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/related_0.js (57%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/search.css (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/search.js (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/search_l.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/search_m.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/search_r.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/searchdata.js (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/typedefs_0.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/typedefs_0.js (53%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_0.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_0.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_1.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_1.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_10.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_10.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_11.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_11.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_12.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_12.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_13.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_13.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_14.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_14.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_15.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_15.js (62%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_16.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_16.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_17.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_17.js (55%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_2.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_2.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_3.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_3.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_4.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_4.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_5.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_5.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_6.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_6.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_7.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_7.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_8.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_8.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_9.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_9.js (52%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_a.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_a.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_b.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_b.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_c.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_c.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_d.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_d.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_e.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_e.js rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_f.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/search/variables_f.js (53%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/splitbar.png (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/structCoronaSection-members.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/structCoronaSection.html rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/structirparams__t-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/structirparams__t.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/structmatch__result__t-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/structmatch__result__t.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/structstdAc_1_1state__t-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/structstdAc_1_1state__t.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/sync_off.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/sync_on.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/tab_a.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/tab_b.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/tab_h.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/tab_s.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/tabs.css (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/todo.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/unionAirwellProtocol-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/unionAirwellProtocol.html (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/unionAmcorProtocol-members.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/unionAmcorProtocol.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/unionArgoProtocol-members.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/unionArgoProtocol.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/unionCarrierProtocol-members.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/unionCarrierProtocol.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/unionCoronaProtocol-members.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/unionCoronaProtocol.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/unionCoronaProtocol__coll__graph.map create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/unionCoronaProtocol__coll__graph.md5 create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/unionCoronaProtocol__coll__graph.png create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/unionDelonghiProtocol-members.html create mode 100644 lib/IRremoteESP8266-2.7.11/docs/doxygen/html/unionDelonghiProtocol.html rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/unionGreeProtocol-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/unionGreeProtocol.html (84%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/unionHaierProtocol-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/unionHaierProtocol.html (85%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/unionHaierYRW02Protocol-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/unionHaierYRW02Protocol.html (85%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/unionMideaProtocol-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/unionMideaProtocol.html (86%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/unionVoltasProtocol-members.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/unionVoltasProtocol.html (84%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/unionmagiquest-members.html (98%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/unionmagiquest.html (90%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/zh-CN_8h.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen/html/zh-CN_8h_source.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/docs/doxygen_index.md (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/BlynkIrRemote/BlynkIrRemote.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/BlynkIrRemote/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/CommonAcControl/CommonAcControl.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/CommonAcControl/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/ControlSamsungAC/ControlSamsungAC.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/ControlSamsungAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/DumbIRRepeater/DumbIRRepeater.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/DumbIRRepeater/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRGCSendDemo/IRGCSendDemo.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRGCSendDemo/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRGCTCPServer/IRGCTCPServer.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRGCTCPServer/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRMQTTServer/IRMQTTServer.h (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRMQTTServer/IRMQTTServer.ino (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRMQTTServer/platformio.ini (92%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRServer/IRServer.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRServer/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRrecvDemo/IRrecvDemo.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRrecvDemo/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRrecvDump/IRrecvDump.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRrecvDump/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRrecvDumpV2/IRrecvDumpV2.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRrecvDumpV2/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRrecvDumpV3/BaseOTA.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRrecvDumpV3/IRrecvDumpV3.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRrecvDumpV3/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRsendDemo/IRsendDemo.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRsendDemo/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRsendProntoDemo/IRsendProntoDemo.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/IRsendProntoDemo/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/JVCPanasonicSendDemo/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/LGACSend/LGACSend.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/LGACSend/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/SmartIRRepeater/SmartIRRepeater.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/SmartIRRepeater/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnArgoAC/TurnOnArgoAC.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnArgoAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnDaikinAC/TurnOnDaikinAC.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnDaikinAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnFujitsuAC/TurnOnFujitsuAC.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnFujitsuAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnGreeAC/TurnOnGreeAC.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnGreeAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnKelvinatorAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnMitsubishiAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnMitsubishiHeavyAc/TurnOnMitsubishiHeavyAc.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnMitsubishiHeavyAc/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnPanasonicAC/TurnOnPanasonicAC.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnPanasonicAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnToshibaAC/TurnOnToshibaAC.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnToshibaAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnTrotecAC/TurnOnTrotecAC.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/TurnOnTrotecAC/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/README.md (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/Web-AC-control.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/Web-AC-control.ino (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/data/favicon.ico (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/data/level_1_off.svg (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/data/level_1_on.svg (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/data/level_2_off.svg (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/data/level_2_on.svg (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/data/level_3_off.svg (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/data/level_3_on.svg (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/data/level_4_off.svg (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/data/level_4_on.svg (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/data/ui.html (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/data/ui.js (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/platformio.ini (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/examples/Web-AC-control/printscreen.png (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/CPPLINT.cfg (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/IRac.cpp (95%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/IRac.h (95%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/IRrecv.cpp (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/IRrecv.h (98%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/IRremoteESP8266.h (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/IRsend.cpp (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/IRsend.h (98%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/IRtext.cpp (98%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/IRtext.h (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/IRtimer.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/IRtimer.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/IRutils.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/IRutils.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/i18n.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Airwell.cpp (95%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Airwell.h (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Aiwa.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Amcor.cpp (80%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Amcor.h (66%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Argo.cpp (79%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Argo.h (68%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Carrier.cpp (85%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Carrier.h (63%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Coolix.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Coolix.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Corona.cpp (77%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Corona.h (68%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Daikin.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Daikin.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Delonghi.cpp (74%) create mode 100644 lib/IRremoteESP8266-2.7.11/src/ir_Delonghi.h rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Denon.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Dish.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Doshisha.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Electra.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Electra.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Epson.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Fujitsu.cpp (79%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Fujitsu.h (77%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_GICable.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_GlobalCache.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Goodweather.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Goodweather.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Gree.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Gree.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Haier.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Haier.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Hitachi.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Hitachi.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Inax.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_JVC.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Kelvinator.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Kelvinator.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_LG.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_LG.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Lasertag.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Lego.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Lutron.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_MWM.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Magiquest.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Magiquest.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Metz.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Midea.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Midea.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Mitsubishi.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Mitsubishi.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_MitsubishiHeavy.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_MitsubishiHeavy.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Multibrackets.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_NEC.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_NEC.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Neoclima.cpp (84%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Neoclima.h (69%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Nikai.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Panasonic.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Panasonic.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Pioneer.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Pronto.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_RC5_RC6.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_RCMM.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Samsung.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Samsung.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Sanyo.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Sanyo.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Sharp.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Sharp.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Sherwood.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Sony.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Symphony.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Tcl.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Tcl.h (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/src/ir_Technibel.cpp create mode 100644 lib/IRremoteESP8266-2.7.11/src/ir_Technibel.h rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Teco.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Teco.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Toshiba.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Toshiba.h (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/src/ir_Transcold.cpp create mode 100644 lib/IRremoteESP8266-2.7.11/src/ir_Transcold.h rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Trotec.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Trotec.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Vestel.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Vestel.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Voltas.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Voltas.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Whirlpool.cpp (88%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Whirlpool.h (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Whynter.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/ir_Zepeal.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/locale/README.md (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/locale/de-CH.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/locale/de-DE.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/locale/defaults.h (98%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/locale/en-AU.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/locale/en-IE.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/locale/en-UK.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/locale/en-US.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/locale/es-ES.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/locale/fr-FR.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/locale/it-IT.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/src/locale/zh-CN.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/IRac_test.cpp (94%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/IRrecv_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/IRrecv_test.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/IRsend_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/IRsend_test.h (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/IRutils_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/Makefile (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Airwell_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Aiwa_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Amcor_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Argo_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Carrier_test.cpp (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Coolix_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Corona_test.cpp (99%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Daikin_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Delonghi_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Denon_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Dish_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Doshisha_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Electra_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Epson_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Fujitsu_test.cpp (86%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_GICable_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_GlobalCache_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Goodweather_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Gree_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Haier_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Hitachi_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Inax_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_JVC_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Kelvinator_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_LG_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Lasertag_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Lego_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Lutron_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_MWM_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Magiquest_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Metz_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Midea_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_MitsubishiHeavy_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Mitsubishi_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Multibrackets_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_NEC_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Neoclima_test.cpp (77%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Nikai_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Panasonic_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Pioneer_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Pronto_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_RC5_RC6_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_RCMM_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Samsung_test.cpp (96%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Sanyo_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Sharp_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Sherwood_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Sony_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Symphony_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Tcl_test.cpp (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/test/ir_Technibel_test.cpp rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Teco_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Toshiba_test.cpp (100%) create mode 100644 lib/IRremoteESP8266-2.7.11/test/ir_Transcold_test.cpp rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Trotec_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Vestel_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Voltas_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Whirlpool_test.cpp (92%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Whynter_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/test/ir_Zepeal_test.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/tools/Makefile (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/tools/RawToGlobalCache.sh (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/tools/auto_analyse_raw_data.py (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/tools/auto_analyse_raw_data_test.py (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/tools/gc_decode.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/tools/generate_irtext_h.sh (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/tools/mkkeywords (97%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/tools/mode2_decode.cpp (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/tools/raw_to_pronto_code.py (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/tools/raw_to_pronto_code_test.py (100%) rename lib/{IRremoteESP8266-2.7.10 => IRremoteESP8266-2.7.11}/tools/scrape_supported_devices.py (100%) diff --git a/lib/IRremoteESP8266-2.7.10/.gitignore b/lib/IRremoteESP8266-2.7.10/.gitignore deleted file mode 100644 index c02171953..000000000 --- a/lib/IRremoteESP8266-2.7.10/.gitignore +++ /dev/null @@ -1,53 +0,0 @@ -#----------------------------------------# -# .gitingore for IRremoteESP8266 library # -#----------------------------------------# - -### Files to ignore. - -## Editors -# vi/vim -**/*.swp - -# vscode -.vscode - -## Build environments -# Platformio -**/.pio/ -**/.pioenvs/ -**/.piolibdeps/ -**/.clang_complete -**/.gcc-flags.json -examples/**/lib -examples/**/.travis.yml -examples/**/.gitignore -lib/readme.txt -lib/googletest/**/* - -# GCC pre-compiled headers. -**/*.gch - -# Python compiled files -**/*.pyc - -# Unit Test builds -test/*.o -test/*.a -test/*_test - -# Tools builds -tools/*.o -tools/*.a -tools/gc_decode -tools/mode2_decode - -.pioenvs -.piolibdeps -.clang_complete -.gcc-flags.json - -#Cygwin builds -*.exe - -# Mac extended attributes -.DS_Store diff --git a/lib/IRremoteESP8266-2.7.10/.gitmodules b/lib/IRremoteESP8266-2.7.10/.gitmodules deleted file mode 100644 index c28fe0509..000000000 --- a/lib/IRremoteESP8266-2.7.10/.gitmodules +++ /dev/null @@ -1,4 +0,0 @@ -[submodule "lib/googletest"] - path = lib/googletest - url = https://github.com/google/googletest.git - branch = v1.8.x diff --git a/lib/IRremoteESP8266-2.7.10/.style.yapf b/lib/IRremoteESP8266-2.7.10/.style.yapf deleted file mode 100644 index 65fa0ee33..000000000 --- a/lib/IRremoteESP8266-2.7.10/.style.yapf +++ /dev/null @@ -1,3 +0,0 @@ -[style] -based_on_style: google -indent_width: 2 diff --git a/lib/IRremoteESP8266-2.7.10/.travis.yml b/lib/IRremoteESP8266-2.7.10/.travis.yml deleted file mode 100644 index 704004f68..000000000 --- a/lib/IRremoteESP8266-2.7.10/.travis.yml +++ /dev/null @@ -1,69 +0,0 @@ -language: c -addons: - apt: - packages: - - jq - - doxygen - - graphviz - - python3 - - python3-pip - - pylint3 - - python3-setuptools -env: - - PLATFORMIO_BUILD_CACHE_DIR="../../.pio/buildcache" - IRRECVDUMP_RE=".*IRrecvDumpV.*" - IRMQTTSERVER_RE=".*IRMQTTServer.*" - MAKEFLAGS="-j 2" -cache: - directories: - - "~/.platformio" -before_install: - - wget https://raw.githubusercontent.com/google/styleguide/gh-pages/cpplint/cpplint.py - - python --version && pip --version - - python3 --version && pip3 --version - - sudo pip3 install -U platformio - - pio update -script: echo Running checks -notifications: - email: - on_success: change - on_failure: change -jobs: - include: - - name: "Compile the trivial examples" - script: - # Check that everything compiles but some heavy tasks e.g. IRMQTTServer & IRrecvDumpV2+ - # i.e. We are splitting the work load in to parallel tasks. - - find . -regextype egrep -name platformio.ini -type f \! -regex "${IRRECVDUMP_RE}|${IRMQTTSERVER_RE}" | sed 's,/platformio.ini$,,' | xargs --verbose -n 1 pio run --jobs 2 --project-dir - - name: "Compile the IRrecvDumpV2+ examples" - script: - # Check that IRrecvDumpV2+ compiles. - # i.e. We are splitting the work load in to parallel tasks. - - find . -regextype egrep -name platformio.ini -type f -regex "${IRRECVDUMP_RE}" | sed 's,/platformio.ini$,,' | xargs --verbose -n 1 pio run --jobs 2 --project-dir - - name: "Unit tests, Linter, Doc checks, & Compile IRMQTTServer" - script: - # Run all the Tests & check the code linters have no issues, and that - # IRMQTTServer compiles. - # i.e. We are splitting the work load in to parallel tasks. - # Check the version numbers match. - - LIB_VERSION=$(egrep "^#define\s+_IRREMOTEESP8266_VERSION_\s+" src/IRremoteESP8266.h | cut -d\" -f2) - - test ${LIB_VERSION} == "$(jq -r .version library.json)" - - grep -q "^version=${LIB_VERSION}$" library.properties - # Check the tools programs compile. - - (cd tools; make all) - # Check for lint issues. - - shopt -s nullglob - - python cpplint.py --extensions=c,cc,cpp,ino --headers=h,hpp {src,src/locale,test,tools}/*.{h,c,cc,cpp,hpp,ino} examples/*/*.{h,c,cc,cpp,hpp,ino} - - pylint3 -d F0001 {src,test,tools}/*.py - - shopt -u nullglob - # Build and run the unit tests. - - (cd test; make run) - - (cd tools; make run_tests) - # Check that every example directory has a platformio.ini file. - - (status=0; for dir in examples/*; do if [[ ! -f "${dir}/platformio.ini" ]]; then echo "${dir} has no 'platform.ini' file!"; status=1; fi; done; exit ${status}) - # Check that doxygen completes without errors or warnings. - - (DOXYGEN_OUTPUT=$(doxygen 2>&1); if [[ $? -ne 0 || -n "${DOXYGEN_OUTPUT}" ]]; then echo "${DOXYGEN_OUTPUT}"; exit 1; fi) - # Check that all files has supported sections. - - (SUPPORTED_OUTPUT=$(python3 tools/scrape_supported_devices.py --noout --alert 2>&1); if [[ $? -ne 0 || -n "${SUPPORTED_OUTPUT}" ]]; then echo "${SUPPORTED_OUTPUT}"; exit 1; fi) - # Check that IRMQTTServer compiles. - - find . -regextype egrep -name platformio.ini -type f -regex "${IRMQTTSERVER_RE}" | sed 's,/platformio.ini$,,' | xargs --verbose -n 1 pio run --jobs 2 --project-dir diff --git a/lib/IRremoteESP8266-2.7.10/CPPLINT.cfg b/lib/IRremoteESP8266-2.7.10/CPPLINT.cfg deleted file mode 100644 index 181f5204d..000000000 --- a/lib/IRremoteESP8266-2.7.10/CPPLINT.cfg +++ /dev/null @@ -1,3 +0,0 @@ -set noparent -root=src -linelength=80 diff --git a/lib/IRremoteESP8266-2.7.10/Doxyfile b/lib/IRremoteESP8266-2.7.10/Doxyfile deleted file mode 100644 index 224c07315..000000000 --- a/lib/IRremoteESP8266-2.7.10/Doxyfile +++ /dev/null @@ -1,15 +0,0 @@ -PROJECT_NAME = "IRremoteESP8266" -OUTPUT_DIRECTORY = docs/doxygen -INPUT = src -INPUT += docs/doxygen_index.md -RECURSIVE = YES -EXCLUDE = examples -MULTILINE_CPP_IS_BRIEF = YES -TAB_SIZE = 2 -EXTRACT_ALL = YES -EXTRACT_PRIVATE = YES -EXTRACT_LOCAL_CLASSES = NO -GENERATE_LATEX = NO -ENABLE_PREPROCESSING = NO -QUIET = YES -WARN_NO_PARAMDOC = YES diff --git a/lib/IRremoteESP8266-2.7.10/LICENSE.txt b/lib/IRremoteESP8266-2.7.10/LICENSE.txt deleted file mode 100644 index 77cec6dd1..000000000 --- a/lib/IRremoteESP8266-2.7.10/LICENSE.txt +++ /dev/null @@ -1,458 +0,0 @@ - - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - diff --git a/lib/IRremoteESP8266-2.7.10/README.md b/lib/IRremoteESP8266-2.7.10/README.md deleted file mode 100644 index 0640c53ff..000000000 --- a/lib/IRremoteESP8266-2.7.10/README.md +++ /dev/null @@ -1,88 +0,0 @@ -# IRremoteESP8266 Library - -[![Build Status](https://travis-ci.org/crankyoldgit/IRremoteESP8266.svg?branch=master)](https://travis-ci.org/crankyoldgit/IRremoteESP8266) -[![arduino-library-badge](https://www.ardu-badge.com/badge/IRremoteESP8266.svg?)](https://www.ardu-badge.com/IRremoteESP8266) -[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/crankyoldgit/IRremoteESP8266.svg)](http://isitmaintained.com/project/crankyoldgit/IRremoteESP8266 "Average time to resolve an issue") -[![Percentage of issues still open](http://isitmaintained.com/badge/open/crankyoldgit/IRremoteESP8266.svg)](http://isitmaintained.com/project/crankyoldgit/IRremoteESP8266 "Percentage of issues still open") -[![GitLicense](https://gitlicense.com/badge/crankyoldgit/IRremoteESP8266)](https://gitlicense.com/license/crankyoldgit/IRremoteESP8266) - -This library enables you to **send _and_ receive** infra-red signals on an [ESP8266](https://github.com/esp8266/Arduino) or an -[ESP32](https://github.com/espressif/arduino-esp32) using the [Arduino framework](https://www.arduino.cc/) using common 940nm IR LEDs and common IR receiver modules. e.g. TSOP{17,22,24,36,38,44,48}* demodulators etc. - -## v2.7.10 Now Available -Version 2.7.10 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes. - -#### Upgrading from pre-v2.0 -Usage of the library has been slightly changed in v2.0. You will need to change your usage to work with v2.0 and beyond. You can read more about the changes required on our [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page. - -#### Upgrading from pre-v2.5 -The library has changed from using constants declared as `#define` to -[const](https://google.github.io/styleguide/cppguide.html#Constant_Names) with -the appropriate naming per the -[C++ style guide](https://google.github.io/styleguide/cppguide.html). -This may potentially cause old programs to not compile. -The most likely externally used `#define`s have been _aliased_ for limited -backward compatibility for projects using the old style. Going forward, only the -new `kConstantName` style will be supported for new protocol additions. - -In the unlikely case, it does break your code, then you may have been referencing -something you likely should not have. You should be able to quickly determine -the new name from the old. e.g. `CONSTANT_NAME` to `kConstantName`. -Use common sense or examining the library's code if this does affect code. - -## Supported Protocols -You can find the details of which protocols & devices are supported -[here](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/SupportedProtocols.md). - -## Troubleshooting -Before reporting an issue or asking for help, please try to follow our [Troubleshooting Guide](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Troubleshooting-Guide) first. - -## Frequently Asked Questions -Some common answers to common questions and problems are on our [F.A.Q. wiki page](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Frequently-Asked-Questions). - -## Library API Documentation -This library uses [Doxygen](https://www.doxygen.nl/index.html) to [automatically document](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) the [library's](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) [API](https://en.wikipedia.org/wiki/Application_programming_interface). -You can find it [here](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). - -## Installation -##### Official releases via the Arduino IDE v1.8+ (Windows & Linux) -1. Click the _"Sketch"_ -> _"Include Library"_ -> _"Manage Libraries..."_ Menu items. -1. Enter `IRremoteESP8266` into the _"Filter your search..."_ top right search box. -1. Click on the IRremoteESP8266 result of the search. -1. Select the version you wish to install and click _"Install"_. - -##### Manual Installation for Windows -1. Click on _"Clone or Download"_ button, then _"[Download ZIP](https://github.com/crankyoldgit/IRremoteESP8266/archive->master.zip)"_ on the page. -1. Extract the contents of the downloaded zip file. -1. Rename the extracted folder to _"IRremoteESP8266"_. -1. Move this folder to your libraries directory. (under windows: `C:\Users\YOURNAME\Documents\Arduino\libraries\`) -1. Restart your Arduino IDE. -1. Check out the examples. - -##### Using Git to install the library ( Linux ) -``` -cd ~/Arduino/libraries -git clone https://github.com/crankyoldgit/IRremoteESP8266.git -``` -###### To update to the latest version of the library -``` -cd ~/Arduino/libraries/IRremoteESP8266 && git pull -``` - -## Contributing -If you want to [contribute](.github/CONTRIBUTING.md#how-can-i-contribute) to this project, consider: -- [Reporting](.github/CONTRIBUTING.md#reporting-bugs) bugs and errors -- Ask for enhancements -- Improve our documentation -- [Creating issues](.github/CONTRIBUTING.md#reporting-bugs) and [pull requests](.github/CONTRIBUTING.md#pull-requests) -- Tell other people about this library - -## Contributors -Available [here](.github/Contributors.md) - -## Library History -This library was originally based on Ken Shirriff's work (https://github.com/shirriff/Arduino-IRremote/) - -[Mark Szabo](https://github.com/crankyoldgit/IRremoteESP8266) has updated the IRsend class to work on ESP8266 and [Sebastien Warin](https://github.com/sebastienwarin/IRremoteESP8266) the receiving & decoding part (IRrecv class). - -As of v2.0, the library was almost entirely re-written with the ESP8266's resources in mind. diff --git a/lib/IRremoteESP8266-2.7.10/README_fr.md b/lib/IRremoteESP8266-2.7.10/README_fr.md deleted file mode 100644 index 3c26ff76f..000000000 --- a/lib/IRremoteESP8266-2.7.10/README_fr.md +++ /dev/null @@ -1,90 +0,0 @@ -# IRremoteESP8266 Library - -[![Build Status](https://travis-ci.org/crankyoldgit/IRremoteESP8266.svg?branch=master)](https://travis-ci.org/crankyoldgit/IRremoteESP8266) -[![arduino-library-badge](https://www.ardu-badge.com/badge/IRremoteESP8266.svg?)](https://www.ardu-badge.com/IRremoteESP8266) -[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/crankyoldgit/IRremoteESP8266.svg)](http://isitmaintained.com/project/crankyoldgit/IRremoteESP8266 "Average time to resolve an issue") -[![Percentage of issues still open](http://isitmaintained.com/badge/open/crankyoldgit/IRremoteESP8266.svg)](http://isitmaintained.com/project/crankyoldgit/IRremoteESP8266 "Percentage of issues still open") -[![GitLicense](https://gitlicense.com/badge/crankyoldgit/IRremoteESP8266)](https://gitlicense.com/license/crankyoldgit/IRremoteESP8266) - -Cette librairie vous permetra de **recevoir et d'envoyer des signaux** infrarouge sur le protocole [ESP8266](https://github.com/esp8266/Arduino) ou sur le protocole -[ESP32](https://github.com/espressif/arduino-esp32) en utilisant le [Arduino framework](https://www.arduino.cc/) qui utilise la norme 940nm IR LEDs et le module basique de reception d'onde IR. Exemple : TSOP{17,22,24,36,38,44,48}* modules etc. - -## v2.7.10 disponible -Version 2.7.10 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants. - -#### mise à jour depuis pre-v2.0 -L'utilisation de la librairie à un peu changer depuis la version in v2.0. Si vous voulez l'utiliser vous devrez changer votre utilisation aussi. Vous pouvez vous renseigner sur les précondition d'utilisation ici : [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page. - -#### Mise à jour depuis pre-v2.5 -La librairie à changer, elle n'utilise plus les constantes déclarées comme `#define` mais comme : -[const](https://google.github.io/styleguide/cppguide.html#Constant_Names) avec le nom approprié par le langage -[C++ style guide](https://google.github.io/styleguide/cppguide.html). -Il se peut que d'ancien programme ne compile pas. -Le cas le plus utilisé de `#define`s à été remplacé par _aliased_ pour limiter -la compatibilité de revenir en arrière pour les vieux projet. En revenant en arrière seulement la -nouvelle `kConstantName` style est supporté. - -Dans le cas peu probable, votre code serait cassé, alors vous avez peut-être fait référence à -quelque chose que vous ne devriez probablement pas avoir.Vous devez être capable de determiner le nouveau nom -qui remplacera l'ancien. exemple : `CONSTANT_NAME` par `kConstantName`. -Si vous avez un problème examinez le code pour trouver le problème. - -## Protocoles supportés -Vous pouvez trouver le détails des protocoles et machines supportés -[here](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/SupportedProtocols.md). - -## Dépannage -Avant de reporter un probème ou de demander de l'aide, essayez de suivre notre [guide de dépannage](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Troubleshooting-Guide) first. - -## Questions fréquentes -Les questions les plus fréquentes sont ici, avec des réponses [F.A.Q. wiki page](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Frequently-Asked-Questions). - -## Documentation API de la bibliothèque -Cette bibliothèque utilise [Doxygen](https://www.doxygen.nl/index.html) pour [documenter automatiquement](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) [l'API](https://en.wikipedia.org/wiki/Application_programming_interface) de la [bibliothèque](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). Vous pouvez le trouver [ici](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). - -## Installation -##### Officiel releases avec l'Arduino IDE v1.8+ (Windows & Linux) -1. Cliquez sur _"Sketch"_ -> _"Include Library"_ -> _"Manage Libraries..."_ Menu items. -1. Entrez `IRremoteESP8266` dans le _"Filter your search..."_ barre de recherche en haut à droite. -1. Cliquez sur le IRremoteESP8266 pour avoir les résultats de la recherche. -1. Selectionnez la version que vous voulez installer et cliquez sur _"Install"_. - -## Library API Documentation -This library uses [Doxygen](https://www.doxygen.nl/index.html) to [automatically document](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) the [library's](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) [API](https://en.wikipedia.org/wiki/Application_programming_interface). -You can find it [here](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). - -##### Installation manuelle pour Windows -1. cliquez le boutton sur _"Clone or Download"_ , et _"[Download ZIP](https://github.com/crankyoldgit/IRremoteESP8266/archive->master.zip)"_ on the page. -1. Extraire l'archive. -1. renommez le fichier par _"IRremoteESP8266"_. -1. déplacer le fichier dans votre fichier de bibliothèques. (Pour windows : `C:\Users\VOTRE_NOM\Documents\Arduino\libraries\`) -1. Redemarrez arduino IDE. -1. Regardez les exemples. - -##### En utilisant GIT ( Linux ) -``` -cd ~/Arduino/libraries -git clone https://github.com/crankyoldgit/IRremoteESP8266.git -``` -###### Pour se mettre à jour -``` -cd ~/Arduino/libraries/IRremoteESP8266 && git pull -``` - -## Contribution -Si vous voulez [contribuer](.github/CONTRIBUTING.md#how-can-i-contribute) au projet, pour les erreurs: -- [Reporting](.github/CONTRIBUTING.md#reporting-bugs) bug et erreurs -- Demander des améliorations -- Améliorer notre documentation -- [Création d'issues](.github/CONTRIBUTING.md#reporting-bugs) et [pull requests](.github/CONTRIBUTING.md#pull-requests) -- Parlez de cettre librairie à d'autres personnes - -## Contributeurs -disponible [ici](.github/Contributors.md) - -## Historique de la bibliothèque -Elle est basée sur le travail de Shirriff (https://github.com/shirriff/Arduino-IRremote/) - -[Mark Szabo](https://github.com/crankyoldgit/IRremoteESP8266) à mis a jour la IRsend class pour qu'elle soit fonctionnelle sur ESP8266 et [Sebastien Warin](https://github.com/sebastienwarin/IRremoteESP8266) s'est occupé de la partie réception et décodage (IRrecv class). - -Comme pour la version 2.0, la bibliothèque à été completement réécrite avec les ressources sur ESP8266. diff --git a/lib/IRremoteESP8266-2.7.10/ReleaseNotes.md b/lib/IRremoteESP8266-2.7.10/ReleaseNotes.md deleted file mode 100644 index 3e62465e8..000000000 --- a/lib/IRremoteESP8266-2.7.10/ReleaseNotes.md +++ /dev/null @@ -1,836 +0,0 @@ -# Release Notes - -## _v2.7.10 (20200831)_ - -**[BREAKING CHANGES]** -- move SPIFFS to LittleFS for ESP8266 (#1182 #1226) -- Daikin176: Change & increase operating mode values. (#1233 #1235) - -**[Bug Fixes]** -- TOSHIBA_AC: not turning off when using `IRac` class. (#1250 #1251) -- Haier: change position of Fan speed bits. (#1246 #1247) - -**[Features]** -- Voltas: Add detailed support for Voltas A/Cs (#1238 #1248) -- Add support for Metz protocol. (#1241 #1242) -- Basic support for Voltas A/C protocol (#1238 #1243) -- Add low level bit formatting sanity checks. (#1232) - -**[Misc]** -- Rewrite Airwell by using bit fields (#1254) -- Rewrite Haier YRW02 using bit fields (#1253) -- rewrite Haier HSU07-HEA03 (#1246 #1247) -- rewrite ir_Gree & ir_Midea by using bit field (#1240) -- Incorrect usage of `assert()` (#1244 #1245 #1232) -- rewrite Gree (#1210) - - -## _v2.7.9 (20200730)_ - -**[Bug Fixes]** -- Fix mistake in `IRLGAc::convertFan()`. (#1214 #1215) - -**[Features]** -- Add Sanyo A/C (72 bit) protocol with detailed support. (#1211 #1218) -- Added modification to Midea unit to support Danby DAC AC units. (#1213) -- ToshibaAc: Rework to support Carrier models and add more settings. (#1205 #1212) -- Add detailed support for Airwell A/C protocol. (#1202 #1204) - -**[Misc]** -- Pioneer: Update timings based on user collected data. (#1220 #1222) -- Samsung36: Adjust timings & update unit tests. (#1220 #1221) -- Consolidate common code: Inverted byte pairs (#1219) -- Remove duplicate code from `IRToshibaAC::calcChecksum()` (#1207) -- Update missing/incorrect doxygen comments (#1203) - - -## _v2.7.8 (20200622)_ - -**[BREAKING CHANGES]** -- Fix Manchester code handling; Increase Airwell to `34` bits. (#1200) - -**[Bug Fixes]** -- Carrier40: Use correct gap value. (#1193) - -**[Features]** -- CarrierAc64: Add detailed support. (#1133) -- Add experimental support for Hitachi A/C 344 bit protocol (#1139) -- Automatic & full library code/API documentation via Doxygen (#1150 #1154 #1155 #1156 #1158 #1165 #1167 #1169 #1180 #1184 #1189 #1191 #1194 #1195 #1197 #1198) -- Hitachi344: Add detailed support and change bit ordering. (#1147) -- Add Corona AC Protocol (#1152) -- Hitachi344: Add Swing(H) and improve Swing(V) (#1148) -- Update auto_analyse_raw_data.py with better code comment sections (#1164) -- Add support for Midea24 protocol. (#1171) -- Add basic Zepeal protocol support (#1178) - -**[Misc]** -- scrape_supported_devices.py: avoid changes to SupportedProtocols.md (#1140) -- auto_analyze nice exit on empty rawdata input (#1141) -- Comments update + cleanup (#1143) -- Update D_STR_IRRECVDUMP_STARTUP text and comments. (#1144) -- Minor code cleanups (#1149) -- Update `README.md`'s to point to new API docs. (#1151) -- Update "Supports" sections (#1160) -- Add a `doxygen` check to CI/Travis. (#1161) -- scrape_supported_devices: warn about misplaced or legacy supports sections (#1159) -- Add Supports sections to some files (#1163 #1166) -- Fix compile error when `DEBUG` is enabled. -- Add no-output option and return code on error to scrape_supported_devices -- Travis: Add scrape_supported_devices error check -- Update auto_analyse_raw_data.py to have a default Supports: section -- Treat compiler warnings as errors. (#1174) -- Remove `calcLGChecksum()` and use new generic `sumNibbles()` (#1175) -- Suppress more potential compiler warnings. (#1179) -- Load balance travis tasks to reduce wall clock time. (#1183) -- Set PlatformIO's default baudrate to 115200 (#1188) -- Some fixes to Doshisha protocol handler -- Minor cleanups of Corona and Zepeal -- Enable Doxygen warning when the parameters for a function/method/procedure are wrong/missing. (#1196) - - -## _v2.7.7 (20200519)_ - -**[BREAKING CHANGES]** -- Fix Symphony protocol. (#1107, #1105) - * Now 12 bits and bits are inverted. All previous codes will no longer work. -- IRMQTTServer: Better handle power & mode operations for Home Assistant. (#1099, #1092) - * When `MQTT_CLIMATE_HA_MODE` is enabled (default) this will break previous operation mode resumption when power is changed. - -**[Bug Fixes]** -- Set correct return type for `.calibrate()` (#1095, #1093) - -**[Features]** -- Add basic support for Carrier 40 & 64 bit protocols. (#1125, #1112, #1127) -- Gree: Enable native support for Fahrenheit (#1124, #1121) -- Gree: Add option to control display temp source. (#1120, #1118) -- Add support for Multibrackets protocol. (#1106, #1103) -- Add RawToPronto.py tool & improve `sendPronto()` precision (#1104, #1103) -- Add support for `Doshisha` LED light protocol (#1115) -- Introduce IRrecvDumpV3 with basic OTA update support (#1111) -- Add detailed support for Delonghi A/C (#1098, #1096) -- Improved support for SharpAc. (#1094, #1091) -- Update auto_analyse to use new decode call structure. (#1102, #1097) -- Added Blynk app example (#1090) - -**[Misc]** -- update auto_analyse script to use new param documentation (#1126) -- Improve `raw_to_pronto_code.py` (#1122, #1103) -- Use pattern rules in Makefiles to reduce specific rule (#1110) -- Update list of supported Daikin models. (#1101) - - -## _v2.7.6 (20200425)_ - -**[Features]** -- IRMQTTServer: Use more i18n text. (#1086) -- Convert Protocol names to shared text. Saves ~3k of flash. (#1078) -- Add Chinese translation (zh-CN) & add utf-8 support. (#1080, #1085) - -**[Misc]** -- IRMQTTServer: Ensure MQTT_MAX_PACKET_SIZE is correctly set. (#1084) -- Add Italian locale to IRrecvDumpV2 platformio file. - - -## _v2.7.5 (20200409)_ - -**[Features]** -- Detailed support for `HITACHI_AC1` protocol. (#1056, #1061, #1072) -- update sharp to match Sharp AH-A5SAY (#1074) -- Experimental support for AIRWELL protocol. (#1069, #1070) -- SamsungAC: Add Breeze (Aka WindFree) control (#1062, #1071) -- Support for Daikin FFN-C A/C (#1064, #1065) -- Add basic support for HITACHI_AC3 protocol. (#1060, #1063) -- Add support for `SYMPHONY` 11 bit protocol. (#1057, #1058) -- IRMQTTServer: Improve Home-Assistant discovery by sending a 'device' with the discovery packet (#1055) - -**[Misc]** -- Clean up support status of various protocols. -- Add `decodeToState()` unit tests to all supported protocols (#1067, #1068) -- Add Gree AC example code. (#1066) - - -## _v2.7.4 (20200226)_ - -**[Bug Fixes]** -- IRMQTTServer: Fix bug when receiving an IR A/C message and not re-transmitting it. (#1035, #1038) -- Coolix: `setRaw()` doesn't update power state. (#1040, #1041) - -**[Features]** -- Electra: Add improved feature support. (#1033, #1051) -- Add support for Epson protocol. (#1034, #1050) -- Add options to `decode()` to aid detection. Improve NEC detection. (#1042, #1046) -- SamsungAc: Add support for Light & Ion (VirusDoctor). (#1045, #1048, #1049) -- Add Italian (it-IT) locale/language support. (#1047) (kudos @egueli) -- gc_decode: Add repeat support for pronto codes. (#1034, #1043) - -**[Misc]** -- Update supported SamsungAc devices (#1045) -- Coolix: Subtle protocol timing adjustments (#1036, #1037) -- Add supported Electra device model info (#1033) - - -## _v2.7.3 (20200130)_ - -**[Features]** -- Allow protocols to be enabled or disabled with compiler flags. (#1013, #1012) -- Panasonic AC: Add Ion Filter support for DKE models. (#1025, #1024) -- Add support for sending Sony at 38Khz (#1029, #1018, #1019) -- auto_analyse_raw_data.py: Handle analysing messages with no headers. (#1017) - -**[Misc]** -- Fix Coolix unit test errors when using Apple c++ compiler. (#1030, #1028) -- Fix Apple clang c++ compiler error in unit tests. (#1027, #1026) -- Improve/fix scraping of supported devices (#1022) -- Panasonic PKR series A/C uses DKE protocol. (#1020, #1021) -- Update NEC supported devices. (#1018) -- Add note to avoid GPIO16 on the ESP8266 for receiving. (#1016, #1015) - - -## _v2.7.2 (20200106)_ - -**[Bug Fixes]** -- Common AC api: Better handle protocols with power toggles. (#1002) - -**[Features]** -- Experimental detailed support for LG a/c. (#1008 #1009) - -**[Misc]** -- Add remote codes for Aloka LED lamp. (#1005) -- Improve Supported Devices scraping. (#1006) - - -## _v2.7.1 (20191125)_ - -**[Bug Fixes]** -- Hitachi424Ac: Fix Incorrect Power Byte Values (#987) -- Coolix: Fix setPower(false) issue. (#990) - -**[Features]** -- Use `char*` instead of `String` for common text. Saves ~1-3k. (#992, #989) -- Hitachi424Ac: Add Vertical Swing ability (#986) - -**[Misc]** -- IRMQTTServer: Update HA example/discovery message. (#995) -- Move newly added common text to a better location. (#993) - - -## _v2.7.0 (20191030)_ - -**[Bug Fixes]** -- auto_analyse: Fix > 64 bit send code generation. (#976) -- auto_analyse: Fix missing arguments in generated code for send64+ (#972) -- IRsendProntoDemo: Fix compile issue on ESP32 platform. (#938) -- IRMQTTServer: Fix compile error when `MQTT_ENABLE` is false. (#933) - -**[Features]** -- Add Hitachi 424 bit A/C support. (#975, #980, #981) -- Experimental detailed support for `DAIKIN152` (#971) -- Mitsubishi 112bit A/C support (#947, #968) -- gc_decode: Adding Support for Decoding codes in raw code format (#963) -- Refactor to use common routines/macros to handle bit manipulation. (#934) -- Use centralised common strings. Saves ~1.5k of program space. (#946) -- Add Internationalisation (i18n) / Locale support. (#946, #955, #966) - - `de-CH`: Swiss German. (#949, #954) - - `de-DE`: German. (#946, #950, #952) - - `en-AU`: English/Australia (Default locale) (#946) - - `en-IE`: English/Ireland (#946) - - `en-UK`: English/United Kingdom (#946) - - `en-US`: English/United States (#946) - - `es-ES`: Spanish. (#953) - - `fr-FR`: French. (#962) -- Port CI pipeline to PlatformIO (#936) - -**[Misc]** -- Add DAIKIN128 & DAIKIN152 to `decodeToState()` (#982) -- auto_analyse: Produce better code when leader is detected. (#977) -- Coolix A/C improvements (#944) -- A/C setRaw/getRaw/stateReset() cleanup. (#967) -- Add documentation on how to use & support the i18n aspects of the library. -- Make travis checks faster. (#957) -- Translate README.md to french (#959) -- Fixed Coolix kCoolixDefaultState (#941) -- Improve generation of list of pio projects. (#940) - - -## _v2.6.6 (20190923)_ - -**[Bug Fixes]** -- Ensure `begin()` is called for every supported common a/c. (#905, #899) -- IRMQTTServer: Fix JSON state parsing. (#896) -- IRMQTTServer: Fix compilation error when `MQTT_CLIMATE_JSON` is `true`. (#893) - -**[Features]** -- Mitsubishi136: Full A/C support. (#898, #890) -- Fujitsu: Add support for ARRY4 remote. (#895) -- Web-AC-control: Add new WebUI example sketch. (#880, #886) -- Improve Common A/C API (#913) -- IRMQTTServer: Support for multiple climates. (#903) -- IRMQTTServer: Add TX channel support for HTTP interface. (#929) -- IRMQTTServer: Add option to clear retained settings. (#917) -- auto_analyse_raw_data.py: Add decode code generation. (#909) -- auto_analyse_raw_data.py: General improvements (#906) - -**[Misc]** -- IRMQTTServer: Use latest API for common A/C. (#928) -- IRMQTTServer: Add flag & documentation for Home Assistant mode. (#919) -- IRMQTTServer: Move from ArduinoJson v5 to v6. (#878) -- IRMQTTServer: Use retain for discovery message. (#881) -- Goodweather: Adjust timings & minor fixes. (#924) -- PanasonicAc: Add better SwingV support for common a/c framework. (#923) -- Daikin2: Corrections for common A/C interface. (#910) -- MitsubishiAC: Improve decoding. (#914) -- Fujitsu: Disable horiz swing for ARRY4. (#907) -- SamsungAc: Only send power on/off code if it's needed. (#884) -- Teco: Add timer support. (#883) -- More consistent A/C `::toString()` output. (#920) - - -## _v2.6.5 (20190828)_ - -**[Bug Fixes]** -- IRMQTTServer: Remove duplicate MQTT_CLIMATE from HA discovery (#869) -- Fujitsu: Ensure `on()` is called in common a/c framework. (#862) -- Update `strToModel()` (#861) -- IRMQTTServer: Add missing header file. (#858) -- IRMQTTServer: Fix a compile error when HTML_PASSWORD_ENABLE is enabled. (#856) - -**[Features]** -- IRrecv: Allow tolerance percentage to be set at run-time. (#865) -- Basic support for Daikin152 A/C protocol. (#874) -- Teco: Add light, humid, & save support. (#871) -- Detailed support for Amcor A/C protocol. (#836, #854) -- IRMQTTServer: Add ability to report Vcc at the ESP chip. (#845) -- Gree: Add timer support. (#849) -- IRac/Mitsubishi A/C: Support wide `swingh_t` mode (#844) -- IRMQTTServer: Generate protocol and bit size html selects (#838) - -**[Misc]** -- New example code to show how to use the `IRac` class to control A/Cs (#839) -- Improve/fix `swingh_t::kWide` support (#846) -- Kelvinator: Optimise code a little to save space. (#843) - - -## _v2.6.4 (20190726)_ - -**[Bug Fixes]** -- Fix some swing problems with the Mitsubishi HAVC protocol (#831) -- Fix parameter ordering for Gree in common a/c code. (#815) -- Fix parameters for Coolix in IRac::sendAc() (#829) -- IRMQTTServer: Fix sending >64 bit codes. (#811) - -**[Features]** -- Daikin128: Full detailed support & common a/c support. (#832) -- Midea: Support native temp units of Celsius & SwingV. (#823) -- Gree: Support `YBOFB` models and bug fix. (#815) -- Pioneer: Fix sendPioneer with Pioneer specific timings (#830) -- Daikin128: Initial support for Daikin 17 Series/BRC52B63 (#828) -- Coolix: Better `toCommon()` support. (#825) -- Experimental detailed support for Daikin 176 bits (#816) -- Add setting of output options to A/C classes. (#808) -- Add invert flag support to Samsung AC (#807) - -**[Misc]** -- Daikin176: making some change on Daikin176 to work with IRMQTTServer (#826) -- Reduce duplicate code to save (3K+) space. (#813) -- Daikin176: Experiment Daikin176bits with IRMQTTServer (#824) -- Update platformio.ini files for PlatformIO v4.0.0 (#812) -- Change repo URLs to new location. (#806) -- Move `htmlEscape()` to the IRutils namespace (#801) - - -## _v2.6.3 (20190704)_ - -**[Bug Fixes]** -- IRMQTTServer: REPLAY_DECODED_AC_MESSAGE not working. (#784, #797) -- ESP32: Ensure `IRrecv`'s GPIO is set to input mode. (#774) - -**[Features]** -- IRMQTTServer: Show available sketch space for OTA uploads. (#795) -- Experimental detailed support for Electra/AUX protocol (#788) -- IRMQTTServer: Ability to resend existing climate state via MQTT & HTTP (#784) -- Daikin160: Add detailed & common a/c support. (#777) -- Experimental detailed support for Neoclima protocol. (#767) -- Gree: add WiFi and IFeel bits (#770) -- Handle A/Cs with toggles better. (#758) -- IRMQTTServer: Allow sending/receiving climate via JSON over MQTT. (#763) - -**[Misc]** -- Move converting of IR A/C messages out of example code. (#798) -- Reduce example code size and complexity (#790) -- Change `ControlSamsungAC` example to not use `sendExtended()` (#792) -- IRMQTTServer: Add MQTT_CLIMATE_IR_SEND_ON_RESTART compile-time flag. (#784) -- Refactor A/C's toString()'s to reduce code size. Saves ~3.5k (#782) -- Add sanity tests for unexpected conditions in IRrecv. (#773) -- IRMQTTServer: Fixed the HA config documentation (missing '-') (#776) -- Improve `mkkeywords` tool. (#766) -- Refactor with generic decode routines in `IRrecv` class. Saves ~7k. (#765) - - -## _v2.6.2 (20190616)_ - -**[Features]** -- Initial support for the ESP32 architecture & boards. (#742) -- Add changable GPIO settings to IRMQTTServer. (#730) -- IRMQTTServer: Enforce a repeat for all Coolix calls (#752) -- Basic DAIKIN 160bit send and decode. (#754) -- Add example code for a Smart(er) IR Repeater. (#740) -- Enforce Samsung A/C Quiet & Powerful mutual exclusivity. - -**[Misc]** -- IRMQTTServer: Add some memory alloc safety checks. (#749) -- Move some ToString() functions to IRac.cpp (#748) -- Increase tolerance value for TCL112AC protocol. (#745) -- Fix compiler warning in IRutils_test.cpp (#756) -- Scrape Supported Protocols and generate SupportedProtocols.md (#755) -- Make supported device info more organised. (#753) - - -## _v2.6.1 (20190609)_ - -**[Breaking Changes]** -- Major rework/breaking changes to Argo A/C support. (#705) - -**[Bug Fixes]** -- Correct `set/getQuiet` for Samsung A/C (#736) -- Add missing `on/off()` to IRCoolixAC class. (#725) -- Daikin `set/getEye()` uses wrong bit. (#711) -- IRMQTTServer: Continue to use same Temperature units. (#710) -- Fixed a bug with `setMode()`/`getMode()` for HAIER_AC. (#705) - -**[Features]** -- Add set/getPowerful for Samsung A/C (#736) -- Add `calibrate()` to all the A/C classes. (#735) -- IRMQTTServer: Add sequencing for sending MQTT IR commands. (#723) -- Add support for Fujitsu AR-REB1E & AR-JW2 remotes. (#718) -- Add Beta `decodeTrotec()` support. (#719) -- Add experimental `decodeArgo()` support. (#717) -- Support for Goodweather A/Cs. (#715) -- Add `DISABLE_CAPTURE_WHILE_TRANSMITTING` feature to IRMQTTServer. (#713) -- Support for Lixil Inax Toilet protocol. (#712) -- Add `set/getWeeklyTimerEnable()` to Daikin (#711) -- IRMQTTServer: Update Common A/C settings based on received IR messages. (#705) -- Add day of week to DAIKIN protocol (#699) -- Add limited support for Sharp A/C (#696) -- SAMSUNG_AC: Make sure special power mode messages are sent. (#695) -- Add `set/getPowerful()` (turbo) to DAIKIN216 (#693) - -**[Misc]** -- Add kPeriodOffset for CPU Freq of 160MHz. (#729) -- Example code for a Dumb IR repeater. (#737) -- Update swing handling for Fujitsu A/Cs. (#724) -- Add function to convert `decode_results` to `sendRaw()` array. (#721) -- Attempt to reduce heap fragmentation from strings. (#707) -- Update Fujitsu A/C example code to safer settings (#716) -- Enforce better `const` usage in IRUtils. (#708) -- Attempt to reduce heap fragmentation by A/C `toString()`s. (#694) -- Minor changes to DAIKIN216 timings and features. (#693) - - -## _v2.6.0 (20190430)_ - -**[Bug Fixes]** -- Fixed problem where LG protocol used wrong duty cycle for repeat. (#687) -- Fix checksum calculation for Daikin protocols. (#678) -- Fix the byte array version of sendGree() (#684, #685) -- Fix artificial vs. real state creation on HaierAC. (#668, #671) -- Fix issues caused by having `MQTT_ENABLE` set to false. (#677) -- Fix compile problem when DEBUG is defined. (#673, #674) -- Fix Minor bug with MQTT_ENABLE False condition (#654) - -**[Features]** -- Experimental support for DAIKIN216 (ARC433B69) (#690) -- Experimental support for Mitsubishi Heavy Industries A/Cs. (#660, #665, #667) -- Support more features of TCL A/C (#656) -- Add LEGO(TM) Power Functions IR protocol. (#655) -- Add Panasonic AC RKR model & Example (#649) -- DAIKIN/IRDaikinESP overhaul and add Comfort mode support. (#678) - **WARNING**: Previous `sendDaikin()` calls may not work. - Please recapture codes or use `kDaikinStateLengthShort` for - `nbytes` in those calls. -- IRMQTTServer: Move MQTT server and other parameters to WifiManager. (#680) - **WARNING**: Previous users may need to fully wipe/reset the - SPIFFS/WifiManager settings by visiting - `http:///reset` prior to or - after update. -- Add Wifi filtering options to IRMQTTServer. (#679) -- Add advanced aircon/climate functionality to IRMQTTServer (#677) -- Initial prototype of a common interface for all A/Cs. (#664) -- Improve MQTT topic usage for feedback messages. (#663) -- Add multiple independent GPIO sending support via MQTT. (#661) - -**[Misc]** -- Adjust kGreeHdrSpace to 4500 (#684, #686) -- Add Home Assistant mqtt climate instructions. (#682) -- Implement htmlEscape() to prevent XSS etc. (#681) -- Add F() Macros (#670) -- Update Daikin2's Cool mode min temp to 18C (#658) -- Change per byte bit-order in Electra protocol. (#648) -- Improve Daikin2 power on/off. (#647) - - -## _v2.5.6 (20190316)_ - -**[Bug Fixes]** -- Fix Coolix A/C Class to handle special states better. (#633, #624) - -**[Features]** -- Fix case style for recent A/C protocols. (#631) -- Update `IRsend::send()` to include all simple protocols. (#629, #628) -- Experimental basic support for 112 bit TCL AC messages (#627, #619) -- Add support for TECO AC (#622) -- Experimental support for Samsung 36 bit protocol (#625, #621) - -**[Misc]** -- Set Coolix to default to 1 repeat. (#637, #636, #624, #439) -- Set Daikin2 modulation to 36.7kHz. (#635) -- Refactor IRVestelAC class to use portable code. (#617) -- Adjust Daikin2 timings and tolerance. (#616, #582) - - -## _v2.5.5 (20190207)_ - -**[Bug Fixes]** -- Fix decoding of Samsung A/C Extended messages. (#610) -- Fix IRMQTTServer example to work with GPIO0 as IR_RX (#608) -- Fix incorrect #define usage. (#597, #596) - -**[Features]** -- Add deep decoding/construction of Daikin2 messages (#600) -- Added Old Vestel A/C support (56 Bits) with full functions. (#607) - -**[Misc]** -- Add ControlSamsungAC example code. (#599) -- Add how to send a state/air-con to IRsendDemo.ino (#594) - - -## _v2.5.4 (20190102)_ - -**[Features]** -- Experimental basic support for 39 Byte Daikin A/C (#583) -- Handle send() repeats in A/C classes. Improve Coolix support. (#580) -- Add optional RX pin pullup and dump raw messages in IRMQTTServer.ino (#589) - -**[Misc]** -- Make auto_analyse_raw_data.py work with Python3 (#581) -- Update CI/travis config due to esp8266 core 2.5.0 changes (#591) - - -## _v2.5.3 (20181123)_ - -**[Features]** -- Add deep support for the Hitachi 28-Byte A/C Protocol (#563) -- Deep decoding for Whirlpool A/C (#572) -- Improve security options for IRMQTTServer example. (#575) -- Require a changed firmware password before upload. (#576) - -**[Misc]** -- Add missing '}' in output of Auto analyse. (#562) -- Make A/C example code a bit more simple. (#571) - - -## _v2.5.2 (20181021)_ - -**[Bug Fixes]** -- Add missing send() method to IRPanasonicAC class. (#545) -- Add missing sendWhirlpoolAC() to IRMQTTServer.ino (#558) - -**[Features]** -- Add IR receiving support to IRMQTTServer. (#543) -- Pioneer support (#547) -- Add support for a second LG protocol variant. (#552) -- Support for short Panasonic A/C messages. (#553) -- Add support for Panasonic CKP series A/Cs. (#554) -- Experimental timer/clock support for Panasonic A/Cs. (#546) -- Add Made With Magic (MWM) support (#557) - -**[Misc]** -- Grammar and typo fixes (#541, #549) -- Increase Panasonic A/C message tolerances. (#542) -- Added command mode2_decode in tools/ (#557) -- General code style cleanup (#560) - - -## _v2.5.1 (20181002)_ - -**[Bug Fixes]** -- Correct the byte used for Samsung AC Swing. (#529) -- Fix not sending Samsung A/C messages in IRMQTTServer. (#529) - -**[Features]** -- Experimental support for Electra A/C messages. (#528) -- Experimental support for Panasonic A/C messages. (#535) -- Samsung A/C fixes & improvements (#529) -- IRMQTTServer v0.6.0 (#530) - -**[Misc]** -- Change required WifiManager lib version to v0.14 -- Add alias for RAWTICK to kRawTick. (#535) -- Update sendLutron() status. (#515) -- Remove leftover debug message in IRrecvDumpV2 (#526) - - -## _v2.5.0 (20180919)_ - -**[Bug Fixes]** -- Fix HTML menu error for GICABLE in IRMQTTServer. (#516) -- Fix Mitsubishi A/C mode setting. (#514) -- Add missing ',' in auto analyse tool generated code. (#513) -- Fix Fujitsu checksum validation. (#501) -- Remove errant Repeat debug statement in IRMQTTServer. (#507) - -**[Features]** -- Mitsubishi A/C decode improvements. (#514) -- Basic support for Whirlpool A/C messages. (#511) -- Basic support for Samsung A/C messages. (#512) -- Experimental support for detailed Samsung A/C messages. (#521) -- Experimental support for detailed Coolix A/C messages. (#518) -- Experimental support for Lutron protocol. (#516) -- Calculate and use average values for timings in analysing tool. (#513) - -**[Misc]** -- Style change from using #define's for constants to `const kConstantName`. -- Improve the JVC example code. - - -## _v2.4.3 (20180727)_ - -**[Bug Fixes]** -- Handle Space Gaps better in auto analyse tool. (#482) -- Correct min repeat for GICABLE in IRMQTTServer. (#494) - -**[Features]** -- Add static IP config option to IRMQTTServer (#480) -- Full decoding/encoding support for the Haier YRW02 A/C. (#485 #486 #487) - -**[Misc]** -- Update LG (28-bit) HDR mark and space timings. (#492) -- Spelling and grammar fixes (#491) - - -## _v2.4.2 (20180601)_ - -**[Bug Fixes]** -- Timing Fix: Update the period offset compensation. - -**[Features]** -- Improvements for IRMQTTServer example (#466) - - -## _v2.4.1 (20180520)_ - -**[Bug Fixes]** -- Fix crash in IRMQTTServer when compiled under Arduino IDE. (#455) -- Default bit length not set for RCMM in IRMQTTServer example. (#456) -- Bad acknowledgements for some A/C protocols in IRMQTTServer example. (#460) - -**[Features]** -- Allow disabling the use of delay() calls. (#450) -- Initial support for G.I. Cable protocol. (#458) -- Support of Hitachi A/C 13 & 53 byte messages. (#461) - -**[Misc]** -- Auto Analyse Raw Data script converted to Python. (#454) - -## _v2.4.0 (20180407)_ - -**[Bug Fixes]** -- Add missing WiFi.begin() call to IRGCTCPServer example. (#433) -- Add missing sendHaierAC() to IRMQTTServer example. (#434 & #444) -- Make mqtt clientid unique in IRMQTTServer example. (#444) - -**[Features]** - -- Initial Mitsubishi projector protocol support. (#442) -- Experimental support of Hitachi A/C messages. (#445) -- Improve transmission pulse modulation support. - Allow disabling of transmission frequency modulation.(#439) - -**[Misc]** -- IRMQTTServer example improvements. (#444) - - -## _v2.3.3 (20180302)_ - -**[Bug Fixes]** -- Ensure the IR LED is off before we start. (#405) - -**[Features]** -- Experimental decode support for Gree HVAC units (#397) -- Initial support for Haier A/Cs. (#409) -- Improve timing accuracy of unit tests. (#403) -- Rework matchData() to handle equal total data bit time protocols. (#408) - -**[Misc]** -- Add startup text to IRrecvDumpV2 and IRrecvDemo (#412) -- Tweak timings on Fujitsu A/C header (#418) -- AutoAnalyseRawData.sh: Add some support for handling larger than 64 bit codes. (#419) -- Use better comments for send GPIO in examples. (#425) - - -## _v2.3.2 (20180126)_ - -**[Bug Fixes]** -- Integer underflow caused device not to respond in `sendJVC()` (#401) - -**[Features]** -- Initial support for sending & receiving Carrier HVAC codes. (#387) -- Add Pronto HEX code support to _gc_decode_ tool. (#388) - -**[Misc]** -- Make mDNS independent of MQTT in IRMQTTServer example code. (#390 #391) - - -## _v2.3.1 (20171229)_ - -**[Bug Fixes]** -- Setting `#define SEND_FUJITSU_AC false` caused a compilation error (#375) -- Integer underflow caused huge `space()` in `sendGeneric()` (#381) - -**[Features]** -- Support sending & receiving Lasertag codes. (#374) -- Reduce the library footprint by using a new `sendGeneric()` routine. (#373) - -**[Misc]** -- Lots of grammar & typo fixes. (#378) -- Update keywords.txt for Arduino IDE users (#371) -- Update pins in examples so they are compatible with Adafruit boards. (#383) - - -## _v2.3.0 (20171208)_ - -**[Bug Fixes]** -- Panasonic-based protocols had incorrect message gap. (#358) -- Formatting error for large rawData values in example code. (#355) -- Off-by-one error in payload_copy malloc. (#337) -- Off-by-one error in unit test helper routines (#363) - -**[Features]** -- Support sending and receiving Midea A/C codes. -- Support for receiving Kelvinator A/C codes. (#332) -- Support more operation features for Daikin A/Cs. -- Support for decoding Daikin A/Cs. -- Support sending and receiving Toshiba A/Cs. (#333) -- Support sending and receiving AR-DB1 Fujitsu A/C codes. (#367) -- Add new AutoAnalyseRawData.sh & RawToGlobalCache.sh tools (#345) (#343) -- Support for MagiQuest wands. (#365) - -**[Misc]** -- Add checksum verification to Kelvinator A/C decodes. (#348) -- Changes to the threshold reporting of UNKNOWN messages (#347) -- Major re-work of Daikin A/C support. -- Sending for all A/Cs added to MQTT example code. -- MQTT example code improvements. (#334) -- IRrecvDumpV2 significant output improvements. (#363) -- Improved unit test coverage for the library. - - -## _v2.2.1 (20171025)_ - -**[Features]** -- Support for sending and decoding Nikai TV messages. (#311, #313) -- gc_decode: External utility to decode Global Cache codes. (#308, #312) -- IRMQTTServer: Example code to send IR messages via HTTP & MQTT. (#316, #323) -- Improve converting 64bit values to hexadecimal. (#318) - -**[Misc]** -- IRrecvDump.ino code is now deprecated. Use IRrecvDumpV2.ino instead. (#314) - - -## _v2.2.0 (20170922)_ - -**[Bug Fixes]** -- Add printing output of RC-MM and RC-5X protocols in example code. (#284) -- LG timing improvements based on observations (#291) - -**[Features]** -- Automatic capture timing calibration for some protocols. (#268) -- Support for creating & sending Trotec AC codes. (#279) -- Support for creating & sending Argo Ulisse 13 DCI codes. (#280 #300) -- Move to 2 microsecond timing resolution for capture of codes. (#287) -- Capture buffer changes: -- Size at runtime. (#276) -- Message timeout at runtime. (#294) -- Simplify creating & using a second buffer (#303) -- New example code: - - Trotec A/C (#279) - - LG A/C units (#289) - - Argo Ulisse 13 DCI codes. (#300) - - -## _v2.1.1 (20170711)_ - -**[Bug Fixes]** -- GlobalCache incorrectly using hardware offset for period calc. (#267) - -**[Features]** -- Support reporting of 'NEC'-like 32-bit protocols. e.g. Apple TV remote (#265) -- Add an example of sendRaw() to IRsendDemo.ino (#270) - - -## _v2.1.0 (20170704)_ - -**[Features]** -- Support for sending Pronto IR codes. (#248) -- Support for sending Fujitsu A/C codes. (#88) -- Minor improvements to examples. - - -## _v2.0.3 (20170618)_ - -**[Bug fixes]** -- Capture buffer could become corrupt after large message, breaking subsequent decodes. (#253) - - -## _v2.0.2 (20170615)_ - -**[Bug fixes]** -- Correct decode issue introduced in v2.0.1 affecting multiple protocol decoders (#243) -- Correct post-message gap for the Panasonic protocol(s) (#245) -- Incorrect display of the decoded uint64_t value in the example code. (#245) - - -## _v2.0.1 (20170614)_ - -**[Bug fixes]** -- Decoding protocols when it doesn't detect a post-command gap, and there is no more data. (#243) -- Incorrect minimum size calculation when there is no post-command gap. (#243) - - -## _v2.0.0 - 64 bit support and major improvements (20170612)_ - -**[Misc]** -- This is almost a complete re-write of the library. - -**[Features]** -- All suitable protocols now handle 64-bit data messages and are repeatable via an optional argument. -- Unit tests for all protocols. -- Far better and stricter decoding for most protocols. -- Address & command decoding for protocols where that information is available. -- Much more precise timing for generation of signals sent. -- Lower duty-cycles for some protocols. -- Several new protocols added, and some new sending and decoding routines for existing ones. -- Ability to optionally chose which protocols are included, enabling faster decoding and smaller code footprints if desired. -- Support for far larger capture buffers. (e.g. RAWLEN > 256) - -**[Bug fixes]** -- Numerous bug fixes. - - -## _v1.2.0 (20170429)_ - -**[Features]** -- Add ability to copy IR capture buffer, and continue capturing. Means faster and better IR command decoding. -- Reduce IRAM usage by 28 bytes. -- Improve capture of RC-MM & Panasonic protocols. -- Upgrade IRrecvDumpV2 to new IR capture buffer. Much fewer corrupted/truncated IR messages. - - -## _v1.1.1 (20170413)_ - -**[Bug fixes]** -- Fix a reported problem when sending the LG protocol. Preemptive fix for possible similar cases. -- Fix minor issues in examples. - -**[Features]** -- Add documentation to some examples to aid new people. -- Add ALPHA support for RC-MM protocol. (Known to be currently not 100% working.) diff --git a/lib/IRremoteESP8266-2.7.10/SupportedProtocols.md b/lib/IRremoteESP8266-2.7.10/SupportedProtocols.md deleted file mode 100644 index ab3b47f51..000000000 --- a/lib/IRremoteESP8266-2.7.10/SupportedProtocols.md +++ /dev/null @@ -1,190 +0,0 @@ - -# IR Protocols supported by this library - -| Protocol | Brand | Model | A/C Model | Detailed A/C Support | -| --- | --- | --- | --- | --- | -| [Airwell](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Airwell.cpp) | **[Airwell](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Airwell.h)** | DLS 21 DCI R410 AW A/C
RC04 remote
RC08W remote | | Yes | -| [Aiwa](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Aiwa.cpp) | **Aiwa** | RC-T501 RCU | | - | -| [Amcor](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Amcor.cpp) | **[Amcor](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Amcor.h)** | ADR-853H A/C
TAC-444 remote
TAC-495 remote | | Yes | -| [Argo](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Argo.cpp) | **[Argo](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Argo.h)** | Ulisse 13 DCI Mobile Split A/C | | Yes | -| [Carrier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Carrier.cpp) | **[Carrier/Surrey](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Carrier.h)** | 42QG5A55970 remote
53NGK009/012 Inverter
619EGX0090E0 A/C
619EGX0120E0 A/C
619EGX0180E0 A/C
619EGX0220E0 A/C | | Yes | -| [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Airwell](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | RC08B remote | | Yes | -| [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Beko](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | BINR 070/071 split-type A/C
RG57K7(B)/BGEF Remote | | Yes | -| [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | MS12FU-10HRDN1-QRD0GW(B) A/C
MSABAU-07HRFN1-QRD0GW A/C (circa 2016)
RG52D/BGE Remote | | Yes | -| [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Tokio](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | AATOEMF17-12CHR1SW split-type RG51\|50/BGE Remote | | Yes | -| [Corona](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Corona.cpp) | **[Corona](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Corona.h)** | AR-01 remote
CSH-N2211 A/C
CSH-N2511 A/C
CSH-N2811 A/C
CSH-N4011 A/C | | Yes | -| [Daikin](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Daikin.cpp) | **[Daikin](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Daikin.h)** | 17 Series A/C (DAIKIN128)
ARC423A5 remote (DAIKIN160)
ARC433** remote (DAIKIN)
ARC433B69 remote (DAIKIN216)
ARC466A33 remote (DAIKIN)
ARC477A1 remote (DAIKIN2)
ARC480A5 remote (DAIKIN152)
BRC4C151 remote (DAIKIN176)
BRC4C153 remote (DAIKIN176)
BRC52B63 remote (DAIKIN128)
DGS01 remote (DAIKIN64)
FFN-C/FCN-F Series A/C (DAIKIN64)
FFQ35B8V1B A/C (DAIKIN176)
FTE12HV2S A/C
FTXB09AXVJU A/C (DAIKIN128)
FTXB12AXVJU A/C (DAIKIN128)
FTXM-M A/C (DAIKIN)
FTXZ25NV1B A/C (DAIKIN2)
FTXZ35NV1B A/C (DAIKIN2)
FTXZ50NV1B A/C (DAIKIN2)
M Series A/C (DAIKIN) | | Yes | -| [Delonghi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Delonghi.cpp) | **[Delonghi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Delonghi.h)** | PAC A95 | | Yes | -| [Denon](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Denon.cpp) | **Denon** | AVR-3801 A/V Receiver (probably) | | - | -| [Dish](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Dish.cpp) | **DISH NETWORK** | echostar 301 | | - | -| [Doshisha](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Doshisha.cpp) | **Doshisha** | CZ-S32D LED Light
CZ-S38D LED Light
CZ-S50D LED Light
RCZ01 remote | | - | -| [Electra](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.cpp) | **[AUX](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.h)** | KFR-35GW/BpNFW=3 A/C
YKR-T/011 remote | | Yes | -| [Electra](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.cpp) | **[Electra](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.h)** | Classic INV 17 / AXW12DCS A/C
YKR-M/003E remote | | Yes | -| [Epson](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Epson.cpp) | **Epson** | EN-TW9100W Projector | | - | -| [Fujitsu](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Fujitsu.cpp) | **[Fujitsu](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Fujitsu.h)** | AGTV14LAC A/C
AR-DB1 remote
AR-DL10 remote
AR-RAC1E remote
AR-RAE1E remote
AR-RAH2E remote
AR-REB1E remote
AR-RY4 remote
AST9RSGCW A/C (ARDB1)
ASTB09LBC A/C
ASU30C1 A/C
ASYG30LFCA A/C (ARRAH2E)
ASYG7LMCA A/C (ARREB1E) | ARDB1
ARJW2
ARRAH2E
ARREB1E
ARRY4 | Yes | -| [Fujitsu](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Fujitsu.cpp) | **[Fujitsu General](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Fujitsu.h)** | AR-JW2 remote | ARDB1
ARJW2
ARRAH2E
ARREB1E
ARRY4 | Yes | -| [GICable](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_GICable.cpp) | **G.I. Cable** | XRC-200 remote | | - | -| [GlobalCache](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_GlobalCache.cpp) | **Global Cache** | Control Tower IR DB | | - | -| [Goodweather](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Goodweather.cpp) | **[Goodweather](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Goodweather.h)** | ZH/JT-03 remote | | Yes | -| [Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.cpp) | **[EKOKAI](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.h)** | A/C | YAW1F
YBOFB | Yes | -| [Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.cpp) | **[Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.h)** | YAA1FBF remote
YB1F2F remote | YAW1F
YBOFB | Yes | -| [Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.cpp) | **[Green](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.h)** | YBOFB remote
YBOFB2 remote | YAW1F
YBOFB | Yes | -| [Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.cpp) | **[RusClimate](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.h)** | EACS/I-09HAR_X/N3 A/C
YAW1F remote | YAW1F
YBOFB | Yes | -| [Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.cpp) | **[Ultimate](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Gree.h)** | Heat Pump | YAW1F
YBOFB | Yes | -| [Haier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Haier.cpp) | **[Haier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Haier.h)** | HSU-09HMC203 A/C (HAIER_AC_YRW02)
HSU07-HEA03 remote (HAIER_AC)
YR-W02 remote (HAIER_AC_YRW02) | | Yes | -| [Hitachi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Hitachi.cpp) | **[Hitachi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Hitachi.h)** | KAZE-312KSDP A/C (HITACHI_AC1)
LT0541-HTA remote (HITACHI_AC1)
PC-LH3B (HITACHI_AC3)
R-LT0541-HTA/Y.K.1.1-1 V2.3 remote (HITACHI_AC1)
RAR-8P2 remote (HITACHI_AC424)
RAS-22NK A/C (HITACHI_AC344)
RAS-35THA6 remote
RAS-AJ25H A/C (HITACHI_AC424)
RF11T1 remote (HITACHI_AC344)
Series VI A/C (Circa 2007) (HITACHI_AC1) | | Yes | -| [Inax](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Inax.cpp) | **Lixil** | Inax DT-BA283 Toilet | | - | -| [JVC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_JVC.cpp) | **JVC** | PTU94023B remote | | - | -| [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Green](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | YAPOF3 remote | | Yes | -| [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | KSV26CRC A/C
KSV26HRC A/C
KSV35CRC A/C
KSV35HRC A/C
KSV53HRC A/C
KSV62HRC A/C
KSV70CRC A/C
KSV70HRC A/C
KSV80HRC A/C
YALIF Remote | | Yes | -| [LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.cpp) | **[General Electric](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.h)** | 6711AR2853M A/C Remote
AG1BH09AW101 Split A/C | | Yes | -| [LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.cpp) | **[LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.h)** | 6711A20083V remote (LG)
AKB74395308 remote (LG2)
AKB75215403 remote (LG2)
S4-W12JA3AA A/C (LG2) | | Yes | -| [Lasertag](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Lasertag.cpp) | **Lasertag** | Phaser emitters | | - | -| [Lego](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Lego.cpp) | **LEGO Power Functions** | IR Receiver | | - | -| [Lutron](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Lutron.cpp) | **Lutron** | MIR-ITFS remote
MIR-ITFS-F remote
MIR-ITFS-LF remote
SP-HT remote | | - | -| [MWM](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MWM.cpp) | **Disney** | Made With Magic (Glow With The Show) wand | | - | -| [Magiquest](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Magiquest.cpp) | **[MagiQuest](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Magiquest.h)** | Wand | | - | -| [Metz](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Metz.cpp) | **Metz** | CH610 TV
RM16 remote
RM17 remote
RM19 remote | | - | -| [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Comfee](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | MPD1-12CRN7 A/C (MIDEA) | | Yes | -| [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Danby](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | DAC080BGUWDB (MIDEA)
DAC100BGUWDB (MIDEA)
DAC120BGUWDB (MIDEA)
R09C/BCGE remote (MIDEA) | | Yes | -| [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Keystone](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | RG57H4(B)BGEF remote (MIDEA) | | Yes | -| [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | FS40-7AR Stand Fan (MIDEA24) | | Yes | -| [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Pioneer System](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | RUBO18GMFILCAD A/C (18K BTU) (MIDEA)
RYBO12GMFILCAD A/C (12K BTU) (MIDEA) | | Yes | -| [Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.cpp) | **[Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.h)** | HC3000 Projector (MITSUBISHI2)
KM14A 0179213 remote
MS-GK24VA A/C
TV (MITSUBISHI) | | Yes | -| [Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.cpp) | **[Mitsubishi Electric](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.h)** | 001CP T7WE10714 remote (MITSUBISHI136)
KPOA remote (MITSUBISHI112)
MSH-A24WV A/C (MITSUBISHI112)
MUH-A24WV A/C (MITSUBISHI112)
PEAD-RP71JAA Ducted A/C (MITSUBISHI136) | | Yes | -| [MitsubishiHeavy](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MitsubishiHeavy.cpp) | **[Mitsubishi Heavy Industries](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MitsubishiHeavy.h)** | RKX502A001C remote (88 bit)
RLA502A700B remote (152 bit)
SRKxxZJ-S A/C (88 bit)
SRKxxZM-S A/C (152 bit)
SRKxxZMXA-S A/C (152 bit) | | Yes | -| [Multibrackets](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Multibrackets.cpp) | **Multibrackets** | Motorized Swing mount large - 4500 | | - | -| [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Aloka](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | SleepyLights LED Lamp | | - | -| [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Duux](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | Blizzard Smart 10K / DXMA04 A/C
YJ-A081 TR Remote | | - | -| [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Silan Microelectronics](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | SC6121-001 IC | | - | -| [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | 42TL838 LCD TV | | - | -| [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Yamaha](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | RAV561 remote
RXV585B A/V Receiver | | - | -| [Neoclima](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.cpp) | **[Neoclima](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.h)** | NS-09AHTI A/C
ZH/TY-01 remote | | Yes | -| [Nikai](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Nikai.cpp) | **Nikai** | Unknown LCD TV | | - | -| [Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.cpp) | **[Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.h)** | A75C2311 remote (PANASONIC_AC CKP/5)
A75C2616-1 remote (PANASONIC_AC DKE/3)
A75C3704 remote (PANASONIC_AC DKE/3)
A75C3747 remote (PANASONIC_AC JKE/4)
CKP series A/C (PANASONIC_AC CKP/5)
CS-E7PKR A/C (PANASONIC_AC DKE/2)
CS-ME10CKPG A/C (PANASONIC_AC CKP/5)
CS-ME12CKPG A/C (PANASONIC_AC CKP/5)
CS-ME14CKPG A/C (PANASONIC_AC CKP/5)
CS-YW9MKD A/C (PANASONIC_AC JKE/4)
CS-Z9RKR A/C (PANASONIC_AC RKR/6)
DKE series A/C (PANASONIC_AC DKE/3)
DKW series A/C (PANASONIC_AC DKE/3)
JKE series A/C (PANASONIC_AC JKE/4)
NKE series A/C (PANASONIC_AC NKE/2)
PKR series A/C (PANASONIC_AC DKE/3)
RKR series A/C (PANASONIC_AC RKR/6)
TV (PANASONIC) | CKP
DKE
JKE
LKE
NKE
RKR | Yes | -| [Pioneer](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Pioneer.cpp) | **Pioneer** | AV Receivers
AXD7690 Remote
VSX-324 AV Receiver | | - | -| [Pronto](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Pronto.cpp) | **Pronto** | Pronto Hex | | - | -| [RC5_RC6](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_RC5_RC6.cpp) | **Philips** | RC-5X (RC5X)
Standard RC-5 (RC5)
Standard RC-6 (RC6) | | - | -| [RCMM](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_RCMM.cpp) | **Microsoft** | XBOX 360 | | - | -| [Samsung](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Samsung.cpp) | **[Samsung](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Samsung.h)** | AH59-02692E Soundbar remote (SAMSUNG36)
AK59-00167A Bluray remote (SAMSUNG36)
AR09FSSDAWKNFA A/C (SAMSUNG_AC)
AR12HSSDBWKNEU A/C (SAMSUNG_AC)
AR12KSFPEWQNET A/C (SAMSUNG_AC)
AR12NXCXAWKXEU A/C (SAMSUNG_AC)
BN59-01178B TV remote (SAMSUNG)
DB63-03556X003 remote
DB93-16761C remote
HW-J551 Soundbar (SAMSUNG36)
IEC-R03 remote
UA55H6300 TV (SAMSUNG) | | Yes | -| [Sanyo](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sanyo.cpp) | **[Sanyo](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sanyo.h)** | LC7461 transmitter IC (SANYO_LC7461)
RCS-2HS4E remote (SANYO_AC)
RCS-2S4E remote (SANYO_AC)
SA 8650B - disabled
SAP-K121AHA A/C (SANYO_AC)
SAP-K242AH A/C (SANYO_AC) | | Yes | -| [Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sharp.cpp) | **[Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sharp.h)** | AH-AxSAY A/C
AH-XP10NRY A/C
AY-ZP40KR A/C
CRMC-820JBEZ remote
CRMC-A907 JBEZ remote
LC-52D62U TV | | Yes | -| [Sherwood](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sherwood.cpp) | **Sherwood** | RC-138 remote
RD6505(B) Receiver | | - | -| [Sony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sony.cpp) | **Sony** | HT-CT380 Soundbar (Uses 38kHz & 3 repeats) | | - | -| [Symphony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Symphony.cpp) | **Blyss** | Owen-SW-5 3 Fan
WP-YK8 090218 remote | | - | -| [Symphony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Symphony.cpp) | **SamHop** | SM3015 Fan Remote Control
SM5021 Encoder chip
SM5032 Decoder chip | | - | -| [Symphony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Symphony.cpp) | **Satellite Electronic** | ID6 Remote
JY199I Fan driver
JY199I-L Fan driver | | - | -| [Symphony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Symphony.cpp) | **Symphony** | Air Cooler 3Di | | - | -| [Symphony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Symphony.cpp) | **Westinghouse** | 78095 Remote
Ceiling fan | | - | -| [Tcl](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Tcl.cpp) | **[Leberg](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Tcl.h)** | LBS-TOR07 A/C | | Yes | -| [Teco](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Teco.cpp) | **[Alaska](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Teco.h)** | SAC9010QC A/C
SAC9010QC remote | | Yes | -| [Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Toshiba.cpp) | **[Carrier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Toshiba.h)** | 42NQV025M2 / 38NYV025M2 A/C
42NQV035M2 / 38NYV035M2 A/C
42NQV050M2 / 38NYV050M2 A/C
42NQV060M2 / 38NYV060M2 A/C | | Yes | -| [Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Toshiba.cpp) | **[Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Toshiba.h)** | Akita EVO II
RAS 18SKP-ES
RAS-B13N3KV2
RAS-B13N3KVP-E
WC-L03SE
WH-TA04NE | | Yes | -| [Trotec](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.cpp) | **[Duux](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.h)** | Blizzard Smart 10K / DXMA04 A/C | | Yes | -| [Trotec](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.cpp) | **[Trotec](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.h)** | PAC 3200 A/C | | Yes | -| [Vestel](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Vestel.cpp) | **[Vestel](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Vestel.h)** | BIOX CXP-9 A/C (9K BTU) | | Yes | -| [Voltas](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Voltas.cpp) | **[Voltas](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Voltas.h)** | 122LZF 4011252 Window A/C | 122LZF | Yes | -| [Whirlpool](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Whirlpool.cpp) | **[Whirlpool](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Whirlpool.h)** | DG11J1-04 remote
DG11J1-3A remote
DG11J1-91 remote
SPIS409L A/C
SPIS412L A/C
SPIW409L A/C
SPIW412L A/C
SPIW418L A/C | DG11J13A
DG11J191 | Yes | -| [Whynter](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Whynter.cpp) | **Whynter** | ARC-110WD A/C | | - | -| [Zepeal](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Zepeal.cpp) | **Zepeal** | DRT-A3311(BG) 5 button remote
DRT-A3311(BG) floor fan | | - | - - -## Send only protocols: - -- GLOBALCACHE -- PRONTO -- RAW -- SHERWOOD -- SONY_38K - - -## Send & decodable protocols: - -- AIRWELL -- AIWA_RC_T501 -- AMCOR -- ARGO -- CARRIER_AC -- CARRIER_AC40 -- CARRIER_AC64 -- COOLIX -- CORONA_AC -- DAIKIN -- DAIKIN128 -- DAIKIN152 -- DAIKIN160 -- DAIKIN176 -- DAIKIN2 -- DAIKIN216 -- DAIKIN64 -- DELONGHI_AC -- DENON -- DISH -- DOSHISHA -- ELECTRA_AC -- EPSON -- FUJITSU_AC -- GICABLE -- GOODWEATHER -- GREE -- HAIER_AC -- HAIER_AC_YRW02 -- HITACHI_AC -- HITACHI_AC1 -- HITACHI_AC2 -- HITACHI_AC3 -- HITACHI_AC344 -- HITACHI_AC424 -- INAX -- JVC -- KELVINATOR -- LASERTAG -- LEGOPF -- LG -- LG2 -- LUTRON -- MAGIQUEST -- METZ -- MIDEA -- MIDEA24 -- MITSUBISHI -- MITSUBISHI112 -- MITSUBISHI136 -- MITSUBISHI2 -- MITSUBISHI_AC -- MITSUBISHI_HEAVY_152 -- MITSUBISHI_HEAVY_88 -- MULTIBRACKETS -- MWM -- NEC -- NEC_LIKE -- NEOCLIMA -- NIKAI -- PANASONIC -- PANASONIC_AC -- PIONEER -- RC5 -- RC5X -- RC6 -- RCMM -- SAMSUNG -- SAMSUNG36 -- SAMSUNG_AC -- SANYO -- SANYO_AC -- SANYO_LC7461 -- SHARP -- SHARP_AC -- SONY -- SYMPHONY -- TCL112AC -- TECO -- TOSHIBA_AC -- TROTEC -- VESTEL_AC -- VOLTAS -- WHIRLPOOL_AC -- WHYNTER -- ZEPEAL diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRAmcorAc__coll__graph.map b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRAmcorAc__coll__graph.map deleted file mode 100644 index 4cebbf9a2..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRAmcorAc__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 deleted file mode 100644 index 7fde870f1..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -163192504ac8319807adb950a6186ac0 \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRAmcorAc__coll__graph.png b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRAmcorAc__coll__graph.png deleted file mode 100644 index 484d0b2520154ea6fff48d180b12ea8e0057cffc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3009 zcmZXW2Q*yU8pns|y(L02LJC(z9p=esiC_p5L??O>Wn5(pqZ5Qgxk^SEB~cSS21yK& z7{*mb8H6Ev?=_<5oxHp5dhe~f&e~_MbJqUO`PR4p-~YGc3?9JQSp-=?AP~Ebw#GwX zMgk*@i2=CJFX)kgiNQe^t^xY_>w48xk_rN`qIERx8V6*r=OFd?h6Tg(=;@M^>?+bs zY16w9vQTbWjp_u`{fYX%NO2zBvBIdqlrzv%B=FI%dL@j#Wzq7^vAx#m z^z@YP!UY~M7-4RHad~+;TP4WU>XY3U+KJF(({Sa+uGiR{R~B7%*^X#kL6%ll zG#L<=L^Nb}b+zlIgxM2!_ksE=LPC`x9BgcKc3xh8Bqnl1MngNwV1ie!TnP*c;#MC)0Ex_g z`1~0pnyPc$^F$uzGU}&ccrJ|aJs&}kP9!OZNpAqc6aN=#Ke#)B%n}iyHHSkWF&21V4#d( zLgV2APHLo!Ky)mkDYt17e9_jjzdnXJ*=}cMWxXaTnE)hS<2|c|ULV!;@{;j76?NSB z_OY<2h+9agXJx3YgG|05ENrLlXJTyJH#w>A;c*L4%-r0ZqVMnqJKXxRVUlwcm(iA% zhOF#=6n|Yq=WqFM-*m0Fk3fzbPl|bu*qMaK#4x};Jt>crAm?&8PR`uCt=K9R892b@ zE1ssOMRegv*QOP$pOqK}}B zNX7Thnyuv5!b^0u;H?Q!ibSD6>G9eEl8J3-Voc+{G?@~Vz}n8pRd3}PiR=q$%%d4l z_(8v*QJ9WinB?zIsOSF#vvikkP!=*1Zj!%OM?JfBtk!b#N#)8VC-%c+%h8vKBHiSt z@uMojpMytR=6z>5*OJ-a7S#>zP0t1`Za{3+z%KhilT^|7wJV=wgT7Y~X^A#B$c{33 zLUTUH2Z+g+JtEyDjMiMqt6ob50%kk#MXs>Zc0IzTRQ(zA=kAQzW+)Ifd_qgze@|J}#Ixp%k-} zV$!&7kck=ESL?*3C2!x(tf`UneifmBtBsg(y` zT^mWK0+LmmlEQlH4TfJtt4NiB|mrkOF^ z*XJ~!>>`oKQS0$_BTvuDW7;NoV<{&4X24J;)Wm@DKTTjrx!zh<2$oo#F}Fx35WQeF zLtSD0TP1{hUd%Rr#fbC&=$cYEWaU&ox;;M&4iMxYpF&Ugt&z>$uTF*P^0 zXQu7N^2*9gYaDO61wO_C@9cV8Em272IW>4!-xdOaVCItHTie^22ES@@EBmXmvy+pd zfx+h@-Sm+U-q&n{x9MM8kfd;E`S~e`rpAfo2DErK0bBpj$f)kHx>{x(-`uQ5Lqmfm zCpI@Xqd^1$VS9Uf`t>s*LGGlE$1TId>9MgmD(6CX=D9oi`bk*P<*&*nym7weu$<_D zDpz}Z`*LdnmftowIplahIX5?vD{^JU4ZSvU7lo=dt$+JAZhh?im=2B&u$K`JXiuJ6 z74yft0Rf7pWkXV&CN3^wAiPWO*Us@Qe)p^1i6$j@ua3>ysVTb}Jf8Z|SByv`%0r>F zBVeZRgM)y0t=XuQzyvKI{sq7E!c$JwsWmE|jg8H~#6pzZ2g19Hy^FI+Y9tS+ zqg>{}-hjT&{re4$ay4&C1Qc^!0HmC@8Fr6VeL{3%Q+6PENG7wO`fL z>{PB=G>59l%F6Qb^Y6B>O80&Hrl+n>3)*bl<%o!gD7UP8Ze| - - - diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRArgoAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRArgoAC__coll__graph.md5 deleted file mode 100644 index e84f3b330..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRArgoAC__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -7d040225d2db5b4715532b7d4ba5268b \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRArgoAC__coll__graph.png b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRArgoAC__coll__graph.png deleted file mode 100644 index a7838e03d2748923e6be5065db7a353a8c9b0a2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3164 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 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCarrierAc64__coll__graph.map b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCarrierAc64__coll__graph.map deleted file mode 100644 index d0c818960..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCarrierAc64__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 deleted file mode 100644 index fd7409742..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -c88965083519dee20186a15bc2f69a8c \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCarrierAc64__coll__graph.png b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCarrierAc64__coll__graph.png deleted file mode 100644 index 72adeb220645a7fd55ba14e7ff519605fceedc3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3653 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 V%j5)Z@V^kEs;Hq*`1pC?{{WPlE;9fC diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCoronaAc__coll__graph.map b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCoronaAc__coll__graph.map deleted file mode 100644 index 7b9921ac4..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCoronaAc__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 deleted file mode 100644 index fe237b80f..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2a8dc27b8683799250ee74acb6173d8f \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCoronaAc__coll__graph.png b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRCoronaAc__coll__graph.png deleted file mode 100644 index b8c35c4704f46851e6dd4b588cd30cd3d0cee59d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3290 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 G^1lH5h+|*? diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRDelonghiAc__coll__graph.map b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRDelonghiAc__coll__graph.map deleted file mode 100644 index 069782ed6..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRDelonghiAc__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 deleted file mode 100644 index 58e961103..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e2babeacb4dc45c7ae998d66cca5b36e \ No newline at end of file diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRDelonghiAc__coll__graph.png b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRDelonghiAc__coll__graph.png deleted file mode 100644 index 1a0cb0d9fe80411bc3a29c02488ee3d95721d8b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3457 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 RF5pZB(!QgI_^4qM`X3Ujkt6^B diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/ir__Carrier_8h.html b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/ir__Carrier_8h.html deleted file mode 100644 index a8953bf3e..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/ir__Carrier_8h.html +++ /dev/null @@ -1,568 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Carrier.h File Reference - - - - - - - - - -

-
- -
-
ir_Carrier.h File Reference
-
-
- -

Carrier A/C. -More...

- -

Go to the source code of this file.

- - - - - -

-Classes

class  IRCarrierAc64
 Class for handling detailed Carrier 64 bit A/C messages. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Variables

const uint8_t kCarrierAc64ChecksumOffset = 16
 
const uint8_t kCarrierAc64ChecksumSize = 4
 
const uint8_t kCarrierAc64ModeOffset
 
const uint8_t kCarrierAc64ModeSize = 2
 
const uint8_t kCarrierAc64Heat = 0b01
 
const uint8_t kCarrierAc64Cool = 0b10
 
const uint8_t kCarrierAc64Fan = 0b11
 
const uint8_t kCarrierAc64FanOffset
 
const uint8_t kCarrierAc64FanSize = 2
 
const uint8_t kCarrierAc64FanAuto = 0b00
 
const uint8_t kCarrierAc64FanLow = 0b01
 
const uint8_t kCarrierAc64FanMedium = 0b10
 
const uint8_t kCarrierAc64FanHigh = 0b11
 
const uint8_t kCarrierAc64TempOffset
 
const uint8_t kCarrierAc64TempSize = 4
 
const uint8_t kCarrierAc64MinTemp = 16
 
const uint8_t kCarrierAc64MaxTemp = 30
 
const uint8_t kCarrierAc64SwingVOffset
 
const uint8_t kCarrierAc64PowerOffset = kCarrierAc64SwingVOffset + 6 + 1
 
const uint8_t kCarrierAc64OffTimerEnableOffset
 
const uint8_t kCarrierAc64OnTimerEnableOffset
 
const uint8_t kCarrierAc64SleepOffset
 
const uint8_t kCarrierAc64TimerSize = 4
 
const uint8_t kCarrierAc64TimerMax = 9
 
const uint8_t kCarrierAc64TimerMin = 1
 
const uint8_t kCarrierAc64OnTimerOffset
 
const uint8_t kCarrierAc64OffTimerOffset
 
-

Detailed Description

-

Variable Documentation

- -

◆ kCarrierAc64ChecksumOffset

- -
-
- - - - -
const uint8_t kCarrierAc64ChecksumOffset = 16
-
- -
-
- -

◆ kCarrierAc64ChecksumSize

- -
-
- - - - -
const uint8_t kCarrierAc64ChecksumSize = 4
-
- -
-
- -

◆ kCarrierAc64Cool

- -
-
- - - - -
const uint8_t kCarrierAc64Cool = 0b10
-
- -
-
- -

◆ kCarrierAc64Fan

- -
-
- - - - -
const uint8_t kCarrierAc64Fan = 0b11
-
- -
-
- -

◆ kCarrierAc64FanAuto

- -
-
- - - - -
const uint8_t kCarrierAc64FanAuto = 0b00
-
- -
-
- -

◆ kCarrierAc64FanHigh

- -
-
- - - - -
const uint8_t kCarrierAc64FanHigh = 0b11
-
- -
-
- -

◆ kCarrierAc64FanLow

- -
-
- - - - -
const uint8_t kCarrierAc64FanLow = 0b01
-
- -
-
- -

◆ kCarrierAc64FanMedium

- -
-
- - - - -
const uint8_t kCarrierAc64FanMedium = 0b10
-
- -
-
- -

◆ kCarrierAc64FanOffset

- -
-
- - - - -
const uint8_t kCarrierAc64FanOffset
-
-
- -

◆ kCarrierAc64FanSize

- -
-
- - - - -
const uint8_t kCarrierAc64FanSize = 2
-
- -
-
- -

◆ kCarrierAc64Heat

- -
-
- - - - -
const uint8_t kCarrierAc64Heat = 0b01
-
- -
-
- -

◆ kCarrierAc64MaxTemp

- -
-
- - - - -
const uint8_t kCarrierAc64MaxTemp = 30
-
- -
-
- -

◆ kCarrierAc64MinTemp

- -
-
- - - - -
const uint8_t kCarrierAc64MinTemp = 16
-
- -
-
- -

◆ kCarrierAc64ModeOffset

- -
-
- - - - -
const uint8_t kCarrierAc64ModeOffset
-
-
- -

◆ kCarrierAc64ModeSize

- -
-
- - - - -
const uint8_t kCarrierAc64ModeSize = 2
-
- -
-
- -

◆ kCarrierAc64OffTimerEnableOffset

- -
-
- - - - -
const uint8_t kCarrierAc64OffTimerEnableOffset
-
-Initial value: -
-
- -

◆ kCarrierAc64OffTimerOffset

- -
-
- - - - -
const uint8_t kCarrierAc64OffTimerOffset
-
-Initial value: -
-
- -

◆ kCarrierAc64OnTimerEnableOffset

- -
-
- - - - -
const uint8_t kCarrierAc64OnTimerEnableOffset
-
-Initial value: -
-
- -

◆ kCarrierAc64OnTimerOffset

- -
-
- - - - -
const uint8_t kCarrierAc64OnTimerOffset
-
-Initial value: -
-
- -

◆ kCarrierAc64PowerOffset

- -
-
- - - - -
const uint8_t kCarrierAc64PowerOffset = kCarrierAc64SwingVOffset + 6 + 1
-
- -
-
- -

◆ kCarrierAc64SleepOffset

- -
-
- - - - -
const uint8_t kCarrierAc64SleepOffset
-
-Initial value: -
-
- -

◆ kCarrierAc64SwingVOffset

- -
-
- - - - -
const uint8_t kCarrierAc64SwingVOffset
-
-Initial value: -
-
- -

◆ kCarrierAc64TempOffset

- -
-
- - - - -
const uint8_t kCarrierAc64TempOffset
-
-Initial value: -
-
- -

◆ kCarrierAc64TempSize

- -
-
- - - - -
const uint8_t kCarrierAc64TempSize = 4
-
- -
-
- -

◆ kCarrierAc64TimerMax

- -
-
- - - - -
const uint8_t kCarrierAc64TimerMax = 9
-
- -
-
- -

◆ kCarrierAc64TimerMin

- -
-
- - - - -
const uint8_t kCarrierAc64TimerMin = 1
-
- -
-
- -

◆ kCarrierAc64TimerSize

- -
-
- - - - -
const uint8_t kCarrierAc64TimerSize = 4
-
- -
-
-
-
const uint8_t kCarrierAc64SleepOffset
Definition: ir_Carrier.h:60
-
const uint8_t kCarrierAc64FanSize
Definition: ir_Carrier.h:43
-
const uint8_t kCarrierAc64OnTimerEnableOffset
Definition: ir_Carrier.h:58
-
const uint8_t kCarrierAc64OnTimerOffset
Definition: ir_Carrier.h:65
-
const uint8_t kCarrierAc64OffTimerEnableOffset
Definition: ir_Carrier.h:56
-
const uint8_t kCarrierAc64TimerSize
Definition: ir_Carrier.h:62
-
const uint8_t kCarrierAc64ChecksumSize
Definition: ir_Carrier.h:34
-
const uint8_t kCarrierAc64ModeOffset
Definition: ir_Carrier.h:35
-
const uint8_t kCarrierAc64PowerOffset
Definition: ir_Carrier.h:55
-
const uint8_t kCarrierAc64ModeSize
Definition: ir_Carrier.h:37
-
const uint8_t kCarrierAc64TempOffset
Definition: ir_Carrier.h:48
-
const uint8_t kCarrierAc64TempSize
Definition: ir_Carrier.h:50
-
const uint8_t kCarrierAc64ChecksumOffset
Definition: ir_Carrier.h:33
-
const uint8_t kCarrierAc64FanOffset
Definition: ir_Carrier.h:41
- - - - diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/ir__Delonghi_8h.html b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/ir__Delonghi_8h.html deleted file mode 100644 index 4a6219b46..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/ir__Delonghi_8h.html +++ /dev/null @@ -1,695 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Delonghi.h File Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
ir_Delonghi.h File Reference
-
-
- -

Delonghi A/C. -More...

- -

Go to the source code of this file.

- - - - - -

-Classes

class  IRDelonghiAc
 Class for handling detailed Delonghi A/C messages. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Variables

const uint8_t kDelonghiAcTempOffset = 8
 
const uint8_t kDelonghiAcTempSize = 5
 
const uint8_t kDelonghiAcTempMinC = 18
 
const uint8_t kDelonghiAcTempMaxC = 32
 
const uint8_t kDelonghiAcTempMinF = 64
 
const uint8_t kDelonghiAcTempMaxF = 90
 
const uint8_t kDelonghiAcTempAutoDryMode = 0
 
const uint8_t kDelonghiAcTempFanMode = 0b00110
 
const uint8_t kDelonghiAcFanOffset
 
const uint8_t kDelonghiAcFanSize = 2
 
const uint8_t kDelonghiAcFanAuto = 0b00
 
const uint8_t kDelonghiAcFanHigh = 0b01
 
const uint8_t kDelonghiAcFanMedium = 0b10
 
const uint8_t kDelonghiAcFanLow = 0b11
 
const uint8_t kDelonghiAcTempUnitBit
 
const uint8_t kDelonghiAcPowerBit = kDelonghiAcTempUnitBit + 1
 
const uint8_t kDelonghiAcModeOffset = kDelonghiAcPowerBit + 1
 
const uint8_t kDelonghiAcModeSize = 3
 
const uint8_t kDelonghiAcCool = 0b000
 
const uint8_t kDelonghiAcDry = 0b001
 
const uint8_t kDelonghiAcFan = 0b010
 
const uint8_t kDelonghiAcAuto = 0b100
 
const uint8_t kDelonghiAcBoostBit
 
const uint8_t kDelonghiAcSleepBit = kDelonghiAcBoostBit + 1
 
const uint8_t kDelonghiAcOnTimerEnableBit = kDelonghiAcSleepBit + 3
 
const uint8_t kDelonghiAcHoursSize = 5
 
const uint8_t kDelonghiAcMinsSize = 6
 
const uint16_t kDelonghiAcTimerMax = 23 * 60 + 59
 
const uint8_t kDelonghiAcOnTimerHoursOffset
 
const uint8_t kDelonghiAcOnTimerMinsOffset
 
const uint8_t kDelonghiAcOffTimerEnableBit
 
const uint8_t kDelonghiAcOffTimerHoursOffset
 
const uint8_t kDelonghiAcOffTimerMinsOffset
 
const uint8_t kDelonghiAcChecksumOffset
 
const uint8_t kDelonghiAcChecksumSize = 8
 
-

Detailed Description

-

Delonghi A/C.

-
Note
Kudos to TheMaxxz For the breakdown and mapping of the bit values.
-
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1096
-

Variable Documentation

- -

◆ kDelonghiAcAuto

- -
-
- - - - -
const uint8_t kDelonghiAcAuto = 0b100
-
- -
-
- -

◆ kDelonghiAcBoostBit

- -
-
- - - - -
const uint8_t kDelonghiAcBoostBit
-
-Initial value: -
-
- -

◆ kDelonghiAcChecksumOffset

- -
-
- - - - -
const uint8_t kDelonghiAcChecksumOffset
-
-
- -

◆ kDelonghiAcChecksumSize

- -
-
- - - - -
const uint8_t kDelonghiAcChecksumSize = 8
-
- -
-
- -

◆ kDelonghiAcCool

- -
-
- - - - -
const uint8_t kDelonghiAcCool = 0b000
-
- -
-
- -

◆ kDelonghiAcDry

- -
-
- - - - -
const uint8_t kDelonghiAcDry = 0b001
-
- -
-
- -

◆ kDelonghiAcFan

- -
-
- - - - -
const uint8_t kDelonghiAcFan = 0b010
-
- -
-
- -

◆ kDelonghiAcFanAuto

- -
-
- - - - -
const uint8_t kDelonghiAcFanAuto = 0b00
-
- -
-
- -

◆ kDelonghiAcFanHigh

- -
-
- - - - -
const uint8_t kDelonghiAcFanHigh = 0b01
-
- -
-
- -

◆ kDelonghiAcFanLow

- -
-
- - - - -
const uint8_t kDelonghiAcFanLow = 0b11
-
- -
-
- -

◆ kDelonghiAcFanMedium

- -
-
- - - - -
const uint8_t kDelonghiAcFanMedium = 0b10
-
- -
-
- -

◆ kDelonghiAcFanOffset

- -
-
- - - - -
const uint8_t kDelonghiAcFanOffset
-
-Initial value: -
-
- -

◆ kDelonghiAcFanSize

- -
-
- - - - -
const uint8_t kDelonghiAcFanSize = 2
-
- -
-
- -

◆ kDelonghiAcHoursSize

- -
-
- - - - -
const uint8_t kDelonghiAcHoursSize = 5
-
- -
-
- -

◆ kDelonghiAcMinsSize

- -
-
- - - - -
const uint8_t kDelonghiAcMinsSize = 6
-
- -
-
- -

◆ kDelonghiAcModeOffset

- -
-
- - - - -
const uint8_t kDelonghiAcModeOffset = kDelonghiAcPowerBit + 1
-
- -
-
- -

◆ kDelonghiAcModeSize

- -
-
- - - - -
const uint8_t kDelonghiAcModeSize = 3
-
- -
-
- -

◆ kDelonghiAcOffTimerEnableBit

- -
-
- - - - -
const uint8_t kDelonghiAcOffTimerEnableBit
-
-
- -

◆ kDelonghiAcOffTimerHoursOffset

- -
-
- - - - -
const uint8_t kDelonghiAcOffTimerHoursOffset
-
-Initial value: -
-
- -

◆ kDelonghiAcOffTimerMinsOffset

- -
-
- - - - -
const uint8_t kDelonghiAcOffTimerMinsOffset
-
-
- -

◆ kDelonghiAcOnTimerEnableBit

- -
-
- - - - -
const uint8_t kDelonghiAcOnTimerEnableBit = kDelonghiAcSleepBit + 3
-
- -
-
- -

◆ kDelonghiAcOnTimerHoursOffset

- -
-
- - - - -
const uint8_t kDelonghiAcOnTimerHoursOffset
-
-Initial value: -
-
- -

◆ kDelonghiAcOnTimerMinsOffset

- -
-
- - - - -
const uint8_t kDelonghiAcOnTimerMinsOffset
-
-
- -

◆ kDelonghiAcPowerBit

- -
-
- - - - -
const uint8_t kDelonghiAcPowerBit = kDelonghiAcTempUnitBit + 1
-
- -
-
- -

◆ kDelonghiAcSleepBit

- -
-
- - - - -
const uint8_t kDelonghiAcSleepBit = kDelonghiAcBoostBit + 1
-
- -
-
- -

◆ kDelonghiAcTempAutoDryMode

- -
-
- - - - -
const uint8_t kDelonghiAcTempAutoDryMode = 0
-
- -
-
- -

◆ kDelonghiAcTempFanMode

- -
-
- - - - -
const uint8_t kDelonghiAcTempFanMode = 0b00110
-
- -
-
- -

◆ kDelonghiAcTempMaxC

- -
-
- - - - -
const uint8_t kDelonghiAcTempMaxC = 32
-
- -
-
- -

◆ kDelonghiAcTempMaxF

- -
-
- - - - -
const uint8_t kDelonghiAcTempMaxF = 90
-
- -
-
- -

◆ kDelonghiAcTempMinC

- -
-
- - - - -
const uint8_t kDelonghiAcTempMinC = 18
-
- -
-
- -

◆ kDelonghiAcTempMinF

- -
-
- - - - -
const uint8_t kDelonghiAcTempMinF = 64
-
- -
-
- -

◆ kDelonghiAcTempOffset

- -
-
- - - - -
const uint8_t kDelonghiAcTempOffset = 8
-
- -
-
- -

◆ kDelonghiAcTempSize

- -
-
- - - - -
const uint8_t kDelonghiAcTempSize = 5
-
- -
-
- -

◆ kDelonghiAcTempUnitBit

- -
-
- - - - -
const uint8_t kDelonghiAcTempUnitBit
-
-Initial value: -
-
- -

◆ kDelonghiAcTimerMax

- -
-
- - - - -
const uint16_t kDelonghiAcTimerMax = 23 * 60 + 59
-
- -
-
-
-
const uint8_t kDelonghiAcTempOffset
Definition: ir_Delonghi.h:50
-
const uint8_t kDelonghiAcOnTimerHoursOffset
Definition: ir_Delonghi.h:82
-
const uint8_t kDelonghiAcModeOffset
Definition: ir_Delonghi.h:68
-
const uint8_t kDelonghiAcOnTimerMinsOffset
Definition: ir_Delonghi.h:84
-
const uint8_t kDelonghiAcModeSize
Definition: ir_Delonghi.h:69
-
const uint8_t kDelonghiAcTempSize
Definition: ir_Delonghi.h:51
-
const uint8_t kDelonghiAcOffTimerMinsOffset
Definition: ir_Delonghi.h:91
-
const uint8_t kDelonghiAcFanSize
Definition: ir_Delonghi.h:60
-
const uint8_t kDelonghiAcOnTimerEnableBit
Definition: ir_Delonghi.h:78
-
const uint8_t kDelonghiAcMinsSize
Definition: ir_Delonghi.h:80
-
const uint8_t kDelonghiAcOffTimerEnableBit
Definition: ir_Delonghi.h:87
-
const uint8_t kDelonghiAcHoursSize
Definition: ir_Delonghi.h:79
-
const uint8_t kDelonghiAcFanOffset
Definition: ir_Delonghi.h:58
-
const uint8_t kDelonghiAcOffTimerHoursOffset
Definition: ir_Delonghi.h:89
- - - - diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_0.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_0.js deleted file mode 100644 index 0789b4379..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_0.js +++ /dev/null @@ -1,70 +0,0 @@ -var searchData= -[ - ['_5f_0',['_',['../classIRAirwellAc.html#af5675d200cdc571911162ecf8c74fdc0',1,'IRAirwellAc::_()'],['../classIRGreeAC.html#a9c048fe707312bdfd30c29fe8d6ab4b5',1,'IRGreeAC::_()'],['../classIRHaierAC.html#a523b6e63f16c5f817d82bcdbf351d7e7',1,'IRHaierAC::_()'],['../classIRHaierACYRW02.html#aaa31ae12544758f57f0dcd11b20fe285',1,'IRHaierACYRW02::_()'],['../classIRMideaAC.html#a43e44a594e00ed14c9b6aca4a862ea9e',1,'IRMideaAC::_()'],['../classIRVoltas.html#a251065338907253521a12e5e0f8aeb26',1,'IRVoltas::_()']]], - ['_5f_5fpad0_5f_5f_1',['__pad0__',['../unionAirwellProtocol.html#ac8190704f390caf41b76dc0ee3377056',1,'AirwellProtocol::__pad0__()'],['../unionGreeProtocol.html#a06baff7b648875f337ea4d099f8ba73d',1,'GreeProtocol::__pad0__()'],['../unionHaierProtocol.html#a2648f0ff2bc5a6481e9fd2017408a590',1,'HaierProtocol::__pad0__()'],['../unionHaierYRW02Protocol.html#a48fb1f12d6902568da902b5de7e1bfef',1,'HaierYRW02Protocol::__pad0__()'],['../unionMideaProtocol.html#ab48c834ee5a37297d04e71e6e32468d2',1,'MideaProtocol::__pad0__()'],['../unionVoltasProtocol.html#a6a9f9ff0c3c7b691ed78738138467afa',1,'VoltasProtocol::__pad0__()']]], - ['_5f_5fpad10_5f_5f_2',['__pad10__',['../unionHaierYRW02Protocol.html#abc9d14dbc6ab798a389244499fad7d96',1,'HaierYRW02Protocol']]], - ['_5f_5fpad11_5f_5f_3',['__pad11__',['../unionHaierYRW02Protocol.html#a033dacb9a8b936c0187e86c585431198',1,'HaierYRW02Protocol']]], - ['_5f_5fpad12_5f_5f_4',['__pad12__',['../unionHaierYRW02Protocol.html#a3df5d93e5f676ff44b32227a44be98ac',1,'HaierYRW02Protocol']]], - ['_5f_5fpad1_5f_5f_5',['__pad1__',['../unionAirwellProtocol.html#ab2a20785c417317ac37cd1b5ef795249',1,'AirwellProtocol::__pad1__()'],['../unionGreeProtocol.html#a094751746e21e5ae70ff7ace3b84c75d',1,'GreeProtocol::__pad1__()'],['../unionHaierProtocol.html#a8e91589ca0e2db529f73e3f8ecbb00a0',1,'HaierProtocol::__pad1__()'],['../unionHaierYRW02Protocol.html#aa20f4bbeb35dfa6afe0af4c7ea1cc498',1,'HaierYRW02Protocol::__pad1__()'],['../unionMideaProtocol.html#a3351e3af6d3f214536e593c450fa0915',1,'MideaProtocol::__pad1__()'],['../unionVoltasProtocol.html#a80c4eeb8eea30866ef991cab330f6def',1,'VoltasProtocol::__pad1__()']]], - ['_5f_5fpad2_5f_5f_6',['__pad2__',['../unionAirwellProtocol.html#a3ba38aea4ada26e1936478d737e2080a',1,'AirwellProtocol::__pad2__()'],['../unionGreeProtocol.html#a715441faac2bdd5dc37d6a3efcc99c4f',1,'GreeProtocol::__pad2__()'],['../unionHaierYRW02Protocol.html#a51178359e3860a50dbf53bda14b5a88c',1,'HaierYRW02Protocol::__pad2__()'],['../unionMideaProtocol.html#ab638086cc0b8d25fba57278c7ba881cb',1,'MideaProtocol::__pad2__()'],['../unionVoltasProtocol.html#a4c2798df803074bcde8ddf6c7e855d91',1,'VoltasProtocol::__pad2__()']]], - ['_5f_5fpad3_5f_5f_7',['__pad3__',['../unionGreeProtocol.html#a7291d729f3b5638cb160afbda37baba1',1,'GreeProtocol::__pad3__()'],['../unionHaierYRW02Protocol.html#ad2c1066a2d796f49424feb2612df3d98',1,'HaierYRW02Protocol::__pad3__()'],['../unionMideaProtocol.html#ac0d1346479086522065ec71ea0b87ad2',1,'MideaProtocol::__pad3__()'],['../unionVoltasProtocol.html#aa63b5dd18bc7376a712e7dd16d594525',1,'VoltasProtocol::__pad3__()']]], - ['_5f_5fpad4_5f_5f_8',['__pad4__',['../unionGreeProtocol.html#a6caf58eb68a83c0686dbd65d7a35cb58',1,'GreeProtocol::__pad4__()'],['../unionHaierYRW02Protocol.html#a62e17795ebcaea82715972f98d5408ca',1,'HaierYRW02Protocol::__pad4__()'],['../unionMideaProtocol.html#addde95b2535612df3ef2183998cf7ca6',1,'MideaProtocol::__pad4__()'],['../unionVoltasProtocol.html#ab0ec8c8b4f98d8ad2185259a1013f20b',1,'VoltasProtocol::__pad4__()']]], - ['_5f_5fpad5_5f_5f_9',['__pad5__',['../unionHaierYRW02Protocol.html#a7405f45e3dfb5230a6e531c3ea5bd2cc',1,'HaierYRW02Protocol::__pad5__()'],['../unionVoltasProtocol.html#af25903098b89acf7d2b6ebc08eea3ce5',1,'VoltasProtocol::__pad5__()']]], - ['_5f_5fpad6_5f_5f_10',['__pad6__',['../unionHaierYRW02Protocol.html#a03595ed00f070b0eecc647f426c2c9b1',1,'HaierYRW02Protocol::__pad6__()'],['../unionVoltasProtocol.html#a1fc2d4c2b5792d53d364e61b84ca1fb0',1,'VoltasProtocol::__pad6__()']]], - ['_5f_5fpad7_5f_5f_11',['__pad7__',['../unionHaierYRW02Protocol.html#a13f95461887012ca8a0d27ce71c65cb6',1,'HaierYRW02Protocol']]], - ['_5f_5fpad8_5f_5f_12',['__pad8__',['../unionHaierYRW02Protocol.html#ab0640cdf0ae186ef0a75699bb2ab2247',1,'HaierYRW02Protocol']]], - ['_5f_5fpad9_5f_5f_13',['__pad9__',['../unionHaierYRW02Protocol.html#ad5c197a23df2a768d022946347d765fe',1,'HaierYRW02Protocol']]], - ['_5fbackupstate_14',['_backupState',['../classIRToshibaAC.html#a108c23cb859a64228166e5385295a1e5',1,'IRToshibaAC']]], - ['_5fcancelofftimer_15',['_cancelOffTimer',['../classIRCarrierAc64.html#a4a0fdf34836b1c954b27c9b242324679',1,'IRCarrierAc64']]], - ['_5fcancelontimer_16',['_cancelOnTimer',['../classIRCarrierAc64.html#a43e7be5a1a6fe2dbfe245e99d2205779',1,'IRCarrierAc64']]], - ['_5fclean_17',['_clean',['../classIRFujitsuAC.html#acf7808cfeb6e15cea1d5ee8196075e04',1,'IRFujitsuAC']]], - ['_5fcmd_18',['_cmd',['../classIRFujitsuAC.html#a5e66bc4a24b892525cfa02bb4d741cbf',1,'IRFujitsuAC']]], - ['_5fdelaymicroseconds_19',['_delayMicroseconds',['../classIRsend.html#a61ceb32aa53f538b93377b10e58b45c9',1,'IRsend']]], - ['_5fdesiredtemp_20',['_desiredtemp',['../classIRWhirlpoolAc.html#aee17cfa10f19e0df992b25cff58e9613',1,'IRWhirlpoolAc']]], - ['_5fdutycycle_21',['_dutycycle',['../classIRsend.html#a602e96e8cdbd6af41d288d905043e51f',1,'IRsend']]], - ['_5feconotoggle_22',['_EconoToggle',['../classIRMideaAC.html#a30f184751948b4412da46577578b625a',1,'IRMideaAC']]], - ['_5ffan_23',['_fan',['../classIRSharpAc.html#ad0f4e6025f2952c477bbd3f72a64d2fe',1,'IRSharpAc']]], - ['_5ffanspeed_24',['_fanSpeed',['../classIRFujitsuAC.html#a537f02328039c044f7152bf0a61a05c9',1,'IRFujitsuAC']]], - ['_5ffilter_25',['_filter',['../classIRFujitsuAC.html#a4a2f96f4f1cd6650d48ebc3b13fd561c',1,'IRFujitsuAC']]], - ['_5fforcepower_26',['_forcepower',['../classIRSamsungAc.html#a022c96bfab671b1d0b6b5b331be31993',1,'IRSamsungAc']]], - ['_5ffreq_5funittest_27',['_freq_unittest',['../classIRsend.html#a2caec2f35ecdb890b1e34d9eb3642363',1,'IRsend']]], - ['_5fgettemp_28',['_getTemp',['../classIRSanyoAc.html#a958a4d66a2e17dccefaedad45787355e',1,'IRSanyoAc']]], - ['_5fgettime_29',['_getTime',['../classIRPanasonicAc.html#ab0a592b759daf90be548ac69ae99f40f',1,'IRPanasonicAc']]], - ['_5fgettimer_30',['_getTimer',['../classIRCoronaAc.html#a419053fbf9ef27e937db0ff7519927bd',1,'IRCoronaAc::_getTimer()'],['../classIRVestelAc.html#ad3f095d248ad3c84a777ed9f2d3b001e',1,'IRVestelAc::_getTimer()']]], - ['_5finverted_31',['_inverted',['../classIRac.html#a9cfaa0b92819f06b3aa5b3e9e48b9d51',1,'IRac']]], - ['_5firsend_32',['_irsend',['../classIRAirwellAc.html#a57a01d6e65f6fa1127f8d3dc86ff8071',1,'IRAirwellAc::_irsend()'],['../classIRAmcorAc.html#a6245bb51fa206031c3348e3eb6cb096d',1,'IRAmcorAc::_irsend()'],['../classIRArgoAC.html#a1abd8d958c3e153c4f2aaf7a3716414e',1,'IRArgoAC::_irsend()'],['../classIRCarrierAc64.html#a17270f2b1d6cab828e2a51fc23b36437',1,'IRCarrierAc64::_irsend()'],['../classIRCoolixAC.html#a6c7033e72fb860bca600ba6ea6e7afef',1,'IRCoolixAC::_irsend()'],['../classIRCoronaAc.html#afba5a3c3cff3859303a91d136ad00b66',1,'IRCoronaAc::_irsend()'],['../classIRDaikinESP.html#a2f5a8cb170d54f06bfa3eeb9b8ff838e',1,'IRDaikinESP::_irsend()'],['../classIRDaikin2.html#aa8ba00ae2c09af098146452164c4cb3b',1,'IRDaikin2::_irsend()'],['../classIRDaikin216.html#ac0e88b92a5c75138ce5b3a31f0c09be2',1,'IRDaikin216::_irsend()'],['../classIRDaikin160.html#a3094f35b359d8774a95dd3896c0e45e4',1,'IRDaikin160::_irsend()'],['../classIRDaikin176.html#a24f7022eb1c1936f5ee95ac0d732584c',1,'IRDaikin176::_irsend()'],['../classIRDaikin128.html#a1f155cc34e6c21d206962239d0135d1b',1,'IRDaikin128::_irsend()'],['../classIRDaikin152.html#a9b203215156d48dabac0fa8fd19dc613',1,'IRDaikin152::_irsend()'],['../classIRDaikin64.html#a6eb57b0eb12dab12bd9cf2fe4fded2c7',1,'IRDaikin64::_irsend()'],['../classIRDelonghiAc.html#a8cbe8b6857b7492c108118b4eda3ecb0',1,'IRDelonghiAc::_irsend()'],['../classIRElectraAc.html#af8732b31f2a4421226220dd8a4a4f985',1,'IRElectraAc::_irsend()'],['../classIRFujitsuAC.html#a2b7fec218b3530b06ce8b49f472e9595',1,'IRFujitsuAC::_irsend()'],['../classIRGoodweatherAc.html#acf606eb9e024c99407138dbd058e98d9',1,'IRGoodweatherAc::_irsend()'],['../classIRGreeAC.html#a36390655badf0ad5b5809499a8634f70',1,'IRGreeAC::_irsend()'],['../classIRHaierAC.html#aec69643fe633a57d635754690225fdd1',1,'IRHaierAC::_irsend()'],['../classIRHaierACYRW02.html#a24dd00bfa5e062c5c7f459bcd60213b7',1,'IRHaierACYRW02::_irsend()'],['../classIRHitachiAc.html#a0e296fa54cc4c56e16c6fc58c7ad827f',1,'IRHitachiAc::_irsend()'],['../classIRHitachiAc1.html#a61ad6289fc3719a850299788e642b98b',1,'IRHitachiAc1::_irsend()'],['../classIRHitachiAc424.html#a39157a1bda46304429570be2880c6ec4',1,'IRHitachiAc424::_irsend()'],['../classIRHitachiAc3.html#a8dc3b713e29f3ea96a106868451ba728',1,'IRHitachiAc3::_irsend()'],['../classIRKelvinatorAC.html#ae3571bf6de20e47f81ad1da8f1d13118',1,'IRKelvinatorAC::_irsend()'],['../classIRLgAc.html#a779f321b65db6ad05ab3e578b38cf093',1,'IRLgAc::_irsend()'],['../classIRMideaAC.html#ae2b6068355ecdc360c4c2ca2fd8d921b',1,'IRMideaAC::_irsend()'],['../classIRMitsubishiAC.html#a6753b676690f35bc8ba73504fdc34946',1,'IRMitsubishiAC::_irsend()'],['../classIRMitsubishi136.html#acd14c7bb6b26d0603ee552a000e16d43',1,'IRMitsubishi136::_irsend()'],['../classIRMitsubishi112.html#af858d640f9b2fca053287f280c8a27c0',1,'IRMitsubishi112::_irsend()'],['../classIRMitsubishiHeavy152Ac.html#a1ebd4c8b06d64e0944358156f58d414e',1,'IRMitsubishiHeavy152Ac::_irsend()'],['../classIRMitsubishiHeavy88Ac.html#a1e999c9ee028d35c03cd6b4751bcb8be',1,'IRMitsubishiHeavy88Ac::_irsend()'],['../classIRNeoclimaAc.html#a43e42b1c7e68e5a85ed10454c6210be5',1,'IRNeoclimaAc::_irsend()'],['../classIRPanasonicAc.html#a065dcc65ef3dbb8f2384f883fb97d102',1,'IRPanasonicAc::_irsend()'],['../classIRSamsungAc.html#a5815878dbebe512c41c26924cf9f5eeb',1,'IRSamsungAc::_irsend()'],['../classIRSanyoAc.html#a5dc78b02c5d10ac717542b67b65f15d6',1,'IRSanyoAc::_irsend()'],['../classIRSharpAc.html#a10ee598c31c0f8179ace953ed88e37c6',1,'IRSharpAc::_irsend()'],['../classIRTcl112Ac.html#a3f10e710a44c3a80f4f9ed5247b28058',1,'IRTcl112Ac::_irsend()'],['../classIRTecoAc.html#a283ff8b73ef2998f0668d0a03cba0938',1,'IRTecoAc::_irsend()'],['../classIRToshibaAC.html#a694609136a9cbdb9af5f8bb98411c2eb',1,'IRToshibaAC::_irsend()'],['../classIRTrotecESP.html#a1faa968fc2651dc1774160950e97a74e',1,'IRTrotecESP::_irsend()'],['../classIRVestelAc.html#a56d35fc5d39c97b4c6f2decf176e2cae',1,'IRVestelAc::_irsend()'],['../classIRVoltas.html#a09225bcf0cdff72f0fe35a88a91a88ad',1,'IRVoltas::_irsend()'],['../classIRWhirlpoolAc.html#af4fdac2382048e2776c787bebd482e9e',1,'IRWhirlpoolAc::_irsend()']]], - ['_5firtimer_5funittest_5fnow_33',['_IRtimer_unittest_now',['../IRtimer_8cpp.html#a4ac531aa761a28d68edbc12967038180',1,'IRtimer.cpp']]], - ['_5flastsentpowerstate_34',['_lastsentpowerstate',['../classIRSamsungAc.html#af1c6712dc05a451e815675abe972d9b4',1,'IRSamsungAc']]], - ['_5fmatchgeneric_35',['_matchGeneric',['../classIRrecv.html#af0b300fe6fdff58324525e8208be3024',1,'IRrecv']]], - ['_5fmode_36',['_mode',['../classIRFujitsuAC.html#a1b22f3bb3dc43e370aabad5b6efd7ca5',1,'IRFujitsuAC::_mode()'],['../classIRSharpAc.html#a169d5636aead556234dc301729050619',1,'IRSharpAc::_mode()']]], - ['_5fmodel_37',['_model',['../classIRFujitsuAC.html#a181c71dbd46ceabdcfe08448ee32bba7',1,'IRFujitsuAC::_model()'],['../classIRGreeAC.html#ae357bf1611f349e2686f4f46c2581c47',1,'IRGreeAC::_model()'],['../classIRVoltas.html#a01270b3d5e2b0d85a3ee860edb5c3232',1,'IRVoltas::_model()']]], - ['_5fmodulation_38',['_modulation',['../classIRac.html#acc6b7380f11c38d13fffa99ca2189a9b',1,'IRac']]], - ['_5foutsidequiet_39',['_outsideQuiet',['../classIRFujitsuAC.html#a20a794245e0bc44607faf7927a285672',1,'IRFujitsuAC']]], - ['_5fpin_40',['_pin',['../classIRac.html#aba78a2510d8cdcaf4c601e8b0574ae6c',1,'IRac']]], - ['_5fprev_41',['_prev',['../classIRac.html#a8c63dc78c49f3714887fea0feefffd44',1,'IRac']]], - ['_5fprevioustemp_42',['_previoustemp',['../classIRHitachiAc.html#a1368dcd7f4c0049822fd2b9b1e0acb5e',1,'IRHitachiAc::_previoustemp()'],['../classIRHitachiAc424.html#aba6c17936775e268744af23a4a533f92',1,'IRHitachiAc424::_previoustemp()']]], - ['_5fprotocol_43',['_protocol',['../classIRLgAc.html#a9bd32e865a7358bbf32830d888e2786a',1,'IRLgAc']]], - ['_5frestorestate_44',['_restoreState',['../classIRToshibaAC.html#a23fb190770159f8f1e9bf64df22e8a26',1,'IRToshibaAC']]], - ['_5fsaved_5ftemp_45',['_saved_temp',['../classIRDaikin176.html#a8f1d6c765bf09c1a3dc9678c3939a5be',1,'IRDaikin176::_saved_temp()'],['../classIRDelonghiAc.html#a724aa5748e714a7f0109a2f3502cd1d1',1,'IRDelonghiAc::_saved_temp()']]], - ['_5fsaved_5ftemp_5funits_46',['_saved_temp_units',['../classIRDelonghiAc.html#a14fba6ccbc25da76744d28e7a40c385b',1,'IRDelonghiAc']]], - ['_5fsend_5fswing_47',['_send_swing',['../classIRToshibaAC.html#a3c0873667deefce7b13a051910d13046',1,'IRToshibaAC']]], - ['_5fsendsony_48',['_sendSony',['../classIRsend.html#a21352b4499f976872a74bae36ea10338',1,'IRsend']]], - ['_5fsetmode_49',['_setMode',['../classIRWhirlpoolAc.html#a60fd8da35d6e0137711e114a5307d664',1,'IRWhirlpoolAc']]], - ['_5fsetpower_50',['_setPower',['../classIRCoronaAc.html#a4b05b7e34e0f2e66f59ff279c6970478',1,'IRCoronaAc']]], - ['_5fsettemp_51',['_setTemp',['../classIRLgAc.html#a39aca9861608211c8e74c89a7ccc97cd',1,'IRLgAc::_setTemp()'],['../classIRSanyoAc.html#a4c8c0606f6bb82b0c55b179c9f4a7bda',1,'IRSanyoAc::_setTemp()'],['../classIRWhirlpoolAc.html#abb221e09077efd96304f84e8ca130458',1,'IRWhirlpoolAc::_setTemp()']]], - ['_5fsettime_52',['_setTime',['../classIRPanasonicAc.html#a51e306dd7a3e4d580ed5396fcd166141',1,'IRPanasonicAc']]], - ['_5fsettimer_53',['_setTimer',['../classIRCoronaAc.html#a0ea9319987de7cb7f3dcb9fbefb60a2c',1,'IRCoronaAc::_setTimer()'],['../classIRVestelAc.html#a726178a16458c84d031aec07355d0dd2',1,'IRVestelAc::_setTimer()']]], - ['_5fstate_5flength_54',['_state_length',['../classIRFujitsuAC.html#aea1819d0041f305e2c990f6f3eced865',1,'IRFujitsuAC']]], - ['_5fstate_5flength_5fshort_55',['_state_length_short',['../classIRFujitsuAC.html#a7093cf32cd2e856ff692aebc732c1d50',1,'IRFujitsuAC']]], - ['_5fswing_5fmode_56',['_swing_mode',['../classIRToshibaAC.html#a3d782a316cbadf2128a1392feda5c21b',1,'IRToshibaAC']]], - ['_5fswingh_57',['_swingh',['../classIRPanasonicAc.html#ad0300ee66bcab38e13724520cb3226f9',1,'IRPanasonicAc']]], - ['_5fswingmode_58',['_swingMode',['../classIRFujitsuAC.html#a74a00fbba55b457b68f61481ce9ffbaa',1,'IRFujitsuAC']]], - ['_5fswingvtoggle_59',['_SwingVToggle',['../classIRMideaAC.html#adb4318940487aea09116fe6b9f061470',1,'IRMideaAC']]], - ['_5ftemp_60',['_temp',['../classIRFujitsuAC.html#afcff35df74885c63651134ba85359694',1,'IRFujitsuAC::_temp()'],['../classIRLgAc.html#a1eeb727ee96c26b784a607aabd4577c9',1,'IRLgAc::_temp()'],['../classIRPanasonicAc.html#af6511e3c9745ff6750dc6fc3fdda21b3',1,'IRPanasonicAc::_temp()'],['../classIRSharpAc.html#a1d0a6274534123133217175920c7cd95',1,'IRSharpAc::_temp()']]], - ['_5ftimer_5fnum_61',['_timer_num',['../classIRrecv.html#aff11c0c20735b16ce411088003607911',1,'IRrecv']]], - ['_5ftimerms_5funittest_5fnow_62',['_TimerMs_unittest_now',['../IRtimer_8cpp.html#aed35ce7fa92ebb856a03f81e756cb2c6',1,'IRtimer.cpp']]], - ['_5ftolerance_63',['_tolerance',['../classIRrecv.html#a0459a65dd31b215713ad66a1e4f3540e',1,'IRrecv']]], - ['_5ftostring_64',['_toString',['../classIRHitachiAc424.html#af7ab654c4eecf770a70399f6b9959db3',1,'IRHitachiAc424']]], - ['_5funknown_5fthreshold_65',['_unknown_threshold',['../classIRrecv.html#adb8cbc5c1cb739f33f5be25b3a6c79bd',1,'IRrecv']]], - ['_5fvalidtolerance_66',['_validTolerance',['../classIRrecv.html#a0b4221970de0d027b5ae99648fa1c003',1,'IRrecv']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_1.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_1.js deleted file mode 100644 index 348d17fad..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_1.js +++ /dev/null @@ -1,24 +0,0 @@ -var searchData= -[ - ['add_67',['add',['../classIRtimer.html#aa8e3ff975ae5468b4727790c828fa032',1,'IRtimer::add()'],['../classTimerMs.html#a77bfc23a029a9172c3dbac03f746b0cb',1,'TimerMs::add()']]], - ['addbooltostring_68',['addBoolToString',['../namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b',1,'irutils']]], - ['adddaytostring_69',['addDayToString',['../namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f',1,'irutils']]], - ['addfantostring_70',['addFanToString',['../namespaceirutils.html#ae023bbabc452173d348c14eac7d86ab4',1,'irutils']]], - ['addinttostring_71',['addIntToString',['../namespaceirutils.html#a772e623c4b60208200e02afbaec66651',1,'irutils']]], - ['addlabeledstring_72',['addLabeledString',['../namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b',1,'irutils']]], - ['addmodeltostring_73',['addModelToString',['../namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367',1,'irutils']]], - ['addmodetostring_74',['addModeToString',['../namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e',1,'irutils']]], - ['address_75',['address',['../classdecode__results.html#a2858c3a5e28eccca95d44aaa87b70e9e',1,'decode_results']]], - ['addtemptostring_76',['addTempToString',['../namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85',1,'irutils']]], - ['airwell_77',['airwell',['../classIRac.html#a26cd62e09250d87b652d35406ebfb159',1,'IRac::airwell()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0cd75c2edaa4c674d679dbb39635990a',1,'AIRWELL(): IRremoteESP8266.h']]], - ['airwellprotocol_78',['AirwellProtocol',['../unionAirwellProtocol.html',1,'']]], - ['aiwa_5frc_5ft501_79',['AIWA_RC_T501',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7dc14b2c4769ef9de663c2e2165d8f75',1,'IRremoteESP8266.h']]], - ['akb75215403_80',['AKB75215403',['../IRsend_8h.html#a50c54713e16502d280723334879dc83ba37d3851f43307f1e1eac46c5fbf3f08a',1,'IRsend.h']]], - ['amcor_81',['amcor',['../classIRac.html#a4bad16621b232572e14fe4a53f678131',1,'IRac::amcor()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1325ba25674d7a99562f15a1b392086b',1,'AMCOR(): IRremoteESP8266.h']]], - ['ardb1_82',['ARDB1',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6f6fcd0be917d91b71c1b80b5446ee5b',1,'IRsend.h']]], - ['argo_83',['argo',['../classIRArgoAC.html#ab607bde051712a57fe9c0a0cf9da20ac',1,'IRArgoAC::argo()'],['../classIRac.html#aa06ee1314529dbf96f4e6f3c28ea6821',1,'IRac::argo()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac9ff1fa84905b54238b16d31197efb72',1,'ARGO(): IRremoteESP8266.h']]], - ['arjw2_84',['ARJW2',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0acbca1f3d199103d8cb9d856b9089cdc4',1,'IRsend.h']]], - ['arrah2e_85',['ARRAH2E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6ccf47af1067e794e02e21f03389297b',1,'IRsend.h']]], - ['arreb1e_86',['ARREB1E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a2443ff6f0181dbc1af275c709d67147a',1,'IRsend.h']]], - ['arry4_87',['ARRY4',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0aee3994c5a4a8447463d67df2cdf5a946',1,'IRsend.h']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_10.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_10.js deleted file mode 100644 index cf79f9eb4..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_10.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['padding_3331',['padding',['../unionmagiquest.html#a28ca4be56c78ef762f87171506dc6e93',1,'magiquest']]], - ['panasonic_3332',['panasonic',['../classIRac.html#af873db2b9735127eb6f079861daed67a',1,'IRac::panasonic()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf87c99938d26a1f77d4f082c070d4660',1,'PANASONIC(): IRremoteESP8266.h']]], - ['panasonic_5fac_3333',['PANASONIC_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada02178d0c70511011d5f381291bb7e491',1,'IRremoteESP8266.h']]], - ['panasonic_5fac_5fremote_5fmodel_5ft_3334',['panasonic_ac_remote_model_t',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6f',1,'IRsend.h']]], - ['periodoffset_3335',['periodOffset',['../classIRsend.html#a1b5180cbf4f88f19fca3f677e1e91b96',1,'IRsend']]], - ['pioneer_3336',['PIONEER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadadf49fef8f6e9740c92af2e25384f7846',1,'IRremoteESP8266.h']]], - ['power_3337',['power',['../structstdAc_1_1state__t.html#ab85d37cc99bbbc4915331369c4ea622e',1,'stdAc::state_t::power()'],['../unionGreeProtocol.html#ab04d1d5bdaf8fb0b7129e210de14a772',1,'GreeProtocol::Power()'],['../unionHaierYRW02Protocol.html#ae87a93806911792662391a671607a760',1,'HaierYRW02Protocol::Power()'],['../unionMideaProtocol.html#a6b534bb5845c3c184ee43b87995cff32',1,'MideaProtocol::Power()'],['../unionVoltasProtocol.html#a554e4bce95426a096f090cc6890f46f2',1,'VoltasProtocol::Power()']]], - ['powerflag_3338',['powerFlag',['../classIRCoolixAC.html#a5984ff64ff14df92291618a647da08f9',1,'IRCoolixAC']]], - ['powertoggle_3339',['PowerToggle',['../unionAirwellProtocol.html#a9a3893a0ec7811202697adeb60d89775',1,'AirwellProtocol']]], - ['prefix_3340',['Prefix',['../unionHaierProtocol.html#a6c15a8e22231dae23ffa8bef78420054',1,'HaierProtocol::Prefix()'],['../unionHaierYRW02Protocol.html#af55185fad3229f2011b5917412ad8c1b',1,'HaierYRW02Protocol::Prefix()']]], - ['prev_5fmode_3341',['prev_mode',['../classIRToshibaAC.html#ac251884741fb8ad8280b55e99c23211e',1,'IRToshibaAC']]], - ['pronto_3342',['PRONTO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5b68c32f80c4afa6e61039843b2d1f97',1,'IRremoteESP8266.h']]], - ['protocol_3343',['protocol',['../structstdAc_1_1state__t.html#af59897778be0e571f77dd11337352c27',1,'stdAc::state_t']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_12.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_12.js deleted file mode 100644 index fbdc67098..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_12.js +++ /dev/null @@ -1,29 +0,0 @@ -var searchData= -[ - ['r_5flt0541_5fhta_5fa_3345',['R_LT0541_HTA_A',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49afed7c9dd67250bb1e72081e5f05b35f8',1,'IRsend.h']]], - ['r_5flt0541_5fhta_5fb_3346',['R_LT0541_HTA_B',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49a03b6e058b4cfeb6719906bc3cd57594f',1,'IRsend.h']]], - ['raw_3347',['raw',['../unionAirwellProtocol.html#a984e1bba5afac9887c2ebb976a38d560',1,'AirwellProtocol::raw()'],['../unionHaierYRW02Protocol.html#aa1607ceff9c90cbb78e446a98eb0fe52',1,'HaierYRW02Protocol::raw()'],['../unionVoltasProtocol.html#aef55de7b215b4dd5d36d0bd7b542a85b',1,'VoltasProtocol::raw()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadabdeded99fe7d3f2773014a9a2cfb73d7',1,'RAW(): IRremoteESP8266.h']]], - ['rawbuf_3348',['rawbuf',['../structirparams__t.html#a6f8a82b51fa206a8cb195e5838aa0cb3',1,'irparams_t::rawbuf()'],['../classdecode__results.html#a19043dc161cd5e0d3dcc82b5a7470e49',1,'decode_results::rawbuf()']]], - ['rawlen_3349',['rawlen',['../structirparams__t.html#a08e83386c65a90038e0d4922f1f6aa84',1,'irparams_t::rawlen()'],['../classdecode__results.html#a913e19fc5032fa1f97cf8afe0fa450ec',1,'decode_results::rawlen()']]], - ['rc5_3350',['RC5',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac3c0a3883a1488209bcd91730ece33b2',1,'IRremoteESP8266.h']]], - ['rc5x_3351',['RC5X',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8a3ac4419806a34ba566bfcbbb0e4f1d',1,'IRremoteESP8266.h']]], - ['rc6_3352',['RC6',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7f7247f15587eb3812846f424b941abe',1,'IRremoteESP8266.h']]], - ['rcmm_3353',['RCMM',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada79204b7ae26be334cebf3ea8268c34ab',1,'IRremoteESP8266.h']]], - ['rcvstate_3354',['rcvstate',['../structirparams__t.html#a63354788dab4569f4092cd05e77f0260',1,'irparams_t']]], - ['readme_2emd_3355',['README.md',['../README_8md.html',1,'']]], - ['recoversavedstate_3356',['recoverSavedState',['../classIRCoolixAC.html#a134cb36681c3fab53074b402bba0a45c',1,'IRCoolixAC']]], - ['recvpin_3357',['recvpin',['../structirparams__t.html#a50da5aa1c42a69b01d50ea688db67d14',1,'irparams_t']]], - ['remote_3358',['remote',['../classIRDaikinESP.html#ac24751c23f6b27cb26dcd51e91c63c9b',1,'IRDaikinESP::remote()'],['../classIRGoodweatherAc.html#af511a0703a4cbc77f5b8a520abf11f2f',1,'IRGoodweatherAc::remote()'],['../classIRSharpAc.html#a411a4db0579ed84b54533dcde153d5da',1,'IRSharpAc::remote()']]], - ['remote_5fstate_3359',['remote_state',['../classIRAmcorAc.html#acef1c3896f03afd5d10d5cbb7ed105ce',1,'IRAmcorAc::remote_state()'],['../classIRCarrierAc64.html#a257272c7cb54f5854e79053c8223a43e',1,'IRCarrierAc64::remote_state()'],['../classIRCoolixAC.html#a03bf575961d4d924275cb16a45edaa46',1,'IRCoolixAC::remote_state()'],['../classIRCoronaAc.html#afcf0b21ac5c438dc560612a785a29864',1,'IRCoronaAc::remote_state()'],['../classIRDaikin2.html#a0b28396956687a4009cab7c860b9ce4b',1,'IRDaikin2::remote_state()'],['../classIRDaikin216.html#abf9bab0a52f9227d54f583488b024a85',1,'IRDaikin216::remote_state()'],['../classIRDaikin160.html#a17fb5726060e8872735559654a72cb22',1,'IRDaikin160::remote_state()'],['../classIRDaikin176.html#adb6863da11f0569524f0beb31681d0b5',1,'IRDaikin176::remote_state()'],['../classIRDaikin128.html#af1b36cc2f51cd145da3bfe7ec3d9134a',1,'IRDaikin128::remote_state()'],['../classIRDaikin152.html#aa16c89c0cb6d83aef83d293466dab197',1,'IRDaikin152::remote_state()'],['../classIRDaikin64.html#aa279d6df0d130e727c3a1500b283eda0',1,'IRDaikin64::remote_state()'],['../classIRDelonghiAc.html#a3b3364143c52dc2a29d9db43612c07b1',1,'IRDelonghiAc::remote_state()'],['../classIRElectraAc.html#a3f423f5d896e4bfc2f3a0ce04b596289',1,'IRElectraAc::remote_state()'],['../classIRFujitsuAC.html#a851b9192e1f18f6a4b2f1726d49ef33b',1,'IRFujitsuAC::remote_state()'],['../unionGreeProtocol.html#ae034ac3966312175d26fe1817108d7a4',1,'GreeProtocol::remote_state()'],['../unionHaierProtocol.html#af8966fa819bcb51f496ec185130bcf0f',1,'HaierProtocol::remote_state()'],['../classIRHitachiAc.html#a44b3d360b2a8044782b73f7f4a533a99',1,'IRHitachiAc::remote_state()'],['../classIRHitachiAc1.html#a13340cba808d457d6093f1c9efffc419',1,'IRHitachiAc1::remote_state()'],['../classIRHitachiAc424.html#a58bac4ef7f46ef1e9f38c1a144e2ca41',1,'IRHitachiAc424::remote_state()'],['../classIRHitachiAc3.html#a5602ded229a41796c205519449f7d509',1,'IRHitachiAc3::remote_state()'],['../classIRKelvinatorAC.html#a70f75821274e53cc5ed64ac53a6e32b4',1,'IRKelvinatorAC::remote_state()'],['../classIRLgAc.html#a481133671657b13ecce1bd08f710089d',1,'IRLgAc::remote_state()'],['../unionMideaProtocol.html#a8d696bb16d652ef6d582014049be2bbb',1,'MideaProtocol::remote_state()'],['../classIRMitsubishiAC.html#ac0a149b9705371e59c45ece162bc1aab',1,'IRMitsubishiAC::remote_state()'],['../classIRMitsubishi136.html#ad1e80d693d3558f0bed4c0f7995bddd5',1,'IRMitsubishi136::remote_state()'],['../classIRMitsubishi112.html#a64a40e57208d08b5cd6ef87a7c8d6671',1,'IRMitsubishi112::remote_state()'],['../classIRMitsubishiHeavy152Ac.html#a6d333f238bf1b42e39919d4897080aa8',1,'IRMitsubishiHeavy152Ac::remote_state()'],['../classIRMitsubishiHeavy88Ac.html#a46be0e755530f59fad7d3f9050ecc107',1,'IRMitsubishiHeavy88Ac::remote_state()'],['../classIRNeoclimaAc.html#a336507e0635ede3b9ebf53881ece50bb',1,'IRNeoclimaAc::remote_state()'],['../classIRPanasonicAc.html#a85d5118c0ed947cc77f2ed94b0d44e4a',1,'IRPanasonicAc::remote_state()'],['../classIRSamsungAc.html#a5966a3b665ce034de807de1955396e10',1,'IRSamsungAc::remote_state()'],['../classIRSanyoAc.html#a157b54dba73a31d1945ed3ca7c676c37',1,'IRSanyoAc::remote_state()'],['../classIRTcl112Ac.html#a6eda1148a977a3ccf0c6c30239fca4c8',1,'IRTcl112Ac::remote_state()'],['../classIRTecoAc.html#a3c2ad7587ed4f5589deb20d8dc16b1e4',1,'IRTecoAc::remote_state()'],['../classIRToshibaAC.html#ab6c99091be13e159d88a07a9222c9a7c',1,'IRToshibaAC::remote_state()'],['../classIRTrotecESP.html#afccba55e2c3d42c716591c10bc9afa18',1,'IRTrotecESP::remote_state()'],['../classIRVestelAc.html#a74d889a0db2fa63a2e38aaa15819568c',1,'IRVestelAc::remote_state()'],['../classIRWhirlpoolAc.html#a65333985c39773896071081ebcca4821',1,'IRWhirlpoolAc::remote_state()']]], - ['remote_5ftime_5fstate_3360',['remote_time_state',['../classIRVestelAc.html#a9b10e4a0c1f71aecbeb385666d1a53bd',1,'IRVestelAc']]], - ['repeat_3361',['repeat',['../classdecode__results.html#a09da48786fe3966cd5621840fd771bfa',1,'decode_results']]], - ['reset_3362',['reset',['../classIRtimer.html#aaaf886de2c9533a8c791242dc575db1a',1,'IRtimer::reset()'],['../classTimerMs.html#a25ab025793a4d432e7d4180cbd31157b',1,'TimerMs::reset()']]], - ['resultactostring_3363',['resultAcToString',['../namespaceIRAcUtils.html#ac3d2683bc26edc2bf58916187b5349c3',1,'IRAcUtils']]], - ['resulttohexidecimal_3364',['resultToHexidecimal',['../IRutils_8cpp.html#a25a669d53f231de6152f8e60cedf39f7',1,'resultToHexidecimal(const decode_results *const result): IRutils.cpp'],['../IRutils_8h.html#a25a669d53f231de6152f8e60cedf39f7',1,'resultToHexidecimal(const decode_results *const result): IRutils.cpp']]], - ['resulttohumanreadablebasic_3365',['resultToHumanReadableBasic',['../IRutils_8cpp.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8',1,'resultToHumanReadableBasic(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8',1,'resultToHumanReadableBasic(const decode_results *const results): IRutils.cpp']]], - ['resulttorawarray_3366',['resultToRawArray',['../IRutils_8cpp.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a',1,'resultToRawArray(const decode_results *const decode): IRutils.cpp'],['../IRutils_8h.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a',1,'resultToRawArray(const decode_results *const decode): IRutils.cpp']]], - ['resulttosourcecode_3367',['resultToSourceCode',['../IRutils_8cpp.html#a10fc00c8b399dddb67a228325e6e2f79',1,'resultToSourceCode(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#a10fc00c8b399dddb67a228325e6e2f79',1,'resultToSourceCode(const decode_results *const results): IRutils.cpp']]], - ['resulttotiminginfo_3368',['resultToTimingInfo',['../IRutils_8cpp.html#afbfdef125ff077431f3abc27a1eeb800',1,'resultToTimingInfo(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#afbfdef125ff077431f3abc27a1eeb800',1,'resultToTimingInfo(const decode_results *const results): IRutils.cpp']]], - ['resume_3369',['resume',['../classIRrecv.html#a6b5beb7348d807d8d98ae929d005510e',1,'IRrecv']]], - ['reversebits_3370',['reverseBits',['../IRutils_8cpp.html#a366219b6f1c46f41c6573b3e5e875e41',1,'reverseBits(uint64_t input, uint16_t nbits): IRutils.cpp'],['../IRutils_8h.html#a366219b6f1c46f41c6573b3e5e875e41',1,'reverseBits(uint64_t input, uint16_t nbits): IRutils.cpp']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_15.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_15.js deleted file mode 100644 index 2787e3284..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_15.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['uint64tostring_3654',['uint64ToString',['../IRutils_8cpp.html#a9f6ddef74b41ef6f8d2805fcfc396420',1,'uint64ToString(uint64_t input, uint8_t base): IRutils.cpp'],['../IRutils_8h.html#a781650451d38303e80da677539f574ee',1,'uint64ToString(uint64_t input, uint8_t base=10): IRutils.cpp']]], - ['uint8tobcd_3655',['uint8ToBcd',['../namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1',1,'irutils']]], - ['unknown_3656',['unknown',['../unionHaierProtocol.html#aabc2a684c5936858544c02ec8a68afb9',1,'HaierProtocol::unknown()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada6ce26a62afab55d7606ad4e92428b30c',1,'UNKNOWN(): IRremoteESP8266.h']]], - ['unknown1_3657',['unknown1',['../unionGreeProtocol.html#ae973c1c723b7162959374e1fd8ecab61',1,'GreeProtocol']]], - ['unknown2_3658',['unknown2',['../unionGreeProtocol.html#aa102f7d68c26f5b8644b13113a5b05f4',1,'GreeProtocol']]], - ['unused_3659',['UNUSED',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa09b651ef326a9d8efcee5cc5b720ab4',1,'IRremoteESP8266.h']]], - ['updatesavedstate_3660',['updateSavedState',['../classIRCoolixAC.html#a1f39630b328939307bb08c18e56e9ad3',1,'IRCoolixAC']]], - ['use_5ftime_5fstate_3661',['use_time_state',['../classIRVestelAc.html#af1b622c50a4952fb3edaf483e1bf9328',1,'IRVestelAc']]], - ['used_3662',['used',['../structmatch__result__t.html#a26cea305aa83ed65b88ac0b6ed6de54a',1,'match_result_t']]], - ['usefahrenheit_3663',['UseFahrenheit',['../unionGreeProtocol.html#a47c79761efe40c00e6bb01b7712b272c',1,'GreeProtocol::UseFahrenheit()'],['../unionMideaProtocol.html#a1b1258107620bb83fd6356815242e19b',1,'MideaProtocol::useFahrenheit()']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_1a.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_1a.js deleted file mode 100644 index 6bdb1666b..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_1a.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['zepeal_3682',['ZEPEAL',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1622e3d0835b4d47add716811c7bf797',1,'IRremoteESP8266.h']]], - ['zh_2dcn_2eh_3683',['zh-CN.h',['../zh-CN_8h.html',1,'']]], - ['zonefollowflag_3684',['zoneFollowFlag',['../classIRCoolixAC.html#a9cb37ed201fcf842c153f0414d9bfd9f',1,'IRCoolixAC']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_1b.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_1b.js deleted file mode 100644 index 791ce9b73..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_1b.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_7eirrecv_3685',['~IRrecv',['../classIRrecv.html#a87d4cca5e350177cb0922842dda1eb5b',1,'IRrecv']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_4.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_4.js deleted file mode 100644 index 015395718..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_4.js +++ /dev/null @@ -1,115 +0,0 @@ -var searchData= -[ - ['daikin_144',['daikin',['../classIRac.html#afb6d77bbeb5b2465437cef4f58b83e0e',1,'IRac::daikin()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad8dc0597fd237d7098246334f3b5f37e',1,'DAIKIN(): IRremoteESP8266.h']]], - ['daikin128_145',['daikin128',['../classIRac.html#a8fe7c254e1bcb32b6b6fdc1f91693a50',1,'IRac::daikin128()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4b26fb376f6375dd6d1d4be186438f88',1,'DAIKIN128(): IRremoteESP8266.h']]], - ['daikin152_146',['daikin152',['../classIRac.html#a6dff8e608e3e9fecffe71c3fd1ebe74e',1,'IRac::daikin152()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad3f5f7ca39aee5fdab671a1b0d647ae4',1,'DAIKIN152(): IRremoteESP8266.h']]], - ['daikin160_147',['daikin160',['../classIRac.html#a3b34f44d713efa52f30d43405cde831c',1,'IRac::daikin160()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4db6a848df3aed4289801e1b2bbbf6aa',1,'DAIKIN160(): IRremoteESP8266.h']]], - ['daikin176_148',['daikin176',['../classIRac.html#aaae173fd58a7b53c3f4d2edbf7c4afe7',1,'IRac::daikin176()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada57f78a3b04d904f19d10bac13483deab',1,'DAIKIN176(): IRremoteESP8266.h']]], - ['daikin2_149',['daikin2',['../classIRac.html#a89eddc0e1b3c41c608208d2752dc954c',1,'IRac::daikin2()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab37b344f84d575ec78a92ca55e153586',1,'DAIKIN2(): IRremoteESP8266.h']]], - ['daikin216_150',['daikin216',['../classIRac.html#a101ac8b9e9564e557ef1a1f61ff111d9',1,'IRac::daikin216()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa833fa3a20c3cbb7e6206dac4da30ffb',1,'DAIKIN216(): IRremoteESP8266.h']]], - ['daikin64_151',['daikin64',['../classIRac.html#a074db6fc0cff2878d80a397020e1b249',1,'IRac::daikin64()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada70581853ce4883b747d22fdfd74409c4',1,'DAIKIN64(): IRremoteESP8266.h']]], - ['data_152',['data',['../structmatch__result__t.html#ae88be61a6d1ffa7c3525aa958f4c0d25',1,'match_result_t']]], - ['de_2dch_2eh_153',['de-CH.h',['../de-CH_8h.html',1,'']]], - ['de_2dde_2eh_154',['de-DE.h',['../de-DE_8h.html',1,'']]], - ['decode_155',['decode',['../classIRrecv.html#aeaa5c07a8b46f8fbb982f996cc1f9f4b',1,'IRrecv']]], - ['decode_5fresults_156',['decode_results',['../classdecode__results.html',1,'']]], - ['decode_5ftype_157',['decode_type',['../classdecode__results.html#a9c0e9f161b9c90dc10b7561d4c0b50fa',1,'decode_results']]], - ['decode_5ftype_5ft_158',['decode_type_t',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad',1,'IRremoteESP8266.h']]], - ['decodeairwell_159',['decodeAirwell',['../classIRrecv.html#acf4635d5ee146a82498cb0c269b6af41',1,'IRrecv']]], - ['decodeaiwarct501_160',['decodeAiwaRCT501',['../classIRrecv.html#aa4d678376a4c0f8ea953474a6f5ef9d2',1,'IRrecv']]], - ['decodeamcor_161',['decodeAmcor',['../classIRrecv.html#a8d81fcfb47e36925975d313027689a44',1,'IRrecv']]], - ['decodeargo_162',['decodeArgo',['../classIRrecv.html#a94f12dc000a6e7b75ea8680fd48fc487',1,'IRrecv']]], - ['decodecarrierac_163',['decodeCarrierAC',['../classIRrecv.html#acf3d1c37038120a5c0996d92577ce74a',1,'IRrecv']]], - ['decodecarrierac40_164',['decodeCarrierAC40',['../classIRrecv.html#a4bdb35ec34f49401a6b9becd15b8a3b5',1,'IRrecv']]], - ['decodecarrierac64_165',['decodeCarrierAC64',['../classIRrecv.html#a79d03c31da48a385ab47cc8f342ef9b3',1,'IRrecv']]], - ['decodecoolix_166',['decodeCOOLIX',['../classIRrecv.html#a964af7e72e2133688f0596c718cb98ca',1,'IRrecv']]], - ['decodecoronaac_167',['decodeCoronaAc',['../classIRrecv.html#a981cba14551c93af57f9c1c0e1775d12',1,'IRrecv']]], - ['decodedaikin_168',['decodeDaikin',['../classIRrecv.html#a141f0de9f4cae8daeb025aff3904ecaa',1,'IRrecv']]], - ['decodedaikin128_169',['decodeDaikin128',['../classIRrecv.html#ac7188577c874d9f8f19304a3ec775415',1,'IRrecv']]], - ['decodedaikin152_170',['decodeDaikin152',['../classIRrecv.html#ab20a6586b4e56cc428012ec96f5ccc2c',1,'IRrecv']]], - ['decodedaikin160_171',['decodeDaikin160',['../classIRrecv.html#af0b9822defe6b29099079d664d9dc413',1,'IRrecv']]], - ['decodedaikin176_172',['decodeDaikin176',['../classIRrecv.html#aa142d1340201b6fdc5b462f46fe21ee0',1,'IRrecv']]], - ['decodedaikin2_173',['decodeDaikin2',['../classIRrecv.html#a4c4799a0d45ea5562159c46939617d80',1,'IRrecv']]], - ['decodedaikin216_174',['decodeDaikin216',['../classIRrecv.html#a7f860686a5c58aa8f4d1842cfb15b2f9',1,'IRrecv']]], - ['decodedaikin64_175',['decodeDaikin64',['../classIRrecv.html#a030701f081a9c6eab0c07b75433b524c',1,'IRrecv']]], - ['decodedelonghiac_176',['decodeDelonghiAc',['../classIRrecv.html#a8c91cc83770d243e942387cc16e9ca6f',1,'IRrecv']]], - ['decodedenon_177',['decodeDenon',['../classIRrecv.html#a0b1bd1c817cb43bc3755126191b7f4a2',1,'IRrecv']]], - ['decodedish_178',['decodeDISH',['../classIRrecv.html#a851776d9178aeb706d9a1abd3f254e31',1,'IRrecv']]], - ['decodedoshisha_179',['decodeDoshisha',['../classIRrecv.html#a675c45e6b32aaeca3de734ccf2f0c819',1,'IRrecv']]], - ['decodeelectraac_180',['decodeElectraAC',['../classIRrecv.html#ad3a7be8afc36451c8e28e27f3c3e9aaa',1,'IRrecv']]], - ['decodeepson_181',['decodeEpson',['../classIRrecv.html#aaadef8415f273ba25f4086fecd681d2e',1,'IRrecv']]], - ['decodefujitsuac_182',['decodeFujitsuAC',['../classIRrecv.html#aa3778bdf994bf9c99ac48ef95434a826',1,'IRrecv']]], - ['decodegicable_183',['decodeGICable',['../classIRrecv.html#afade8dac9b1d023e5e0946e6b2c08aea',1,'IRrecv']]], - ['decodegoodweather_184',['decodeGoodweather',['../classIRrecv.html#a64650ce7dbaf5fc860a6a253d906e9de',1,'IRrecv']]], - ['decodegree_185',['decodeGree',['../classIRrecv.html#a2e756342d7524a13d53d6c656700638c',1,'IRrecv']]], - ['decodehaierac_186',['decodeHaierAC',['../classIRrecv.html#ad97403174f05197a7fa9a4a0107e3111',1,'IRrecv']]], - ['decodehaieracyrw02_187',['decodeHaierACYRW02',['../classIRrecv.html#a281fb9d972fee75db49209c42f649822',1,'IRrecv']]], - ['decodehash_188',['decodeHash',['../classIRrecv.html#a7c15fbfa7936ca474712a1953911fd06',1,'IRrecv']]], - ['decodehitachiac_189',['decodeHitachiAC',['../classIRrecv.html#aa42facfffc0e304005272b6ddd4583c8',1,'IRrecv']]], - ['decodehitachiac1_190',['decodeHitachiAC1',['../classIRrecv.html#a122e0dcbf14c90ec2d77399acce21459',1,'IRrecv']]], - ['decodehitachiac3_191',['decodeHitachiAc3',['../classIRrecv.html#a113bc834eff00f55d5545ce3fa1ab203',1,'IRrecv']]], - ['decodehitachiac424_192',['decodeHitachiAc424',['../classIRrecv.html#a01c3dda56d6d916076fa1affa2213129',1,'IRrecv']]], - ['decodeinax_193',['decodeInax',['../classIRrecv.html#a94545c6a8da027b9cb0e23ecba4c29d8',1,'IRrecv']]], - ['decodejvc_194',['decodeJVC',['../classIRrecv.html#a25ab71efc223a418e9630d8421f44bc9',1,'IRrecv']]], - ['decodekelvinator_195',['decodeKelvinator',['../classIRrecv.html#a0ac82f20b48b2d71ee07eb392578b226',1,'IRrecv']]], - ['decodelasertag_196',['decodeLasertag',['../classIRrecv.html#ae4af614a45ea65cb3304ef5bd7965122',1,'IRrecv']]], - ['decodelegopf_197',['decodeLegoPf',['../classIRrecv.html#aea75ad0ba1d8fec33de16501940f2553',1,'IRrecv']]], - ['decodelg_198',['decodeLG',['../classIRrecv.html#afe70015c36b1477a5de0c193163e13a7',1,'IRrecv']]], - ['decodelutron_199',['decodeLutron',['../classIRrecv.html#a6093c4404a9a9d415c5bfeab5ec53be5',1,'IRrecv']]], - ['decodemagiquest_200',['decodeMagiQuest',['../classIRrecv.html#a6f3bfcc6767484151dee758bcf94fb0b',1,'IRrecv']]], - ['decodemetz_201',['decodeMetz',['../classIRrecv.html#ac39aa52eec10d1c92b6e9713a22252b6',1,'IRrecv']]], - ['decodemidea_202',['decodeMidea',['../classIRrecv.html#a255b15601f7439a09ab5e77ad78816fb',1,'IRrecv']]], - ['decodemidea24_203',['decodeMidea24',['../classIRrecv.html#a62a04019308b29ae2aea4b3a83ba9155',1,'IRrecv']]], - ['decodemitsubishi_204',['decodeMitsubishi',['../classIRrecv.html#a6efe3be80f0ebef3ff94ed0e56c5c52a',1,'IRrecv']]], - ['decodemitsubishi112_205',['decodeMitsubishi112',['../classIRrecv.html#ae0690ff3cb5a5cdcdb6a514bb7bf0cdd',1,'IRrecv']]], - ['decodemitsubishi136_206',['decodeMitsubishi136',['../classIRrecv.html#a87b3ee57dbdf762a0e305ddd43eec629',1,'IRrecv']]], - ['decodemitsubishi2_207',['decodeMitsubishi2',['../classIRrecv.html#a9514197850491a5b8c30ae9ffc89d895',1,'IRrecv']]], - ['decodemitsubishiac_208',['decodeMitsubishiAC',['../classIRrecv.html#a942c5f41df5cbff32a8b7703673cb621',1,'IRrecv']]], - ['decodemitsubishiheavy_209',['decodeMitsubishiHeavy',['../classIRrecv.html#aef9cedf79793806df4cc5376710781bc',1,'IRrecv']]], - ['decodemultibrackets_210',['decodeMultibrackets',['../classIRrecv.html#af61afacc9865232643164ba824e665ab',1,'IRrecv']]], - ['decodemwm_211',['decodeMWM',['../classIRrecv.html#a27518b5d792cdf3ab333b324f409f328',1,'IRrecv']]], - ['decodenec_212',['decodeNEC',['../classIRrecv.html#a52b844f80df7f64edf9ce9cc189ac5b9',1,'IRrecv']]], - ['decodeneoclima_213',['decodeNeoclima',['../classIRrecv.html#a4729ee949e533448b481ae33bbbf1adf',1,'IRrecv']]], - ['decodenikai_214',['decodeNikai',['../classIRrecv.html#abbcbf5fc07d7e37d7724acc37bb5f592',1,'IRrecv']]], - ['decodepanasonic_215',['decodePanasonic',['../classIRrecv.html#aa8dd5f24d28576c6db03cc463bd0a865',1,'IRrecv']]], - ['decodepanasonicac_216',['decodePanasonicAC',['../classIRrecv.html#a0f78e180ed731e8fb16d1c85aa721c95',1,'IRrecv']]], - ['decodepioneer_217',['decodePioneer',['../classIRrecv.html#a78a9487cbe8a562392a07a4090b3091e',1,'IRrecv']]], - ['decoderc5_218',['decodeRC5',['../classIRrecv.html#adab9dffbeceee514520fababd0e721bd',1,'IRrecv']]], - ['decoderc6_219',['decodeRC6',['../classIRrecv.html#a67316499ef37db82e3b3ecaac25c5980',1,'IRrecv']]], - ['decodercmm_220',['decodeRCMM',['../classIRrecv.html#a0e7bf769cb5bebf174e852e4b0b08cf3',1,'IRrecv']]], - ['decodesamsung_221',['decodeSAMSUNG',['../classIRrecv.html#a18b6cf177364faf11b9a076dd2025eec',1,'IRrecv']]], - ['decodesamsung36_222',['decodeSamsung36',['../classIRrecv.html#a290a9e6a0b12ef1fe02a92a456c8ad57',1,'IRrecv']]], - ['decodesamsungac_223',['decodeSamsungAC',['../classIRrecv.html#ae779c76ebd0f3cd1fc13abaa55f80d67',1,'IRrecv']]], - ['decodesanyoac_224',['decodeSanyoAc',['../classIRrecv.html#ab6c02d8b8079d7f344e141e6a4e7e225',1,'IRrecv']]], - ['decodesanyolc7461_225',['decodeSanyoLC7461',['../classIRrecv.html#a01a165bf2e7d16dbbb916d1eae740bc5',1,'IRrecv']]], - ['decodesharp_226',['decodeSharp',['../classIRrecv.html#a3390d63ba21a835d7c74c261532a22a7',1,'IRrecv']]], - ['decodesharpac_227',['decodeSharpAc',['../classIRrecv.html#a8a9b920079f783e236f8a938e20b9743',1,'IRrecv']]], - ['decodesony_228',['decodeSony',['../classIRrecv.html#ab03227955cf7d1d00c1620c55d7f9f18',1,'IRrecv']]], - ['decodesymphony_229',['decodeSymphony',['../classIRrecv.html#a61cdf4d891654521afbc6ca9fb415745',1,'IRrecv']]], - ['decodeteco_230',['decodeTeco',['../classIRrecv.html#a950711d7df8dfe4cda86f53650cd9f56',1,'IRrecv']]], - ['decodetoshibaac_231',['decodeToshibaAC',['../classIRrecv.html#aae6ab687ae319ae50a52238916bcfb1a',1,'IRrecv']]], - ['decodetostate_232',['decodeToState',['../namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949',1,'IRAcUtils']]], - ['decodetrotec_233',['decodeTrotec',['../classIRrecv.html#ae2920c488173f3fa37f5325438157ced',1,'IRrecv']]], - ['decodevestelac_234',['decodeVestelAc',['../classIRrecv.html#a5d48b3c91434c18c7726cca504d75b73',1,'IRrecv']]], - ['decodevoltas_235',['decodeVoltas',['../classIRrecv.html#a43539320036ba1c17e9875e4dc9fd055',1,'IRrecv']]], - ['decodewhirlpoolac_236',['decodeWhirlpoolAC',['../classIRrecv.html#a0d1eec83cf092f5621cb34b3e94777c4',1,'IRrecv']]], - ['decodewhynter_237',['decodeWhynter',['../classIRrecv.html#a66289f6a462557ad26e6c0a64f36cf02',1,'IRrecv']]], - ['decodezepeal_238',['decodeZepeal',['../classIRrecv.html#a72afd857c8b2e0192021a40afc96c2d8',1,'IRrecv']]], - ['defaultbits_239',['defaultBits',['../classIRsend.html#a70a2256bee8ad9b8ea8571dd4f26596f',1,'IRsend']]], - ['defaults_2eh_240',['defaults.h',['../defaults_8h.html',1,'']]], - ['degrees_241',['degrees',['../structstdAc_1_1state__t.html#a3d1ff0ff2e0035db4ee8ead5c53b2dbd',1,'stdAc::state_t']]], - ['delonghi_5fac_242',['DELONGHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada149190c9dec98e9c3f4a2bd530b154a3',1,'IRremoteESP8266.h']]], - ['delonghiac_243',['delonghiac',['../classIRac.html#af290b0b08cff5121bb88c62051ed1074',1,'IRac']]], - ['denon_244',['DENON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada2bda37b76abb290d1675c3e027e3c2e1',1,'IRremoteESP8266.h']]], - ['deprecated_20list_245',['Deprecated List',['../deprecated.html',1,'']]], - ['dg11j13a_246',['DG11J13A',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2a868d69f0605cf9151b0163a3481e2fb9',1,'IRsend.h']]], - ['dg11j191_247',['DG11J191',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2adaecfc16f36975f231db2507a8a36c0c',1,'IRsend.h']]], - ['disableirin_248',['disableIRIn',['../classIRrecv.html#a9f4a719e756ad78c7dd47186f8bef087',1,'IRrecv']]], - ['disableofftimer_249',['disableOffTimer',['../classIRDaikinESP.html#a1e4e05ad0799002d0ab25db92dcaac06',1,'IRDaikinESP::disableOffTimer()'],['../classIRDaikin2.html#a6c8ad4c34713d61942c80b6052e6283a',1,'IRDaikin2::disableOffTimer()']]], - ['disableontimer_250',['disableOnTimer',['../classIRDaikinESP.html#a0733e4a15d76baac23493926ef1765b1',1,'IRDaikinESP::disableOnTimer()'],['../classIRDaikin2.html#ab0e77969a86af9637cb9aa4b4befd4aa',1,'IRDaikin2::disableOnTimer()']]], - ['disablesleeptimer_251',['disableSleepTimer',['../classIRDaikin2.html#a5461cf51967d3fe67489384c82daac47',1,'IRDaikin2']]], - ['dish_252',['DISH',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac27c6ac38ba872593af8e46ac2fdc85a',1,'IRremoteESP8266.h']]], - ['displaytemp_253',['DisplayTemp',['../unionGreeProtocol.html#ad0756a64f9c90c9dd12ca6cd71c78bb2',1,'GreeProtocol']]], - ['doshisha_254',['DOSHISHA',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab4566b260773b60c85450f40fa5b4341',1,'IRremoteESP8266.h']]], - ['doxygen_5findex_2emd_255',['doxygen_index.md',['../doxygen__index_8md.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_5.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_5.js deleted file mode 100644 index 9ffe601ff..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_5.js +++ /dev/null @@ -1,35 +0,0 @@ -var searchData= -[ - ['econo_256',['econo',['../structstdAc_1_1state__t.html#a580c826c6d9671715adfe8445531b957',1,'stdAc::state_t::econo()'],['../unionVoltasProtocol.html#a4f44e3e3a68988d25173b2aab1c32e53',1,'VoltasProtocol::Econo()']]], - ['elapsed_257',['elapsed',['../classIRtimer.html#ad655e585f053580d49d8de7d52cd62a1',1,'IRtimer::elapsed()'],['../classTimerMs.html#ad4aa759c58727393f69863b3461dfc09',1,'TimerMs::elapsed()']]], - ['electra_258',['electra',['../classIRac.html#abb847bd5e09feb293432b8a8cf0dd9de',1,'IRac']]], - ['electra_5fac_259',['ELECTRA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada05f193ef4ead3e54624bd92dc3203fac',1,'IRremoteESP8266.h']]], - ['en_2dau_2eh_260',['en-AU.h',['../en-AU_8h.html',1,'']]], - ['en_2die_2eh_261',['en-IE.h',['../en-IE_8h.html',1,'']]], - ['en_2duk_2eh_262',['en-UK.h',['../en-UK_8h.html',1,'']]], - ['en_2dus_2eh_263',['en-US.h',['../en-US_8h.html',1,'']]], - ['enableirin_264',['enableIRIn',['../classIRrecv.html#a52c05ec6d8f3dbfb75f21f3b4fe7be3d',1,'IRrecv']]], - ['enableirout_265',['enableIROut',['../classIRsend.html#ab3b6d36c9b5d26c400526717d433ed2d',1,'IRsend']]], - ['enableofftimer_266',['enableOffTimer',['../classIRDaikinESP.html#a8a5686066bfc86f1d7cc454e793d3357',1,'IRDaikinESP::enableOffTimer()'],['../classIRDaikin2.html#afc7ba7d7de2976e010a72778091d633a',1,'IRDaikin2::enableOffTimer()'],['../classIRWhirlpoolAc.html#abb1c3685d90d81b44e72050cd0e042f6',1,'IRWhirlpoolAc::enableOffTimer()']]], - ['enableontimer_267',['enableOnTimer',['../classIRDaikinESP.html#aac4d0f5f60c9f4c41d3bb1e0f24bc4bc',1,'IRDaikinESP::enableOnTimer()'],['../classIRDaikin2.html#a91ec5f7c67cb87102a5eb030e0763b50',1,'IRDaikin2::enableOnTimer()'],['../classIRWhirlpoolAc.html#aa3edd58882cf4fc65172e490c9e0bb2e',1,'IRWhirlpoolAc::enableOnTimer()']]], - ['enablesleeptimer_268',['enableSleepTimer',['../classIRDaikin2.html#a9c86782a98a54818ae92419eec5a060b',1,'IRDaikin2']]], - ['enabletimer_269',['enableTimer',['../classIRWhirlpoolAc.html#ad07804318721bc5dd60f7322e02c9696',1,'IRWhirlpoolAc']]], - ['encodedoshisha_270',['encodeDoshisha',['../classIRsend.html#a0522a2256e8358df715065530be6317d',1,'IRsend']]], - ['encodejvc_271',['encodeJVC',['../classIRsend.html#a6303b991c0545443e7ccf63ba89dbf18',1,'IRsend']]], - ['encodelg_272',['encodeLG',['../classIRsend.html#a109b67a68e7a33900cb5c5017ed4578b',1,'IRsend']]], - ['encodemagiquest_273',['encodeMagiQuest',['../classIRsend.html#a4ee40126279dbde8bb02888115577563',1,'IRsend']]], - ['encodemetz_274',['encodeMetz',['../classIRsend.html#a99c88ec9f8426003738a9a1682595b9a',1,'IRsend']]], - ['encodenec_275',['encodeNEC',['../classIRsend.html#ab2e1ce918e4e06b955c3d2a089ce189c',1,'IRsend']]], - ['encodepanasonic_276',['encodePanasonic',['../classIRsend.html#a8340497ae75f00c844e53dfc73700d9c',1,'IRsend']]], - ['encodepioneer_277',['encodePioneer',['../classIRsend.html#ae0686829eba31587b71034a1c0495971',1,'IRsend']]], - ['encoderc5_278',['encodeRC5',['../classIRsend.html#a88457fd4cc01d6e8097e04c022ede74a',1,'IRsend']]], - ['encoderc5x_279',['encodeRC5X',['../classIRsend.html#ae760ef1be11f25f7a61237f96a8871d9',1,'IRsend']]], - ['encoderc6_280',['encodeRC6',['../classIRsend.html#ac0e341462426ea146b944502a6d3fde0',1,'IRsend']]], - ['encodesamsung_281',['encodeSAMSUNG',['../classIRsend.html#a4ab0579bd854306b2667de19207e4ffb',1,'IRsend']]], - ['encodesanyolc7461_282',['encodeSanyoLC7461',['../classIRsend.html#a864bef0dc48f6af4b59057362906cf5d',1,'IRsend']]], - ['encodesharp_283',['encodeSharp',['../classIRsend.html#a8f4c7a36380ba31155eba5ff8f5f631e',1,'IRsend']]], - ['encodesony_284',['encodeSony',['../classIRsend.html#aa0aea2cb04f0a7ee9056f15fecfc08c3',1,'IRsend']]], - ['encodetime_285',['encodeTime',['../classIRPanasonicAc.html#a0eee4ad6105d35ee6c34c4666174b04b',1,'IRPanasonicAc']]], - ['epson_286',['EPSON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaaf677fd380c38297264a10732631927c',1,'IRremoteESP8266.h']]], - ['es_2des_2eh_287',['es-ES.h',['../es-ES_8h.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_6.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_6.js deleted file mode 100644 index 640819cf9..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_6.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['fahrenheittocelsius_288',['fahrenheitToCelsius',['../IRutils_8cpp.html#a83538e86145850c24b1c824723089502',1,'fahrenheitToCelsius(const float deg): IRutils.cpp'],['../IRutils_8h.html#a83538e86145850c24b1c824723089502',1,'fahrenheitToCelsius(const float deg): IRutils.cpp']]], - ['fan_289',['Fan',['../unionAirwellProtocol.html#a7d38043e982231fb6a331d72f7407c10',1,'AirwellProtocol::Fan()'],['../unionGreeProtocol.html#af6f917228f457a24e70256d7c132289c',1,'GreeProtocol::Fan()'],['../unionHaierProtocol.html#a44e6a58782f4c6d5e532c715e9050b5b',1,'HaierProtocol::Fan()'],['../unionHaierYRW02Protocol.html#a4ecca9653d14ccd283e44f6e385ff36a',1,'HaierYRW02Protocol::Fan()'],['../unionMideaProtocol.html#a04b0f344ec9b7cf2bdbd2c530b409fcb',1,'MideaProtocol::Fan()']]], - ['fanspeed_290',['fanspeed',['../structstdAc_1_1state__t.html#a28a50c877a0eaa71689ccc3bf9c957d7',1,'stdAc::state_t::fanspeed()'],['../unionVoltasProtocol.html#a7a2326d3ecf316e1a4e0a5db0523cad6',1,'VoltasProtocol::FanSpeed()']]], - ['fanspeed_5ft_291',['fanspeed_t',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383',1,'stdAc']]], - ['fanspeedtostring_292',['fanspeedToString',['../classIRac.html#ab8d8a1ce5de8970c07c90fb41731e2e6',1,'IRac']]], - ['filter_293',['filter',['../structstdAc_1_1state__t.html#a41e4b957f9e011ddb32d35bfcd56c0e7',1,'stdAc::state_t']]], - ['fixchecksum_294',['fixChecksum',['../classIRPanasonicAc.html#aa40bef35000ddf6d14e286b3f2044897',1,'IRPanasonicAc']]], - ['fixup_295',['fixup',['../classIRGreeAC.html#a5bbdcc83f9d49e32379cd27cad0ba130',1,'IRGreeAC::fixup()'],['../classIRKelvinatorAC.html#a389af589003c39794ae5d4bd572fa485',1,'IRKelvinatorAC::fixup()']]], - ['flap_5fmode_296',['flap_mode',['../classIRArgoAC.html#abfc383d92ced7d47945cc5ac996e5fc4',1,'IRArgoAC']]], - ['fr_2dfr_2eh_297',['fr-FR.h',['../fr-FR_8h.html',1,'']]], - ['fujitsu_298',['fujitsu',['../classIRac.html#a23cf80270562ca28ae1f1da2bbb559e7',1,'IRac']]], - ['fujitsu_5fac_299',['FUJITSU_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad8cf99a3a8776d644b78313306a2108c',1,'IRremoteESP8266.h']]], - ['fujitsu_5fac_5fremote_5fmodel_5ft_300',['fujitsu_ac_remote_model_t',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0',1,'IRsend.h']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_8.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_8.js deleted file mode 100644 index cc86f30ba..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_8.js +++ /dev/null @@ -1,28 +0,0 @@ -var searchData= -[ - ['haier_419',['haier',['../classIRac.html#ae0a29a4cb8c7a4707a7725c576822a58',1,'IRac']]], - ['haier_5fac_420',['HAIER_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1f232bcdf330ec2e353196941b9f1628',1,'IRremoteESP8266.h']]], - ['haier_5fac_5fyrw02_421',['HAIER_AC_YRW02',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaacda5821835865551f6df46c76282fa4',1,'IRremoteESP8266.h']]], - ['haierprotocol_422',['HaierProtocol',['../unionHaierProtocol.html',1,'']]], - ['haieryrw02protocol_423',['HaierYRW02Protocol',['../unionHaierYRW02Protocol.html',1,'']]], - ['haieryrwo2_424',['haierYrwo2',['../classIRac.html#a7bc779a162dd9a1b4c925febec443353',1,'IRac']]], - ['handlespecialstate_425',['handleSpecialState',['../classIRCoolixAC.html#af78090c6d8b45b4202a80f1223640390',1,'IRCoolixAC']]], - ['handletoggles_426',['handleToggles',['../classIRac.html#a36833999dce4ad608a5a0f084988cfd1',1,'IRac']]], - ['hasacstate_427',['hasACState',['../IRutils_8cpp.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol): IRutils.cpp'],['../IRutils_8h.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol): IRutils.cpp']]], - ['hasinvertedstates_428',['hasInvertedStates',['../classIRHitachiAc3.html#ac06b36245c85480d97c1a9f49cfaa005',1,'IRHitachiAc3']]], - ['hasstatechanged_429',['hasStateChanged',['../classIRac.html#a35258c35a2d2b19886292b22b2aa053a',1,'IRac']]], - ['health_430',['Health',['../unionHaierProtocol.html#a4cf70c633e33066e3fc0f98bb2ad3820',1,'HaierProtocol::Health()'],['../unionHaierYRW02Protocol.html#a7fa39803fd72a788736bb8f00acfa76f',1,'HaierYRW02Protocol::Health()']]], - ['heat_5fmode_431',['heat_mode',['../classIRArgoAC.html#a255762f71502b9ffeb0686759991ec53',1,'IRArgoAC']]], - ['hitachi_432',['hitachi',['../classIRac.html#acd0f2fcf03aabf947a19a195000add3c',1,'IRac']]], - ['hitachi1_433',['hitachi1',['../classIRac.html#ac8807d62f6ae87af72d44b50bed3f17b',1,'IRac']]], - ['hitachi344_434',['hitachi344',['../classIRac.html#a0bc34635a1a349816344916a82585460',1,'IRac']]], - ['hitachi424_435',['hitachi424',['../classIRac.html#aec6de0752ddd3a3e7c6824cb1b692508',1,'IRac']]], - ['hitachi_5fac_436',['HITACHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9020fb54ac69d8aec0185f7e80c962ca',1,'IRremoteESP8266.h']]], - ['hitachi_5fac1_437',['HITACHI_AC1',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7d9a74161d95e62bece3c0e48900cb35',1,'IRremoteESP8266.h']]], - ['hitachi_5fac1_5fremote_5fmodel_5ft_438',['hitachi_ac1_remote_model_t',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49',1,'IRsend.h']]], - ['hitachi_5fac2_439',['HITACHI_AC2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab5a44068d519506efa8a3113aa44c9c0',1,'IRremoteESP8266.h']]], - ['hitachi_5fac3_440',['HITACHI_AC3',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac3487c47b14da6af922f5b27992b30f3',1,'IRremoteESP8266.h']]], - ['hitachi_5fac344_441',['HITACHI_AC344',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1e147eb39adc40e4181940cc2357f070',1,'IRremoteESP8266.h']]], - ['hitachi_5fac424_442',['HITACHI_AC424',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada85af068f8964d4359512265d8cc27a31',1,'IRremoteESP8266.h']]], - ['htmlescape_443',['htmlEscape',['../namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7',1,'irutils']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_9.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_9.js deleted file mode 100644 index adbeaa360..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_9.js +++ /dev/null @@ -1,186 +0,0 @@ -var searchData= -[ - ['i18n_2eh_444',['i18n.h',['../i18n_8h.html',1,'']]], - ['ifeel_445',['IFeel',['../unionGreeProtocol.html#a592364307a4b11064888bda76c403142',1,'GreeProtocol']]], - ['inax_446',['INAX',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadafc566aab3afb8face6d8965ca4d0eab7',1,'IRremoteESP8266.h']]], - ['irremoteesp8266_20library_20api_20documentation_447',['IRremoteESP8266 Library API Documentation',['../index.html',1,'']]], - ['initstate_448',['initState',['../classIRac.html#af1c4ae70e61298c0be8d350d67e7c342',1,'IRac::initState(stdAc::state_t *state, const decode_type_t vendor, const int16_t model, const bool power, const stdAc::opmode_t mode, const float degrees, const bool celsius, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep, const int16_t clock)'],['../classIRac.html#a165b7fdb9b3a02b1fb5ff2c2c3747958',1,'IRac::initState(stdAc::state_t *state)']]], - ['invertbits_449',['invertBits',['../IRutils_8cpp.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits): IRutils.cpp'],['../IRutils_8h.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits): IRutils.cpp']]], - ['invertbytepairs_450',['invertBytePairs',['../namespaceirutils.html#ad818a474349546c84824451a5468f4fe',1,'irutils']]], - ['ir_5fairwell_2ecpp_451',['ir_Airwell.cpp',['../ir__Airwell_8cpp.html',1,'']]], - ['ir_5fairwell_2eh_452',['ir_Airwell.h',['../ir__Airwell_8h.html',1,'']]], - ['ir_5faiwa_2ecpp_453',['ir_Aiwa.cpp',['../ir__Aiwa_8cpp.html',1,'']]], - ['ir_5famcor_2ecpp_454',['ir_Amcor.cpp',['../ir__Amcor_8cpp.html',1,'']]], - ['ir_5famcor_2eh_455',['ir_Amcor.h',['../ir__Amcor_8h.html',1,'']]], - ['ir_5fargo_2ecpp_456',['ir_Argo.cpp',['../ir__Argo_8cpp.html',1,'']]], - ['ir_5fargo_2eh_457',['ir_Argo.h',['../ir__Argo_8h.html',1,'']]], - ['ir_5fcarrier_2ecpp_458',['ir_Carrier.cpp',['../ir__Carrier_8cpp.html',1,'']]], - ['ir_5fcarrier_2eh_459',['ir_Carrier.h',['../ir__Carrier_8h.html',1,'']]], - ['ir_5fcoolix_2ecpp_460',['ir_Coolix.cpp',['../ir__Coolix_8cpp.html',1,'']]], - ['ir_5fcoolix_2eh_461',['ir_Coolix.h',['../ir__Coolix_8h.html',1,'']]], - ['ir_5fcorona_2ecpp_462',['ir_Corona.cpp',['../ir__Corona_8cpp.html',1,'']]], - ['ir_5fcorona_2eh_463',['ir_Corona.h',['../ir__Corona_8h.html',1,'']]], - ['ir_5fdaikin_2ecpp_464',['ir_Daikin.cpp',['../ir__Daikin_8cpp.html',1,'']]], - ['ir_5fdaikin_2eh_465',['ir_Daikin.h',['../ir__Daikin_8h.html',1,'']]], - ['ir_5fdelonghi_2ecpp_466',['ir_Delonghi.cpp',['../ir__Delonghi_8cpp.html',1,'']]], - ['ir_5fdelonghi_2eh_467',['ir_Delonghi.h',['../ir__Delonghi_8h.html',1,'']]], - ['ir_5fdenon_2ecpp_468',['ir_Denon.cpp',['../ir__Denon_8cpp.html',1,'']]], - ['ir_5fdish_2ecpp_469',['ir_Dish.cpp',['../ir__Dish_8cpp.html',1,'']]], - ['ir_5fdoshisha_2ecpp_470',['ir_Doshisha.cpp',['../ir__Doshisha_8cpp.html',1,'']]], - ['ir_5felectra_2ecpp_471',['ir_Electra.cpp',['../ir__Electra_8cpp.html',1,'']]], - ['ir_5felectra_2eh_472',['ir_Electra.h',['../ir__Electra_8h.html',1,'']]], - ['ir_5fepson_2ecpp_473',['ir_Epson.cpp',['../ir__Epson_8cpp.html',1,'']]], - ['ir_5ffujitsu_2ecpp_474',['ir_Fujitsu.cpp',['../ir__Fujitsu_8cpp.html',1,'']]], - ['ir_5ffujitsu_2eh_475',['ir_Fujitsu.h',['../ir__Fujitsu_8h.html',1,'']]], - ['ir_5fgicable_2ecpp_476',['ir_GICable.cpp',['../ir__GICable_8cpp.html',1,'']]], - ['ir_5fglobalcache_2ecpp_477',['ir_GlobalCache.cpp',['../ir__GlobalCache_8cpp.html',1,'']]], - ['ir_5fgoodweather_2ecpp_478',['ir_Goodweather.cpp',['../ir__Goodweather_8cpp.html',1,'']]], - ['ir_5fgoodweather_2eh_479',['ir_Goodweather.h',['../ir__Goodweather_8h.html',1,'']]], - ['ir_5fgree_2ecpp_480',['ir_Gree.cpp',['../ir__Gree_8cpp.html',1,'']]], - ['ir_5fgree_2eh_481',['ir_Gree.h',['../ir__Gree_8h.html',1,'']]], - ['ir_5fhaier_2ecpp_482',['ir_Haier.cpp',['../ir__Haier_8cpp.html',1,'']]], - ['ir_5fhaier_2eh_483',['ir_Haier.h',['../ir__Haier_8h.html',1,'']]], - ['ir_5fhitachi_2ecpp_484',['ir_Hitachi.cpp',['../ir__Hitachi_8cpp.html',1,'']]], - ['ir_5fhitachi_2eh_485',['ir_Hitachi.h',['../ir__Hitachi_8h.html',1,'']]], - ['ir_5finax_2ecpp_486',['ir_Inax.cpp',['../ir__Inax_8cpp.html',1,'']]], - ['ir_5fjvc_2ecpp_487',['ir_JVC.cpp',['../ir__JVC_8cpp.html',1,'']]], - ['ir_5fkelvinator_2ecpp_488',['ir_Kelvinator.cpp',['../ir__Kelvinator_8cpp.html',1,'']]], - ['ir_5fkelvinator_2eh_489',['ir_Kelvinator.h',['../ir__Kelvinator_8h.html',1,'']]], - ['ir_5flasertag_2ecpp_490',['ir_Lasertag.cpp',['../ir__Lasertag_8cpp.html',1,'']]], - ['ir_5flego_2ecpp_491',['ir_Lego.cpp',['../ir__Lego_8cpp.html',1,'']]], - ['ir_5flg_2ecpp_492',['ir_LG.cpp',['../ir__LG_8cpp.html',1,'']]], - ['ir_5flg_2eh_493',['ir_LG.h',['../ir__LG_8h.html',1,'']]], - ['ir_5flutron_2ecpp_494',['ir_Lutron.cpp',['../ir__Lutron_8cpp.html',1,'']]], - ['ir_5fmagiquest_2ecpp_495',['ir_Magiquest.cpp',['../ir__Magiquest_8cpp.html',1,'']]], - ['ir_5fmagiquest_2eh_496',['ir_Magiquest.h',['../ir__Magiquest_8h.html',1,'']]], - ['ir_5fmetz_2ecpp_497',['ir_Metz.cpp',['../ir__Metz_8cpp.html',1,'']]], - ['ir_5fmidea_2ecpp_498',['ir_Midea.cpp',['../ir__Midea_8cpp.html',1,'']]], - ['ir_5fmidea_2eh_499',['ir_Midea.h',['../ir__Midea_8h.html',1,'']]], - ['ir_5fmitsubishi_2ecpp_500',['ir_Mitsubishi.cpp',['../ir__Mitsubishi_8cpp.html',1,'']]], - ['ir_5fmitsubishi_2eh_501',['ir_Mitsubishi.h',['../ir__Mitsubishi_8h.html',1,'']]], - ['ir_5fmitsubishiheavy_2ecpp_502',['ir_MitsubishiHeavy.cpp',['../ir__MitsubishiHeavy_8cpp.html',1,'']]], - ['ir_5fmitsubishiheavy_2eh_503',['ir_MitsubishiHeavy.h',['../ir__MitsubishiHeavy_8h.html',1,'']]], - ['ir_5fmultibrackets_2ecpp_504',['ir_Multibrackets.cpp',['../ir__Multibrackets_8cpp.html',1,'']]], - ['ir_5fmwm_2ecpp_505',['ir_MWM.cpp',['../ir__MWM_8cpp.html',1,'']]], - ['ir_5fnec_2ecpp_506',['ir_NEC.cpp',['../ir__NEC_8cpp.html',1,'']]], - ['ir_5fnec_2eh_507',['ir_NEC.h',['../ir__NEC_8h.html',1,'']]], - ['ir_5fneoclima_2ecpp_508',['ir_Neoclima.cpp',['../ir__Neoclima_8cpp.html',1,'']]], - ['ir_5fneoclima_2eh_509',['ir_Neoclima.h',['../ir__Neoclima_8h.html',1,'']]], - ['ir_5fnikai_2ecpp_510',['ir_Nikai.cpp',['../ir__Nikai_8cpp.html',1,'']]], - ['ir_5fpanasonic_2ecpp_511',['ir_Panasonic.cpp',['../ir__Panasonic_8cpp.html',1,'']]], - ['ir_5fpanasonic_2eh_512',['ir_Panasonic.h',['../ir__Panasonic_8h.html',1,'']]], - ['ir_5fpioneer_2ecpp_513',['ir_Pioneer.cpp',['../ir__Pioneer_8cpp.html',1,'']]], - ['ir_5fpronto_2ecpp_514',['ir_Pronto.cpp',['../ir__Pronto_8cpp.html',1,'']]], - ['ir_5frc5_5frc6_2ecpp_515',['ir_RC5_RC6.cpp',['../ir__RC5__RC6_8cpp.html',1,'']]], - ['ir_5frcmm_2ecpp_516',['ir_RCMM.cpp',['../ir__RCMM_8cpp.html',1,'']]], - ['ir_5fsamsung_2ecpp_517',['ir_Samsung.cpp',['../ir__Samsung_8cpp.html',1,'']]], - ['ir_5fsamsung_2eh_518',['ir_Samsung.h',['../ir__Samsung_8h.html',1,'']]], - ['ir_5fsanyo_2ecpp_519',['ir_Sanyo.cpp',['../ir__Sanyo_8cpp.html',1,'']]], - ['ir_5fsanyo_2eh_520',['ir_Sanyo.h',['../ir__Sanyo_8h.html',1,'']]], - ['ir_5fsharp_2ecpp_521',['ir_Sharp.cpp',['../ir__Sharp_8cpp.html',1,'']]], - ['ir_5fsharp_2eh_522',['ir_Sharp.h',['../ir__Sharp_8h.html',1,'']]], - ['ir_5fsherwood_2ecpp_523',['ir_Sherwood.cpp',['../ir__Sherwood_8cpp.html',1,'']]], - ['ir_5fsony_2ecpp_524',['ir_Sony.cpp',['../ir__Sony_8cpp.html',1,'']]], - ['ir_5fsymphony_2ecpp_525',['ir_Symphony.cpp',['../ir__Symphony_8cpp.html',1,'']]], - ['ir_5ftcl_2ecpp_526',['ir_Tcl.cpp',['../ir__Tcl_8cpp.html',1,'']]], - ['ir_5ftcl_2eh_527',['ir_Tcl.h',['../ir__Tcl_8h.html',1,'']]], - ['ir_5fteco_2ecpp_528',['ir_Teco.cpp',['../ir__Teco_8cpp.html',1,'']]], - ['ir_5fteco_2eh_529',['ir_Teco.h',['../ir__Teco_8h.html',1,'']]], - ['ir_5ftoshiba_2ecpp_530',['ir_Toshiba.cpp',['../ir__Toshiba_8cpp.html',1,'']]], - ['ir_5ftoshiba_2eh_531',['ir_Toshiba.h',['../ir__Toshiba_8h.html',1,'']]], - ['ir_5ftrotec_2ecpp_532',['ir_Trotec.cpp',['../ir__Trotec_8cpp.html',1,'']]], - ['ir_5ftrotec_2eh_533',['ir_Trotec.h',['../ir__Trotec_8h.html',1,'']]], - ['ir_5fvestel_2ecpp_534',['ir_Vestel.cpp',['../ir__Vestel_8cpp.html',1,'']]], - ['ir_5fvestel_2eh_535',['ir_Vestel.h',['../ir__Vestel_8h.html',1,'']]], - ['ir_5fvoltas_2ecpp_536',['ir_Voltas.cpp',['../ir__Voltas_8cpp.html',1,'']]], - ['ir_5fvoltas_2eh_537',['ir_Voltas.h',['../ir__Voltas_8h.html',1,'']]], - ['ir_5fwhirlpool_2ecpp_538',['ir_Whirlpool.cpp',['../ir__Whirlpool_8cpp.html',1,'']]], - ['ir_5fwhirlpool_2eh_539',['ir_Whirlpool.h',['../ir__Whirlpool_8h.html',1,'']]], - ['ir_5fwhynter_2ecpp_540',['ir_Whynter.cpp',['../ir__Whynter_8cpp.html',1,'']]], - ['ir_5fzepeal_2ecpp_541',['ir_Zepeal.cpp',['../ir__Zepeal_8cpp.html',1,'']]], - ['irac_542',['IRac',['../classIRac.html',1,'IRac'],['../classIRac.html#abb0864e277d4f6c68a92c2729112a40d',1,'IRac::IRac()']]], - ['irac_2ecpp_543',['IRac.cpp',['../IRac_8cpp.html',1,'']]], - ['irac_2eh_544',['IRac.h',['../IRac_8h.html',1,'']]], - ['iracutils_545',['IRAcUtils',['../namespaceIRAcUtils.html',1,'']]], - ['irairwellac_546',['IRAirwellAc',['../classIRAirwellAc.html',1,'IRAirwellAc'],['../classIRAirwellAc.html#a38cfe20bff4522034b16d64df64750e8',1,'IRAirwellAc::IRAirwellAc()']]], - ['iramcorac_547',['IRAmcorAc',['../classIRAmcorAc.html',1,'IRAmcorAc'],['../classIRAmcorAc.html#a92db59a33c861dcd3b2960e9711f97c4',1,'IRAmcorAc::IRAmcorAc()']]], - ['irargoac_548',['IRArgoAC',['../classIRArgoAC.html',1,'IRArgoAC'],['../classIRArgoAC.html#ad6c2250738397441b8f956d1477b7d70',1,'IRArgoAC::IRArgoAC()']]], - ['ircarrierac64_549',['IRCarrierAc64',['../classIRCarrierAc64.html',1,'IRCarrierAc64'],['../classIRCarrierAc64.html#ac225c0f24a0e385a145375ff447ab79b',1,'IRCarrierAc64::IRCarrierAc64()']]], - ['ircoolixac_550',['IRCoolixAC',['../classIRCoolixAC.html',1,'IRCoolixAC'],['../classIRCoolixAC.html#a043ad3b74e964e39b111e1fcf9e55f42',1,'IRCoolixAC::IRCoolixAC()']]], - ['ircoronaac_551',['IRCoronaAc',['../classIRCoronaAc.html',1,'IRCoronaAc'],['../classIRCoronaAc.html#aa96f1ffce21cdec5b3901ebbb1c63fbb',1,'IRCoronaAc::IRCoronaAc()']]], - ['irdaikin128_552',['IRDaikin128',['../classIRDaikin128.html',1,'IRDaikin128'],['../classIRDaikin128.html#aa669739541daf1a2b39ce1cd0424c43b',1,'IRDaikin128::IRDaikin128()']]], - ['irdaikin152_553',['IRDaikin152',['../classIRDaikin152.html',1,'IRDaikin152'],['../classIRDaikin152.html#a68dce79bab5890d9aea325a45ef8e4a3',1,'IRDaikin152::IRDaikin152()']]], - ['irdaikin160_554',['IRDaikin160',['../classIRDaikin160.html',1,'IRDaikin160'],['../classIRDaikin160.html#a76fb744b041c38abb730bce0538a497a',1,'IRDaikin160::IRDaikin160()']]], - ['irdaikin176_555',['IRDaikin176',['../classIRDaikin176.html',1,'IRDaikin176'],['../classIRDaikin176.html#accfe7c3f34351844d12059455f65f312',1,'IRDaikin176::IRDaikin176()']]], - ['irdaikin2_556',['IRDaikin2',['../classIRDaikin2.html',1,'IRDaikin2'],['../classIRDaikin2.html#a3ffe908313f162b92e92307578592fca',1,'IRDaikin2::IRDaikin2()']]], - ['irdaikin216_557',['IRDaikin216',['../classIRDaikin216.html',1,'IRDaikin216'],['../classIRDaikin216.html#ad802bde79e5ee2d16e3b09fbc8bbe8df',1,'IRDaikin216::IRDaikin216()']]], - ['irdaikin64_558',['IRDaikin64',['../classIRDaikin64.html',1,'IRDaikin64'],['../classIRDaikin64.html#a88855df33ce903884b21d2ef4771e94f',1,'IRDaikin64::IRDaikin64()']]], - ['irdaikinesp_559',['IRDaikinESP',['../classIRDaikinESP.html',1,'IRDaikinESP'],['../classIRDaikinESP.html#a2652cb45e07e8a4329c16cded9f6ad9a',1,'IRDaikinESP::IRDaikinESP()']]], - ['irdelonghiac_560',['IRDelonghiAc',['../classIRDelonghiAc.html',1,'IRDelonghiAc'],['../classIRDelonghiAc.html#aa6f8661cf6baa369a0a5b9d775c392e0',1,'IRDelonghiAc::IRDelonghiAc()']]], - ['irelectraac_561',['IRElectraAc',['../classIRElectraAc.html',1,'IRElectraAc'],['../classIRElectraAc.html#a2f56ad22943c3d261b1d2ef88d86e300',1,'IRElectraAc::IRElectraAc()']]], - ['irfujitsuac_562',['IRFujitsuAC',['../classIRFujitsuAC.html',1,'IRFujitsuAC'],['../classIRFujitsuAC.html#acdb70f239884507f540b872ba25747ce',1,'IRFujitsuAC::IRFujitsuAC()']]], - ['irgoodweatherac_563',['IRGoodweatherAc',['../classIRGoodweatherAc.html',1,'IRGoodweatherAc'],['../classIRGoodweatherAc.html#a681feff1a58125cde97b2d7ed0ba775e',1,'IRGoodweatherAc::IRGoodweatherAc()']]], - ['irgreeac_564',['IRGreeAC',['../classIRGreeAC.html',1,'IRGreeAC'],['../classIRGreeAC.html#abf7ead6ebee4bc776f83fb55f6fe6b63',1,'IRGreeAC::IRGreeAC()']]], - ['irhaierac_565',['IRHaierAC',['../classIRHaierAC.html',1,'IRHaierAC'],['../classIRHaierAC.html#a0b78060cbd150cd886a409adc2dea49c',1,'IRHaierAC::IRHaierAC()']]], - ['irhaieracyrw02_566',['IRHaierACYRW02',['../classIRHaierACYRW02.html',1,'IRHaierACYRW02'],['../classIRHaierACYRW02.html#afd9354c36df33434840bbc5f38d4e7ed',1,'IRHaierACYRW02::IRHaierACYRW02()']]], - ['irhitachiac_567',['IRHitachiAc',['../classIRHitachiAc.html',1,'IRHitachiAc'],['../classIRHitachiAc.html#a4c43e95e0cc28339e7162d7090ae16bf',1,'IRHitachiAc::IRHitachiAc()']]], - ['irhitachiac1_568',['IRHitachiAc1',['../classIRHitachiAc1.html',1,'IRHitachiAc1'],['../classIRHitachiAc1.html#ac00cfd9a60e08d34f292878de47f622f',1,'IRHitachiAc1::IRHitachiAc1()']]], - ['irhitachiac3_569',['IRHitachiAc3',['../classIRHitachiAc3.html',1,'IRHitachiAc3'],['../classIRHitachiAc3.html#adef0e7ad217f078ce418e3aa82b9cb86',1,'IRHitachiAc3::IRHitachiAc3()']]], - ['irhitachiac344_570',['IRHitachiAc344',['../classIRHitachiAc344.html',1,'IRHitachiAc344'],['../classIRHitachiAc424.html#a3c885313a79bf8c02bc5eb9f7d80088b',1,'IRHitachiAc424::IRHitachiAc344()'],['../classIRHitachiAc344.html#afbff8a1dd2777880d2d1713d07e1d419',1,'IRHitachiAc344::IRHitachiAc344()']]], - ['irhitachiac424_571',['IRHitachiAc424',['../classIRHitachiAc424.html',1,'IRHitachiAc424'],['../classIRHitachiAc424.html#add708c10a56d20621ef65a0ddcc2aac1',1,'IRHitachiAc424::IRHitachiAc424()']]], - ['irkelvinatorac_572',['IRKelvinatorAC',['../classIRKelvinatorAC.html',1,'IRKelvinatorAC'],['../classIRKelvinatorAC.html#a111dd384b1898a4fb880a19b6d1b1635',1,'IRKelvinatorAC::IRKelvinatorAC()']]], - ['irlgac_573',['IRLgAc',['../classIRLgAc.html',1,'IRLgAc'],['../classIRLgAc.html#a290636496526a9ed2057532649709375',1,'IRLgAc::IRLgAc()']]], - ['irmideaac_574',['IRMideaAC',['../classIRMideaAC.html',1,'IRMideaAC'],['../classIRMideaAC.html#a1ef2f532a1e6c6bfe89617d3fd0d9082',1,'IRMideaAC::IRMideaAC()']]], - ['irmitsubishi112_575',['IRMitsubishi112',['../classIRMitsubishi112.html',1,'IRMitsubishi112'],['../classIRMitsubishi112.html#adea6f3b7b7619b0bf6da4a94cec9d712',1,'IRMitsubishi112::IRMitsubishi112()']]], - ['irmitsubishi136_576',['IRMitsubishi136',['../classIRMitsubishi136.html',1,'IRMitsubishi136'],['../classIRMitsubishi136.html#ad92926b993869d0695f11ddb999b2090',1,'IRMitsubishi136::IRMitsubishi136()']]], - ['irmitsubishiac_577',['IRMitsubishiAC',['../classIRMitsubishiAC.html',1,'IRMitsubishiAC'],['../classIRMitsubishiAC.html#a83fabfd9ebed5cef8dd2a18a85fdf4e6',1,'IRMitsubishiAC::IRMitsubishiAC()']]], - ['irmitsubishiheavy152ac_578',['IRMitsubishiHeavy152Ac',['../classIRMitsubishiHeavy152Ac.html',1,'IRMitsubishiHeavy152Ac'],['../classIRMitsubishiHeavy152Ac.html#a704e9f96c2d0a07f9ba16a400d9c97aa',1,'IRMitsubishiHeavy152Ac::IRMitsubishiHeavy152Ac()']]], - ['irmitsubishiheavy88ac_579',['IRMitsubishiHeavy88Ac',['../classIRMitsubishiHeavy88Ac.html',1,'IRMitsubishiHeavy88Ac'],['../classIRMitsubishiHeavy88Ac.html#aceabecf4a615e807a4636ff5990d77d7',1,'IRMitsubishiHeavy88Ac::IRMitsubishiHeavy88Ac()']]], - ['irneoclimaac_580',['IRNeoclimaAc',['../classIRNeoclimaAc.html',1,'IRNeoclimaAc'],['../classIRNeoclimaAc.html#a99ed2962176e5f12f8387fab977c6395',1,'IRNeoclimaAc::IRNeoclimaAc()']]], - ['irpanasonicac_581',['IRPanasonicAc',['../classIRPanasonicAc.html',1,'IRPanasonicAc'],['../classIRPanasonicAc.html#ae8b0f4518ee1a913d47a7101b0a11185',1,'IRPanasonicAc::IRPanasonicAc()']]], - ['irparams_582',['irparams',['../IRrecv_8cpp.html#a5620be27a7445f25d43dbe3432ed6fd1',1,'IRrecv.cpp']]], - ['irparams_5fsave_583',['irparams_save',['../classIRrecv.html#a6fdac84ce51ce119972bf121ccc95aab',1,'IRrecv::irparams_save()'],['../IRrecv_8cpp.html#a96e84ae171529ee954c53e2e938dd998',1,'irparams_save(): IRrecv.cpp']]], - ['irparams_5ft_584',['irparams_t',['../structirparams__t.html',1,'']]], - ['irpin_585',['IRpin',['../classIRsend.html#ae4a6ea1e72f4861167002d6e7bf17b7c',1,'IRsend']]], - ['irrecv_586',['IRrecv',['../classIRrecv.html',1,'IRrecv'],['../classIRrecv.html#a8fe4d26ef1f863db1db9994fed5fc209',1,'IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false, const uint8_t timer_num=kDefaultESP32Timer)'],['../classIRrecv.html#a3bb1bcc1c1a3184294dd35c8f6f758b1',1,'IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false)']]], - ['irrecv_2ecpp_587',['IRrecv.cpp',['../IRrecv_8cpp.html',1,'']]], - ['irrecv_2eh_588',['IRrecv.h',['../IRrecv_8h.html',1,'']]], - ['irremote_5fmux_589',['irremote_mux',['../IRrecv_8cpp.html#ad2612f65707186ef7df0179d3636b4ea',1,'IRrecv.cpp']]], - ['irremoteesp8266_2eh_590',['IRremoteESP8266.h',['../IRremoteESP8266_8h.html',1,'']]], - ['irsamsungac_591',['IRSamsungAc',['../classIRSamsungAc.html',1,'IRSamsungAc'],['../classIRSamsungAc.html#a0db771b80d7d7a63b5ecb4b25efee609',1,'IRSamsungAc::IRSamsungAc()']]], - ['irsanyoac_592',['IRSanyoAc',['../classIRSanyoAc.html',1,'IRSanyoAc'],['../classIRSanyoAc.html#ab7b9a1f1685993b95807f7e48624e4e2',1,'IRSanyoAc::IRSanyoAc()']]], - ['irsend_593',['IRsend',['../classIRsend.html',1,'IRsend'],['../classIRsend.html#a792780b7de996c90c86dd7b700eaf271',1,'IRsend::IRsend()']]], - ['irsend_2ecpp_594',['IRsend.cpp',['../IRsend_8cpp.html',1,'']]], - ['irsend_2eh_595',['IRsend.h',['../IRsend_8h.html',1,'']]], - ['irsharpac_596',['IRSharpAc',['../classIRSharpAc.html',1,'IRSharpAc'],['../classIRSharpAc.html#a30b5f8f634a41c943b4e1453d12bc980',1,'IRSharpAc::IRSharpAc()']]], - ['irtcl112ac_597',['IRTcl112Ac',['../classIRTcl112Ac.html',1,'IRTcl112Ac'],['../classIRTcl112Ac.html#a061bdfdf4444cb5e06fa90824985c1ec',1,'IRTcl112Ac::IRTcl112Ac()']]], - ['irtecoac_598',['IRTecoAc',['../classIRTecoAc.html',1,'IRTecoAc'],['../classIRTecoAc.html#a56e3f31a080bfd565570bf3b165e71d4',1,'IRTecoAc::IRTecoAc()']]], - ['irtext_2ecpp_599',['IRtext.cpp',['../IRtext_8cpp.html',1,'']]], - ['irtext_2eh_600',['IRtext.h',['../IRtext_8h.html',1,'']]], - ['irtimer_601',['IRtimer',['../classIRtimer.html',1,'IRtimer'],['../classIRtimer.html#a09d64d689137ef8ca68973bb9e550e76',1,'IRtimer::IRtimer()']]], - ['irtimer_2ecpp_602',['IRtimer.cpp',['../IRtimer_8cpp.html',1,'']]], - ['irtimer_2eh_603',['IRtimer.h',['../IRtimer_8h.html',1,'']]], - ['irtoshibaac_604',['IRToshibaAC',['../classIRToshibaAC.html',1,'IRToshibaAC'],['../classIRToshibaAC.html#abf2b3db316f7d6acb20c4f7ea2476ec2',1,'IRToshibaAC::IRToshibaAC()']]], - ['irtrotecesp_605',['IRTrotecESP',['../classIRTrotecESP.html',1,'IRTrotecESP'],['../classIRTrotecESP.html#a1b56b6e55bf133ccab6a482090408ee5',1,'IRTrotecESP::IRTrotecESP()']]], - ['irutils_606',['irutils',['../namespaceirutils.html',1,'']]], - ['irutils_2ecpp_607',['IRutils.cpp',['../IRutils_8cpp.html',1,'']]], - ['irutils_2eh_608',['IRutils.h',['../IRutils_8h.html',1,'']]], - ['irvestelac_609',['IRVestelAc',['../classIRVestelAc.html',1,'IRVestelAc'],['../classIRVestelAc.html#af1583ef81331edf112a0d04771c2cbec',1,'IRVestelAc::IRVestelAc()']]], - ['irvoltas_610',['IRVoltas',['../classIRVoltas.html',1,'IRVoltas'],['../classIRVoltas.html#a4bfb0c5b16507d330abea2a9147f8332',1,'IRVoltas::IRVoltas()']]], - ['irwhirlpoolac_611',['IRWhirlpoolAc',['../classIRWhirlpoolAc.html',1,'IRWhirlpoolAc'],['../classIRWhirlpoolAc.html#a89bc9d440a5f7d04a602d7bc73904bc2',1,'IRWhirlpoolAc::IRWhirlpoolAc()']]], - ['iseconotoggle_612',['isEconoToggle',['../classIRMideaAC.html#a227aeed678af6da49b510cb67b02991e',1,'IRMideaAC']]], - ['isofftimeractive_613',['isOffTimerActive',['../classIRVestelAc.html#aa756171e82ed1b43593b81aa3a63b812',1,'IRVestelAc']]], - ['isofftimerenabled_614',['isOffTimerEnabled',['../classIRPanasonicAc.html#ac8e218b4886d66889734b01232767c8a',1,'IRPanasonicAc::isOffTimerEnabled()'],['../classIRWhirlpoolAc.html#a1bc1366524cf3c7fb426e908a166801f',1,'IRWhirlpoolAc::isOffTimerEnabled()']]], - ['isontimeractive_615',['isOnTimerActive',['../classIRVestelAc.html#a67f0e970af50fcf6e01e4cac85c5862a',1,'IRVestelAc']]], - ['isontimerenabled_616',['isOnTimerEnabled',['../classIRPanasonicAc.html#a04cbf8f5063a3892020d383c77abc57c',1,'IRPanasonicAc::isOnTimerEnabled()'],['../classIRWhirlpoolAc.html#aff1b8c2d063b376725a5a77745f6be3a',1,'IRWhirlpoolAc::isOnTimerEnabled()']]], - ['ispowerspecial_617',['isPowerSpecial',['../classIRSharpAc.html#a57072f2458897ffb9184769aca10b944',1,'IRSharpAc']]], - ['isprotocolsupported_618',['isProtocolSupported',['../classIRac.html#ad9c2fc9d07db70704f78a2d5f7be5b1c',1,'IRac']]], - ['isspecialstate_619',['isSpecialState',['../classIRCoolixAC.html#a51bde954328ca5887a8353ba5562b3db',1,'IRCoolixAC']]], - ['isswingvtoggle_620',['isSwingVToggle',['../classIRMideaAC.html#a5277fa1d077650be0edcf284db50d38b',1,'IRMideaAC']]], - ['istimecommand_621',['isTimeCommand',['../classIRVestelAc.html#ae811a07c1a8d82e7068c39b9ca73aaf1',1,'IRVestelAc']]], - ['istimeractive_622',['isTimerActive',['../classIRVestelAc.html#a160b73df8e1eda984f9bfbff3df7fa63',1,'IRVestelAc']]], - ['istimerenabled_623',['isTimerEnabled',['../classIRWhirlpoolAc.html#a5a713ffed99ab3450257d83e2d6e15ee',1,'IRWhirlpoolAc']]], - ['isvalidlgac_624',['isValidLgAc',['../classIRLgAc.html#a5984041eb12603ac1a277c28b355322a',1,'IRLgAc']]], - ['it_2dit_2eh_625',['it-IT.h',['../it-IT_8h.html',1,'']]], - ['internationalisation_20_28i18n_29_20_26_20locale_20files_626',['Internationalisation (I18N) & Locale Files',['../md_src_locale_README.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_c.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_c.js deleted file mode 100644 index 79e8d2a23..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_c.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['lasertag_3252',['LASERTAG',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada92eadf4fa6dd16da5b79a2fcbf729894',1,'IRremoteESP8266.h']]], - ['ledflag_3253',['ledFlag',['../classIRCoolixAC.html#a03ba5e0a6cb47a7bb054155c2111a69c',1,'IRCoolixAC']]], - ['ledoff_3254',['ledOff',['../classIRsend.html#ae71cc5aa99f894785fb4f7abc05841b2',1,'IRsend']]], - ['ledon_3255',['ledOn',['../classIRsend.html#a13d804171fa7c14aff4def38c6ffb6c8',1,'IRsend']]], - ['legopf_3256',['LEGOPF',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9a31bf5555b17ea7b115a5c2550fc1de',1,'IRremoteESP8266.h']]], - ['lg_3257',['lg',['../classIRac.html#afad31ecf9eae573882d53dd6629485fb',1,'IRac::lg()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadadf6c249ac7d923229f9e623eff9a61f4',1,'LG(): IRremoteESP8266.h']]], - ['lg2_3258',['LG2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8402547ec0b99b9b0efe97dec65badf9',1,'IRremoteESP8266.h']]], - ['lg_5fac_5fremote_5fmodel_5ft_3259',['lg_ac_remote_model_t',['../IRsend_8h.html#a50c54713e16502d280723334879dc83b',1,'IRsend.h']]], - ['light_3260',['light',['../structstdAc_1_1state__t.html#a51c3a5c4703ea49b420d70aeb18b6b9b',1,'stdAc::state_t::light()'],['../unionGreeProtocol.html#a72092768725667d3bce381a6e2900c66',1,'GreeProtocol::Light()'],['../unionVoltasProtocol.html#a811a0de66771c693831740440aac460c',1,'VoltasProtocol::Light()']]], - ['llword_3261',['llword',['../unionmagiquest.html#ad57fbc75ab289c3e93b94be0b2187d65',1,'magiquest']]], - ['lowlevelsanitycheck_3262',['lowLevelSanityCheck',['../namespaceirutils.html#af67b75834051c4aced358b274c1c55a8',1,'irutils']]], - ['lutron_3263',['LUTRON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada76cc459b9e26d82ed82cf120272fd8cb',1,'IRremoteESP8266.h']]], - ['lword_3264',['lword',['../unionmagiquest.html#ac87102145311831a232002b52fe2d02c',1,'magiquest']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_e.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_e.js deleted file mode 100644 index fdf535332..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/all_e.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['nec_3303',['NEC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0811f93a25b0873e21979d569eeac05e',1,'IRremoteESP8266.h']]], - ['nec_5flike_3304',['NEC_LIKE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada97acfde550d201fa0abc3120098fb471',1,'IRremoteESP8266.h']]], - ['neoclima_3305',['neoclima',['../classIRac.html#a0e468b705922e58308c5e340499f2391',1,'IRac::neoclima()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac698e0c030768ed91207b0e63910c3e7',1,'NEOCLIMA(): IRremoteESP8266.h']]], - ['next_3306',['next',['../classIRac.html#ae85d7ac0c58028b2547518f88d3e98fe',1,'IRac']]], - ['nikai_3307',['NIKAI',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0bc180c4ab5e68798451f4799f7f9377',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_0.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_0.js deleted file mode 100644 index 5fa353bcb..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['airwellprotocol_3686',['AirwellProtocol',['../unionAirwellProtocol.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_1.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_1.js deleted file mode 100644 index b2ecc3726..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['decode_5fresults_3687',['decode_results',['../classdecode__results.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_2.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_2.js deleted file mode 100644 index ccf53fc13..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['greeprotocol_3688',['GreeProtocol',['../unionGreeProtocol.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_3.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_3.js deleted file mode 100644 index 7df4acc0d..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_3.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['haierprotocol_3689',['HaierProtocol',['../unionHaierProtocol.html',1,'']]], - ['haieryrw02protocol_3690',['HaierYRW02Protocol',['../unionHaierYRW02Protocol.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_4.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_4.js deleted file mode 100644 index b963f5d73..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_4.js +++ /dev/null @@ -1,54 +0,0 @@ -var searchData= -[ - ['irac_3691',['IRac',['../classIRac.html',1,'']]], - ['irairwellac_3692',['IRAirwellAc',['../classIRAirwellAc.html',1,'']]], - ['iramcorac_3693',['IRAmcorAc',['../classIRAmcorAc.html',1,'']]], - ['irargoac_3694',['IRArgoAC',['../classIRArgoAC.html',1,'']]], - ['ircarrierac64_3695',['IRCarrierAc64',['../classIRCarrierAc64.html',1,'']]], - ['ircoolixac_3696',['IRCoolixAC',['../classIRCoolixAC.html',1,'']]], - ['ircoronaac_3697',['IRCoronaAc',['../classIRCoronaAc.html',1,'']]], - ['irdaikin128_3698',['IRDaikin128',['../classIRDaikin128.html',1,'']]], - ['irdaikin152_3699',['IRDaikin152',['../classIRDaikin152.html',1,'']]], - ['irdaikin160_3700',['IRDaikin160',['../classIRDaikin160.html',1,'']]], - ['irdaikin176_3701',['IRDaikin176',['../classIRDaikin176.html',1,'']]], - ['irdaikin2_3702',['IRDaikin2',['../classIRDaikin2.html',1,'']]], - ['irdaikin216_3703',['IRDaikin216',['../classIRDaikin216.html',1,'']]], - ['irdaikin64_3704',['IRDaikin64',['../classIRDaikin64.html',1,'']]], - ['irdaikinesp_3705',['IRDaikinESP',['../classIRDaikinESP.html',1,'']]], - ['irdelonghiac_3706',['IRDelonghiAc',['../classIRDelonghiAc.html',1,'']]], - ['irelectraac_3707',['IRElectraAc',['../classIRElectraAc.html',1,'']]], - ['irfujitsuac_3708',['IRFujitsuAC',['../classIRFujitsuAC.html',1,'']]], - ['irgoodweatherac_3709',['IRGoodweatherAc',['../classIRGoodweatherAc.html',1,'']]], - ['irgreeac_3710',['IRGreeAC',['../classIRGreeAC.html',1,'']]], - ['irhaierac_3711',['IRHaierAC',['../classIRHaierAC.html',1,'']]], - ['irhaieracyrw02_3712',['IRHaierACYRW02',['../classIRHaierACYRW02.html',1,'']]], - ['irhitachiac_3713',['IRHitachiAc',['../classIRHitachiAc.html',1,'']]], - ['irhitachiac1_3714',['IRHitachiAc1',['../classIRHitachiAc1.html',1,'']]], - ['irhitachiac3_3715',['IRHitachiAc3',['../classIRHitachiAc3.html',1,'']]], - ['irhitachiac344_3716',['IRHitachiAc344',['../classIRHitachiAc344.html',1,'']]], - ['irhitachiac424_3717',['IRHitachiAc424',['../classIRHitachiAc424.html',1,'']]], - ['irkelvinatorac_3718',['IRKelvinatorAC',['../classIRKelvinatorAC.html',1,'']]], - ['irlgac_3719',['IRLgAc',['../classIRLgAc.html',1,'']]], - ['irmideaac_3720',['IRMideaAC',['../classIRMideaAC.html',1,'']]], - ['irmitsubishi112_3721',['IRMitsubishi112',['../classIRMitsubishi112.html',1,'']]], - ['irmitsubishi136_3722',['IRMitsubishi136',['../classIRMitsubishi136.html',1,'']]], - ['irmitsubishiac_3723',['IRMitsubishiAC',['../classIRMitsubishiAC.html',1,'']]], - ['irmitsubishiheavy152ac_3724',['IRMitsubishiHeavy152Ac',['../classIRMitsubishiHeavy152Ac.html',1,'']]], - ['irmitsubishiheavy88ac_3725',['IRMitsubishiHeavy88Ac',['../classIRMitsubishiHeavy88Ac.html',1,'']]], - ['irneoclimaac_3726',['IRNeoclimaAc',['../classIRNeoclimaAc.html',1,'']]], - ['irpanasonicac_3727',['IRPanasonicAc',['../classIRPanasonicAc.html',1,'']]], - ['irparams_5ft_3728',['irparams_t',['../structirparams__t.html',1,'']]], - ['irrecv_3729',['IRrecv',['../classIRrecv.html',1,'']]], - ['irsamsungac_3730',['IRSamsungAc',['../classIRSamsungAc.html',1,'']]], - ['irsanyoac_3731',['IRSanyoAc',['../classIRSanyoAc.html',1,'']]], - ['irsend_3732',['IRsend',['../classIRsend.html',1,'']]], - ['irsharpac_3733',['IRSharpAc',['../classIRSharpAc.html',1,'']]], - ['irtcl112ac_3734',['IRTcl112Ac',['../classIRTcl112Ac.html',1,'']]], - ['irtecoac_3735',['IRTecoAc',['../classIRTecoAc.html',1,'']]], - ['irtimer_3736',['IRtimer',['../classIRtimer.html',1,'']]], - ['irtoshibaac_3737',['IRToshibaAC',['../classIRToshibaAC.html',1,'']]], - ['irtrotecesp_3738',['IRTrotecESP',['../classIRTrotecESP.html',1,'']]], - ['irvestelac_3739',['IRVestelAc',['../classIRVestelAc.html',1,'']]], - ['irvoltas_3740',['IRVoltas',['../classIRVoltas.html',1,'']]], - ['irwhirlpoolac_3741',['IRWhirlpoolAc',['../classIRWhirlpoolAc.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_5.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_5.js deleted file mode 100644 index 2f778133b..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_5.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['magiquest_3742',['magiquest',['../unionmagiquest.html',1,'']]], - ['match_5fresult_5ft_3743',['match_result_t',['../structmatch__result__t.html',1,'']]], - ['mideaprotocol_3744',['MideaProtocol',['../unionMideaProtocol.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_6.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_6.js deleted file mode 100644 index cbee879dd..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['state_5ft_3745',['state_t',['../structstdAc_1_1state__t.html',1,'stdAc']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_7.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_7.js deleted file mode 100644 index d4ad19bbe..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['timerms_3746',['TimerMs',['../classTimerMs.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_8.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_8.js deleted file mode 100644 index d152491d1..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/classes_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['voltasprotocol_3747',['VoltasProtocol',['../unionVoltasProtocol.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/enums_5.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/enums_5.js deleted file mode 100644 index 989fd6fea..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/enums_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['opmode_5ft_7307',['opmode_t',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f',1,'stdAc']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/enums_7.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/enums_7.js deleted file mode 100644 index 4ab089529..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/enums_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['swingh_5ft_7309',['swingh_t',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147',1,'stdAc']]], - ['swingv_5ft_7310',['swingv_t',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43',1,'stdAc']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/enumvalues_10.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/enumvalues_10.js deleted file mode 100644 index ba7153f1a..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/enumvalues_10.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['tcl112ac_7439',['TCL112AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac4a6ebe702365620ed65ac6f484afda6',1,'IRremoteESP8266.h']]], - ['teco_7440',['TECO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3a15ee4466478d484508acc3d4d7a050',1,'IRremoteESP8266.h']]], - ['toshiba_5fac_7441',['TOSHIBA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada66de3fced9e8f97d1919bcf4d5726f3e',1,'IRremoteESP8266.h']]], - ['trotec_7442',['TROTEC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7d0f8056d221b37f68f80bace2b794b9',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_0.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_0.js deleted file mode 100644 index b04b51f5e..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_0.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['de_2dch_2eh_3751',['de-CH.h',['../de-CH_8h.html',1,'']]], - ['de_2dde_2eh_3752',['de-DE.h',['../de-DE_8h.html',1,'']]], - ['defaults_2eh_3753',['defaults.h',['../defaults_8h.html',1,'']]], - ['doxygen_5findex_2emd_3754',['doxygen_index.md',['../doxygen__index_8md.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_1.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_1.js deleted file mode 100644 index 04ad8e3d5..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_1.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['en_2dau_2eh_3755',['en-AU.h',['../en-AU_8h.html',1,'']]], - ['en_2die_2eh_3756',['en-IE.h',['../en-IE_8h.html',1,'']]], - ['en_2duk_2eh_3757',['en-UK.h',['../en-UK_8h.html',1,'']]], - ['en_2dus_2eh_3758',['en-US.h',['../en-US_8h.html',1,'']]], - ['es_2des_2eh_3759',['es-ES.h',['../es-ES_8h.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_2.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_2.js deleted file mode 100644 index ee0e70e92..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['fr_2dfr_2eh_3760',['fr-FR.h',['../fr-FR_8h.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_3.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_3.js deleted file mode 100644 index 2e60e146e..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_3.js +++ /dev/null @@ -1,109 +0,0 @@ -var searchData= -[ - ['i18n_2eh_3761',['i18n.h',['../i18n_8h.html',1,'']]], - ['ir_5fairwell_2ecpp_3762',['ir_Airwell.cpp',['../ir__Airwell_8cpp.html',1,'']]], - ['ir_5fairwell_2eh_3763',['ir_Airwell.h',['../ir__Airwell_8h.html',1,'']]], - ['ir_5faiwa_2ecpp_3764',['ir_Aiwa.cpp',['../ir__Aiwa_8cpp.html',1,'']]], - ['ir_5famcor_2ecpp_3765',['ir_Amcor.cpp',['../ir__Amcor_8cpp.html',1,'']]], - ['ir_5famcor_2eh_3766',['ir_Amcor.h',['../ir__Amcor_8h.html',1,'']]], - ['ir_5fargo_2ecpp_3767',['ir_Argo.cpp',['../ir__Argo_8cpp.html',1,'']]], - ['ir_5fargo_2eh_3768',['ir_Argo.h',['../ir__Argo_8h.html',1,'']]], - ['ir_5fcarrier_2ecpp_3769',['ir_Carrier.cpp',['../ir__Carrier_8cpp.html',1,'']]], - ['ir_5fcarrier_2eh_3770',['ir_Carrier.h',['../ir__Carrier_8h.html',1,'']]], - ['ir_5fcoolix_2ecpp_3771',['ir_Coolix.cpp',['../ir__Coolix_8cpp.html',1,'']]], - ['ir_5fcoolix_2eh_3772',['ir_Coolix.h',['../ir__Coolix_8h.html',1,'']]], - ['ir_5fcorona_2ecpp_3773',['ir_Corona.cpp',['../ir__Corona_8cpp.html',1,'']]], - ['ir_5fcorona_2eh_3774',['ir_Corona.h',['../ir__Corona_8h.html',1,'']]], - ['ir_5fdaikin_2ecpp_3775',['ir_Daikin.cpp',['../ir__Daikin_8cpp.html',1,'']]], - ['ir_5fdaikin_2eh_3776',['ir_Daikin.h',['../ir__Daikin_8h.html',1,'']]], - ['ir_5fdelonghi_2ecpp_3777',['ir_Delonghi.cpp',['../ir__Delonghi_8cpp.html',1,'']]], - ['ir_5fdelonghi_2eh_3778',['ir_Delonghi.h',['../ir__Delonghi_8h.html',1,'']]], - ['ir_5fdenon_2ecpp_3779',['ir_Denon.cpp',['../ir__Denon_8cpp.html',1,'']]], - ['ir_5fdish_2ecpp_3780',['ir_Dish.cpp',['../ir__Dish_8cpp.html',1,'']]], - ['ir_5fdoshisha_2ecpp_3781',['ir_Doshisha.cpp',['../ir__Doshisha_8cpp.html',1,'']]], - ['ir_5felectra_2ecpp_3782',['ir_Electra.cpp',['../ir__Electra_8cpp.html',1,'']]], - ['ir_5felectra_2eh_3783',['ir_Electra.h',['../ir__Electra_8h.html',1,'']]], - ['ir_5fepson_2ecpp_3784',['ir_Epson.cpp',['../ir__Epson_8cpp.html',1,'']]], - ['ir_5ffujitsu_2ecpp_3785',['ir_Fujitsu.cpp',['../ir__Fujitsu_8cpp.html',1,'']]], - ['ir_5ffujitsu_2eh_3786',['ir_Fujitsu.h',['../ir__Fujitsu_8h.html',1,'']]], - ['ir_5fgicable_2ecpp_3787',['ir_GICable.cpp',['../ir__GICable_8cpp.html',1,'']]], - ['ir_5fglobalcache_2ecpp_3788',['ir_GlobalCache.cpp',['../ir__GlobalCache_8cpp.html',1,'']]], - ['ir_5fgoodweather_2ecpp_3789',['ir_Goodweather.cpp',['../ir__Goodweather_8cpp.html',1,'']]], - ['ir_5fgoodweather_2eh_3790',['ir_Goodweather.h',['../ir__Goodweather_8h.html',1,'']]], - ['ir_5fgree_2ecpp_3791',['ir_Gree.cpp',['../ir__Gree_8cpp.html',1,'']]], - ['ir_5fgree_2eh_3792',['ir_Gree.h',['../ir__Gree_8h.html',1,'']]], - ['ir_5fhaier_2ecpp_3793',['ir_Haier.cpp',['../ir__Haier_8cpp.html',1,'']]], - ['ir_5fhaier_2eh_3794',['ir_Haier.h',['../ir__Haier_8h.html',1,'']]], - ['ir_5fhitachi_2ecpp_3795',['ir_Hitachi.cpp',['../ir__Hitachi_8cpp.html',1,'']]], - ['ir_5fhitachi_2eh_3796',['ir_Hitachi.h',['../ir__Hitachi_8h.html',1,'']]], - ['ir_5finax_2ecpp_3797',['ir_Inax.cpp',['../ir__Inax_8cpp.html',1,'']]], - ['ir_5fjvc_2ecpp_3798',['ir_JVC.cpp',['../ir__JVC_8cpp.html',1,'']]], - ['ir_5fkelvinator_2ecpp_3799',['ir_Kelvinator.cpp',['../ir__Kelvinator_8cpp.html',1,'']]], - ['ir_5fkelvinator_2eh_3800',['ir_Kelvinator.h',['../ir__Kelvinator_8h.html',1,'']]], - ['ir_5flasertag_2ecpp_3801',['ir_Lasertag.cpp',['../ir__Lasertag_8cpp.html',1,'']]], - ['ir_5flego_2ecpp_3802',['ir_Lego.cpp',['../ir__Lego_8cpp.html',1,'']]], - ['ir_5flg_2ecpp_3803',['ir_LG.cpp',['../ir__LG_8cpp.html',1,'']]], - ['ir_5flg_2eh_3804',['ir_LG.h',['../ir__LG_8h.html',1,'']]], - ['ir_5flutron_2ecpp_3805',['ir_Lutron.cpp',['../ir__Lutron_8cpp.html',1,'']]], - ['ir_5fmagiquest_2ecpp_3806',['ir_Magiquest.cpp',['../ir__Magiquest_8cpp.html',1,'']]], - ['ir_5fmagiquest_2eh_3807',['ir_Magiquest.h',['../ir__Magiquest_8h.html',1,'']]], - ['ir_5fmetz_2ecpp_3808',['ir_Metz.cpp',['../ir__Metz_8cpp.html',1,'']]], - ['ir_5fmidea_2ecpp_3809',['ir_Midea.cpp',['../ir__Midea_8cpp.html',1,'']]], - ['ir_5fmidea_2eh_3810',['ir_Midea.h',['../ir__Midea_8h.html',1,'']]], - ['ir_5fmitsubishi_2ecpp_3811',['ir_Mitsubishi.cpp',['../ir__Mitsubishi_8cpp.html',1,'']]], - ['ir_5fmitsubishi_2eh_3812',['ir_Mitsubishi.h',['../ir__Mitsubishi_8h.html',1,'']]], - ['ir_5fmitsubishiheavy_2ecpp_3813',['ir_MitsubishiHeavy.cpp',['../ir__MitsubishiHeavy_8cpp.html',1,'']]], - ['ir_5fmitsubishiheavy_2eh_3814',['ir_MitsubishiHeavy.h',['../ir__MitsubishiHeavy_8h.html',1,'']]], - ['ir_5fmultibrackets_2ecpp_3815',['ir_Multibrackets.cpp',['../ir__Multibrackets_8cpp.html',1,'']]], - ['ir_5fmwm_2ecpp_3816',['ir_MWM.cpp',['../ir__MWM_8cpp.html',1,'']]], - ['ir_5fnec_2ecpp_3817',['ir_NEC.cpp',['../ir__NEC_8cpp.html',1,'']]], - ['ir_5fnec_2eh_3818',['ir_NEC.h',['../ir__NEC_8h.html',1,'']]], - ['ir_5fneoclima_2ecpp_3819',['ir_Neoclima.cpp',['../ir__Neoclima_8cpp.html',1,'']]], - ['ir_5fneoclima_2eh_3820',['ir_Neoclima.h',['../ir__Neoclima_8h.html',1,'']]], - ['ir_5fnikai_2ecpp_3821',['ir_Nikai.cpp',['../ir__Nikai_8cpp.html',1,'']]], - ['ir_5fpanasonic_2ecpp_3822',['ir_Panasonic.cpp',['../ir__Panasonic_8cpp.html',1,'']]], - ['ir_5fpanasonic_2eh_3823',['ir_Panasonic.h',['../ir__Panasonic_8h.html',1,'']]], - ['ir_5fpioneer_2ecpp_3824',['ir_Pioneer.cpp',['../ir__Pioneer_8cpp.html',1,'']]], - ['ir_5fpronto_2ecpp_3825',['ir_Pronto.cpp',['../ir__Pronto_8cpp.html',1,'']]], - ['ir_5frc5_5frc6_2ecpp_3826',['ir_RC5_RC6.cpp',['../ir__RC5__RC6_8cpp.html',1,'']]], - ['ir_5frcmm_2ecpp_3827',['ir_RCMM.cpp',['../ir__RCMM_8cpp.html',1,'']]], - ['ir_5fsamsung_2ecpp_3828',['ir_Samsung.cpp',['../ir__Samsung_8cpp.html',1,'']]], - ['ir_5fsamsung_2eh_3829',['ir_Samsung.h',['../ir__Samsung_8h.html',1,'']]], - ['ir_5fsanyo_2ecpp_3830',['ir_Sanyo.cpp',['../ir__Sanyo_8cpp.html',1,'']]], - ['ir_5fsanyo_2eh_3831',['ir_Sanyo.h',['../ir__Sanyo_8h.html',1,'']]], - ['ir_5fsharp_2ecpp_3832',['ir_Sharp.cpp',['../ir__Sharp_8cpp.html',1,'']]], - ['ir_5fsharp_2eh_3833',['ir_Sharp.h',['../ir__Sharp_8h.html',1,'']]], - ['ir_5fsherwood_2ecpp_3834',['ir_Sherwood.cpp',['../ir__Sherwood_8cpp.html',1,'']]], - ['ir_5fsony_2ecpp_3835',['ir_Sony.cpp',['../ir__Sony_8cpp.html',1,'']]], - ['ir_5fsymphony_2ecpp_3836',['ir_Symphony.cpp',['../ir__Symphony_8cpp.html',1,'']]], - ['ir_5ftcl_2ecpp_3837',['ir_Tcl.cpp',['../ir__Tcl_8cpp.html',1,'']]], - ['ir_5ftcl_2eh_3838',['ir_Tcl.h',['../ir__Tcl_8h.html',1,'']]], - ['ir_5fteco_2ecpp_3839',['ir_Teco.cpp',['../ir__Teco_8cpp.html',1,'']]], - ['ir_5fteco_2eh_3840',['ir_Teco.h',['../ir__Teco_8h.html',1,'']]], - ['ir_5ftoshiba_2ecpp_3841',['ir_Toshiba.cpp',['../ir__Toshiba_8cpp.html',1,'']]], - ['ir_5ftoshiba_2eh_3842',['ir_Toshiba.h',['../ir__Toshiba_8h.html',1,'']]], - ['ir_5ftrotec_2ecpp_3843',['ir_Trotec.cpp',['../ir__Trotec_8cpp.html',1,'']]], - ['ir_5ftrotec_2eh_3844',['ir_Trotec.h',['../ir__Trotec_8h.html',1,'']]], - ['ir_5fvestel_2ecpp_3845',['ir_Vestel.cpp',['../ir__Vestel_8cpp.html',1,'']]], - ['ir_5fvestel_2eh_3846',['ir_Vestel.h',['../ir__Vestel_8h.html',1,'']]], - ['ir_5fvoltas_2ecpp_3847',['ir_Voltas.cpp',['../ir__Voltas_8cpp.html',1,'']]], - ['ir_5fvoltas_2eh_3848',['ir_Voltas.h',['../ir__Voltas_8h.html',1,'']]], - ['ir_5fwhirlpool_2ecpp_3849',['ir_Whirlpool.cpp',['../ir__Whirlpool_8cpp.html',1,'']]], - ['ir_5fwhirlpool_2eh_3850',['ir_Whirlpool.h',['../ir__Whirlpool_8h.html',1,'']]], - ['ir_5fwhynter_2ecpp_3851',['ir_Whynter.cpp',['../ir__Whynter_8cpp.html',1,'']]], - ['ir_5fzepeal_2ecpp_3852',['ir_Zepeal.cpp',['../ir__Zepeal_8cpp.html',1,'']]], - ['irac_2ecpp_3853',['IRac.cpp',['../IRac_8cpp.html',1,'']]], - ['irac_2eh_3854',['IRac.h',['../IRac_8h.html',1,'']]], - ['irrecv_2ecpp_3855',['IRrecv.cpp',['../IRrecv_8cpp.html',1,'']]], - ['irrecv_2eh_3856',['IRrecv.h',['../IRrecv_8h.html',1,'']]], - ['irremoteesp8266_2eh_3857',['IRremoteESP8266.h',['../IRremoteESP8266_8h.html',1,'']]], - ['irsend_2ecpp_3858',['IRsend.cpp',['../IRsend_8cpp.html',1,'']]], - ['irsend_2eh_3859',['IRsend.h',['../IRsend_8h.html',1,'']]], - ['irtext_2ecpp_3860',['IRtext.cpp',['../IRtext_8cpp.html',1,'']]], - ['irtext_2eh_3861',['IRtext.h',['../IRtext_8h.html',1,'']]], - ['irtimer_2ecpp_3862',['IRtimer.cpp',['../IRtimer_8cpp.html',1,'']]], - ['irtimer_2eh_3863',['IRtimer.h',['../IRtimer_8h.html',1,'']]], - ['irutils_2ecpp_3864',['IRutils.cpp',['../IRutils_8cpp.html',1,'']]], - ['irutils_2eh_3865',['IRutils.h',['../IRutils_8h.html',1,'']]], - ['it_2dit_2eh_3866',['it-IT.h',['../it-IT_8h.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_4.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_4.js deleted file mode 100644 index 59f33405e..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['readme_2emd_3867',['README.md',['../README_8md.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_5.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_5.js deleted file mode 100644 index 9cb96572a..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/files_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['zh_2dcn_2eh_3868',['zh-CN.h',['../zh-CN_8h.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_1.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_1.js deleted file mode 100644 index 44f1b298f..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_1.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['add_3886',['add',['../classIRtimer.html#aa8e3ff975ae5468b4727790c828fa032',1,'IRtimer::add()'],['../classTimerMs.html#a77bfc23a029a9172c3dbac03f746b0cb',1,'TimerMs::add()']]], - ['addbooltostring_3887',['addBoolToString',['../namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b',1,'irutils']]], - ['adddaytostring_3888',['addDayToString',['../namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f',1,'irutils']]], - ['addfantostring_3889',['addFanToString',['../namespaceirutils.html#ae023bbabc452173d348c14eac7d86ab4',1,'irutils']]], - ['addinttostring_3890',['addIntToString',['../namespaceirutils.html#a772e623c4b60208200e02afbaec66651',1,'irutils']]], - ['addlabeledstring_3891',['addLabeledString',['../namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b',1,'irutils']]], - ['addmodeltostring_3892',['addModelToString',['../namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367',1,'irutils']]], - ['addmodetostring_3893',['addModeToString',['../namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e',1,'irutils']]], - ['addtemptostring_3894',['addTempToString',['../namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85',1,'irutils']]], - ['airwell_3895',['airwell',['../classIRac.html#a26cd62e09250d87b652d35406ebfb159',1,'IRac']]], - ['amcor_3896',['amcor',['../classIRac.html#a4bad16621b232572e14fe4a53f678131',1,'IRac']]], - ['argo_3897',['argo',['../classIRac.html#aa06ee1314529dbf96f4e6f3c28ea6821',1,'IRac']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_13.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_13.js deleted file mode 100644 index 9dc71a1d7..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_13.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['uint64tostring_4531',['uint64ToString',['../IRutils_8cpp.html#a9f6ddef74b41ef6f8d2805fcfc396420',1,'uint64ToString(uint64_t input, uint8_t base): IRutils.cpp'],['../IRutils_8h.html#a781650451d38303e80da677539f574ee',1,'uint64ToString(uint64_t input, uint8_t base=10): IRutils.cpp']]], - ['uint8tobcd_4532',['uint8ToBcd',['../namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1',1,'irutils']]], - ['updatesavedstate_4533',['updateSavedState',['../classIRCoolixAC.html#a1f39630b328939307bb08c18e56e9ad3',1,'IRCoolixAC']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_15.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_15.js deleted file mode 100644 index 542a34957..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_15.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['whirlpool_4538',['whirlpool',['../classIRac.html#ae5f7a03589f614c03c5ad8629100b05a',1,'IRac']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_17.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_17.js deleted file mode 100644 index d3edaf7de..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_17.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_7eirrecv_4540',['~IRrecv',['../classIRrecv.html#a87d4cca5e350177cb0922842dda1eb5b',1,'IRrecv']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_4.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_4.js deleted file mode 100644 index f582fdfa5..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_4.js +++ /dev/null @@ -1,98 +0,0 @@ -var searchData= -[ - ['daikin_3935',['daikin',['../classIRac.html#afb6d77bbeb5b2465437cef4f58b83e0e',1,'IRac']]], - ['daikin128_3936',['daikin128',['../classIRac.html#a8fe7c254e1bcb32b6b6fdc1f91693a50',1,'IRac']]], - ['daikin152_3937',['daikin152',['../classIRac.html#a6dff8e608e3e9fecffe71c3fd1ebe74e',1,'IRac']]], - ['daikin160_3938',['daikin160',['../classIRac.html#a3b34f44d713efa52f30d43405cde831c',1,'IRac']]], - ['daikin176_3939',['daikin176',['../classIRac.html#aaae173fd58a7b53c3f4d2edbf7c4afe7',1,'IRac']]], - ['daikin2_3940',['daikin2',['../classIRac.html#a89eddc0e1b3c41c608208d2752dc954c',1,'IRac']]], - ['daikin216_3941',['daikin216',['../classIRac.html#a101ac8b9e9564e557ef1a1f61ff111d9',1,'IRac']]], - ['daikin64_3942',['daikin64',['../classIRac.html#a074db6fc0cff2878d80a397020e1b249',1,'IRac']]], - ['decode_3943',['decode',['../classIRrecv.html#aeaa5c07a8b46f8fbb982f996cc1f9f4b',1,'IRrecv']]], - ['decodeairwell_3944',['decodeAirwell',['../classIRrecv.html#acf4635d5ee146a82498cb0c269b6af41',1,'IRrecv']]], - ['decodeaiwarct501_3945',['decodeAiwaRCT501',['../classIRrecv.html#aa4d678376a4c0f8ea953474a6f5ef9d2',1,'IRrecv']]], - ['decodeamcor_3946',['decodeAmcor',['../classIRrecv.html#a8d81fcfb47e36925975d313027689a44',1,'IRrecv']]], - ['decodeargo_3947',['decodeArgo',['../classIRrecv.html#a94f12dc000a6e7b75ea8680fd48fc487',1,'IRrecv']]], - ['decodecarrierac_3948',['decodeCarrierAC',['../classIRrecv.html#acf3d1c37038120a5c0996d92577ce74a',1,'IRrecv']]], - ['decodecarrierac40_3949',['decodeCarrierAC40',['../classIRrecv.html#a4bdb35ec34f49401a6b9becd15b8a3b5',1,'IRrecv']]], - ['decodecarrierac64_3950',['decodeCarrierAC64',['../classIRrecv.html#a79d03c31da48a385ab47cc8f342ef9b3',1,'IRrecv']]], - ['decodecoolix_3951',['decodeCOOLIX',['../classIRrecv.html#a964af7e72e2133688f0596c718cb98ca',1,'IRrecv']]], - ['decodecoronaac_3952',['decodeCoronaAc',['../classIRrecv.html#a981cba14551c93af57f9c1c0e1775d12',1,'IRrecv']]], - ['decodedaikin_3953',['decodeDaikin',['../classIRrecv.html#a141f0de9f4cae8daeb025aff3904ecaa',1,'IRrecv']]], - ['decodedaikin128_3954',['decodeDaikin128',['../classIRrecv.html#ac7188577c874d9f8f19304a3ec775415',1,'IRrecv']]], - ['decodedaikin152_3955',['decodeDaikin152',['../classIRrecv.html#ab20a6586b4e56cc428012ec96f5ccc2c',1,'IRrecv']]], - ['decodedaikin160_3956',['decodeDaikin160',['../classIRrecv.html#af0b9822defe6b29099079d664d9dc413',1,'IRrecv']]], - ['decodedaikin176_3957',['decodeDaikin176',['../classIRrecv.html#aa142d1340201b6fdc5b462f46fe21ee0',1,'IRrecv']]], - ['decodedaikin2_3958',['decodeDaikin2',['../classIRrecv.html#a4c4799a0d45ea5562159c46939617d80',1,'IRrecv']]], - ['decodedaikin216_3959',['decodeDaikin216',['../classIRrecv.html#a7f860686a5c58aa8f4d1842cfb15b2f9',1,'IRrecv']]], - ['decodedaikin64_3960',['decodeDaikin64',['../classIRrecv.html#a030701f081a9c6eab0c07b75433b524c',1,'IRrecv']]], - ['decodedelonghiac_3961',['decodeDelonghiAc',['../classIRrecv.html#a8c91cc83770d243e942387cc16e9ca6f',1,'IRrecv']]], - ['decodedenon_3962',['decodeDenon',['../classIRrecv.html#a0b1bd1c817cb43bc3755126191b7f4a2',1,'IRrecv']]], - ['decodedish_3963',['decodeDISH',['../classIRrecv.html#a851776d9178aeb706d9a1abd3f254e31',1,'IRrecv']]], - ['decodedoshisha_3964',['decodeDoshisha',['../classIRrecv.html#a675c45e6b32aaeca3de734ccf2f0c819',1,'IRrecv']]], - ['decodeelectraac_3965',['decodeElectraAC',['../classIRrecv.html#ad3a7be8afc36451c8e28e27f3c3e9aaa',1,'IRrecv']]], - ['decodeepson_3966',['decodeEpson',['../classIRrecv.html#aaadef8415f273ba25f4086fecd681d2e',1,'IRrecv']]], - ['decodefujitsuac_3967',['decodeFujitsuAC',['../classIRrecv.html#aa3778bdf994bf9c99ac48ef95434a826',1,'IRrecv']]], - ['decodegicable_3968',['decodeGICable',['../classIRrecv.html#afade8dac9b1d023e5e0946e6b2c08aea',1,'IRrecv']]], - ['decodegoodweather_3969',['decodeGoodweather',['../classIRrecv.html#a64650ce7dbaf5fc860a6a253d906e9de',1,'IRrecv']]], - ['decodegree_3970',['decodeGree',['../classIRrecv.html#a2e756342d7524a13d53d6c656700638c',1,'IRrecv']]], - ['decodehaierac_3971',['decodeHaierAC',['../classIRrecv.html#ad97403174f05197a7fa9a4a0107e3111',1,'IRrecv']]], - ['decodehaieracyrw02_3972',['decodeHaierACYRW02',['../classIRrecv.html#a281fb9d972fee75db49209c42f649822',1,'IRrecv']]], - ['decodehash_3973',['decodeHash',['../classIRrecv.html#a7c15fbfa7936ca474712a1953911fd06',1,'IRrecv']]], - ['decodehitachiac_3974',['decodeHitachiAC',['../classIRrecv.html#aa42facfffc0e304005272b6ddd4583c8',1,'IRrecv']]], - ['decodehitachiac1_3975',['decodeHitachiAC1',['../classIRrecv.html#a122e0dcbf14c90ec2d77399acce21459',1,'IRrecv']]], - ['decodehitachiac3_3976',['decodeHitachiAc3',['../classIRrecv.html#a113bc834eff00f55d5545ce3fa1ab203',1,'IRrecv']]], - ['decodehitachiac424_3977',['decodeHitachiAc424',['../classIRrecv.html#a01c3dda56d6d916076fa1affa2213129',1,'IRrecv']]], - ['decodeinax_3978',['decodeInax',['../classIRrecv.html#a94545c6a8da027b9cb0e23ecba4c29d8',1,'IRrecv']]], - ['decodejvc_3979',['decodeJVC',['../classIRrecv.html#a25ab71efc223a418e9630d8421f44bc9',1,'IRrecv']]], - ['decodekelvinator_3980',['decodeKelvinator',['../classIRrecv.html#a0ac82f20b48b2d71ee07eb392578b226',1,'IRrecv']]], - ['decodelasertag_3981',['decodeLasertag',['../classIRrecv.html#ae4af614a45ea65cb3304ef5bd7965122',1,'IRrecv']]], - ['decodelegopf_3982',['decodeLegoPf',['../classIRrecv.html#aea75ad0ba1d8fec33de16501940f2553',1,'IRrecv']]], - ['decodelg_3983',['decodeLG',['../classIRrecv.html#afe70015c36b1477a5de0c193163e13a7',1,'IRrecv']]], - ['decodelutron_3984',['decodeLutron',['../classIRrecv.html#a6093c4404a9a9d415c5bfeab5ec53be5',1,'IRrecv']]], - ['decodemagiquest_3985',['decodeMagiQuest',['../classIRrecv.html#a6f3bfcc6767484151dee758bcf94fb0b',1,'IRrecv']]], - ['decodemetz_3986',['decodeMetz',['../classIRrecv.html#ac39aa52eec10d1c92b6e9713a22252b6',1,'IRrecv']]], - ['decodemidea_3987',['decodeMidea',['../classIRrecv.html#a255b15601f7439a09ab5e77ad78816fb',1,'IRrecv']]], - ['decodemidea24_3988',['decodeMidea24',['../classIRrecv.html#a62a04019308b29ae2aea4b3a83ba9155',1,'IRrecv']]], - ['decodemitsubishi_3989',['decodeMitsubishi',['../classIRrecv.html#a6efe3be80f0ebef3ff94ed0e56c5c52a',1,'IRrecv']]], - ['decodemitsubishi112_3990',['decodeMitsubishi112',['../classIRrecv.html#ae0690ff3cb5a5cdcdb6a514bb7bf0cdd',1,'IRrecv']]], - ['decodemitsubishi136_3991',['decodeMitsubishi136',['../classIRrecv.html#a87b3ee57dbdf762a0e305ddd43eec629',1,'IRrecv']]], - ['decodemitsubishi2_3992',['decodeMitsubishi2',['../classIRrecv.html#a9514197850491a5b8c30ae9ffc89d895',1,'IRrecv']]], - ['decodemitsubishiac_3993',['decodeMitsubishiAC',['../classIRrecv.html#a942c5f41df5cbff32a8b7703673cb621',1,'IRrecv']]], - ['decodemitsubishiheavy_3994',['decodeMitsubishiHeavy',['../classIRrecv.html#aef9cedf79793806df4cc5376710781bc',1,'IRrecv']]], - ['decodemultibrackets_3995',['decodeMultibrackets',['../classIRrecv.html#af61afacc9865232643164ba824e665ab',1,'IRrecv']]], - ['decodemwm_3996',['decodeMWM',['../classIRrecv.html#a27518b5d792cdf3ab333b324f409f328',1,'IRrecv']]], - ['decodenec_3997',['decodeNEC',['../classIRrecv.html#a52b844f80df7f64edf9ce9cc189ac5b9',1,'IRrecv']]], - ['decodeneoclima_3998',['decodeNeoclima',['../classIRrecv.html#a4729ee949e533448b481ae33bbbf1adf',1,'IRrecv']]], - ['decodenikai_3999',['decodeNikai',['../classIRrecv.html#abbcbf5fc07d7e37d7724acc37bb5f592',1,'IRrecv']]], - ['decodepanasonic_4000',['decodePanasonic',['../classIRrecv.html#aa8dd5f24d28576c6db03cc463bd0a865',1,'IRrecv']]], - ['decodepanasonicac_4001',['decodePanasonicAC',['../classIRrecv.html#a0f78e180ed731e8fb16d1c85aa721c95',1,'IRrecv']]], - ['decodepioneer_4002',['decodePioneer',['../classIRrecv.html#a78a9487cbe8a562392a07a4090b3091e',1,'IRrecv']]], - ['decoderc5_4003',['decodeRC5',['../classIRrecv.html#adab9dffbeceee514520fababd0e721bd',1,'IRrecv']]], - ['decoderc6_4004',['decodeRC6',['../classIRrecv.html#a67316499ef37db82e3b3ecaac25c5980',1,'IRrecv']]], - ['decodercmm_4005',['decodeRCMM',['../classIRrecv.html#a0e7bf769cb5bebf174e852e4b0b08cf3',1,'IRrecv']]], - ['decodesamsung_4006',['decodeSAMSUNG',['../classIRrecv.html#a18b6cf177364faf11b9a076dd2025eec',1,'IRrecv']]], - ['decodesamsung36_4007',['decodeSamsung36',['../classIRrecv.html#a290a9e6a0b12ef1fe02a92a456c8ad57',1,'IRrecv']]], - ['decodesamsungac_4008',['decodeSamsungAC',['../classIRrecv.html#ae779c76ebd0f3cd1fc13abaa55f80d67',1,'IRrecv']]], - ['decodesanyoac_4009',['decodeSanyoAc',['../classIRrecv.html#ab6c02d8b8079d7f344e141e6a4e7e225',1,'IRrecv']]], - ['decodesanyolc7461_4010',['decodeSanyoLC7461',['../classIRrecv.html#a01a165bf2e7d16dbbb916d1eae740bc5',1,'IRrecv']]], - ['decodesharp_4011',['decodeSharp',['../classIRrecv.html#a3390d63ba21a835d7c74c261532a22a7',1,'IRrecv']]], - ['decodesharpac_4012',['decodeSharpAc',['../classIRrecv.html#a8a9b920079f783e236f8a938e20b9743',1,'IRrecv']]], - ['decodesony_4013',['decodeSony',['../classIRrecv.html#ab03227955cf7d1d00c1620c55d7f9f18',1,'IRrecv']]], - ['decodesymphony_4014',['decodeSymphony',['../classIRrecv.html#a61cdf4d891654521afbc6ca9fb415745',1,'IRrecv']]], - ['decodeteco_4015',['decodeTeco',['../classIRrecv.html#a950711d7df8dfe4cda86f53650cd9f56',1,'IRrecv']]], - ['decodetoshibaac_4016',['decodeToshibaAC',['../classIRrecv.html#aae6ab687ae319ae50a52238916bcfb1a',1,'IRrecv']]], - ['decodetostate_4017',['decodeToState',['../namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949',1,'IRAcUtils']]], - ['decodetrotec_4018',['decodeTrotec',['../classIRrecv.html#ae2920c488173f3fa37f5325438157ced',1,'IRrecv']]], - ['decodevestelac_4019',['decodeVestelAc',['../classIRrecv.html#a5d48b3c91434c18c7726cca504d75b73',1,'IRrecv']]], - ['decodevoltas_4020',['decodeVoltas',['../classIRrecv.html#a43539320036ba1c17e9875e4dc9fd055',1,'IRrecv']]], - ['decodewhirlpoolac_4021',['decodeWhirlpoolAC',['../classIRrecv.html#a0d1eec83cf092f5621cb34b3e94777c4',1,'IRrecv']]], - ['decodewhynter_4022',['decodeWhynter',['../classIRrecv.html#a66289f6a462557ad26e6c0a64f36cf02',1,'IRrecv']]], - ['decodezepeal_4023',['decodeZepeal',['../classIRrecv.html#a72afd857c8b2e0192021a40afc96c2d8',1,'IRrecv']]], - ['defaultbits_4024',['defaultBits',['../classIRsend.html#a70a2256bee8ad9b8ea8571dd4f26596f',1,'IRsend']]], - ['delonghiac_4025',['delonghiac',['../classIRac.html#af290b0b08cff5121bb88c62051ed1074',1,'IRac']]], - ['disableirin_4026',['disableIRIn',['../classIRrecv.html#a9f4a719e756ad78c7dd47186f8bef087',1,'IRrecv']]], - ['disableofftimer_4027',['disableOffTimer',['../classIRDaikinESP.html#a1e4e05ad0799002d0ab25db92dcaac06',1,'IRDaikinESP::disableOffTimer()'],['../classIRDaikin2.html#a6c8ad4c34713d61942c80b6052e6283a',1,'IRDaikin2::disableOffTimer()']]], - ['disableontimer_4028',['disableOnTimer',['../classIRDaikinESP.html#a0733e4a15d76baac23493926ef1765b1',1,'IRDaikinESP::disableOnTimer()'],['../classIRDaikin2.html#ab0e77969a86af9637cb9aa4b4befd4aa',1,'IRDaikin2::disableOnTimer()']]], - ['disablesleeptimer_4029',['disableSleepTimer',['../classIRDaikin2.html#a5461cf51967d3fe67489384c82daac47',1,'IRDaikin2']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_8.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_8.js deleted file mode 100644 index 3060a7737..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_8.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['haier_4172',['haier',['../classIRac.html#ae0a29a4cb8c7a4707a7725c576822a58',1,'IRac']]], - ['haieryrwo2_4173',['haierYrwo2',['../classIRac.html#a7bc779a162dd9a1b4c925febec443353',1,'IRac']]], - ['handlespecialstate_4174',['handleSpecialState',['../classIRCoolixAC.html#af78090c6d8b45b4202a80f1223640390',1,'IRCoolixAC']]], - ['handletoggles_4175',['handleToggles',['../classIRac.html#a36833999dce4ad608a5a0f084988cfd1',1,'IRac']]], - ['hasacstate_4176',['hasACState',['../IRutils_8cpp.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol): IRutils.cpp'],['../IRutils_8h.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol): IRutils.cpp']]], - ['hasinvertedstates_4177',['hasInvertedStates',['../classIRHitachiAc3.html#ac06b36245c85480d97c1a9f49cfaa005',1,'IRHitachiAc3']]], - ['hasstatechanged_4178',['hasStateChanged',['../classIRac.html#a35258c35a2d2b19886292b22b2aa053a',1,'IRac']]], - ['hitachi_4179',['hitachi',['../classIRac.html#acd0f2fcf03aabf947a19a195000add3c',1,'IRac']]], - ['hitachi1_4180',['hitachi1',['../classIRac.html#ac8807d62f6ae87af72d44b50bed3f17b',1,'IRac']]], - ['hitachi344_4181',['hitachi344',['../classIRac.html#a0bc34635a1a349816344916a82585460',1,'IRac']]], - ['hitachi424_4182',['hitachi424',['../classIRac.html#aec6de0752ddd3a3e7c6824cb1b692508',1,'IRac']]], - ['htmlescape_4183',['htmlEscape',['../namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7',1,'irutils']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_a.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_a.js deleted file mode 100644 index 23f90f8a3..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['kelvinator_4250',['kelvinator',['../classIRac.html#a6e4d8061841a7271205f81bd8e7d6171',1,'IRac']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_b.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_b.js deleted file mode 100644 index 641896926..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_b.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['ledoff_4251',['ledOff',['../classIRsend.html#ae71cc5aa99f894785fb4f7abc05841b2',1,'IRsend']]], - ['ledon_4252',['ledOn',['../classIRsend.html#a13d804171fa7c14aff4def38c6ffb6c8',1,'IRsend']]], - ['lg_4253',['lg',['../classIRac.html#afad31ecf9eae573882d53dd6629485fb',1,'IRac']]], - ['lowlevelsanitycheck_4254',['lowLevelSanityCheck',['../namespaceirutils.html#af67b75834051c4aced358b274c1c55a8',1,'irutils']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_d.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_d.js deleted file mode 100644 index faa79fb2b..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_d.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['neoclima_4277',['neoclima',['../classIRac.html#a0e468b705922e58308c5e340499f2391',1,'IRac']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_f.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_f.js deleted file mode 100644 index 0bbeed4d4..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/functions_f.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['panasonic_4281',['panasonic',['../classIRac.html#af873db2b9735127eb6f079861daed67a',1,'IRac']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/namespaces_0.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/namespaces_0.js deleted file mode 100644 index c1d51f576..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/namespaces_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['iracutils_3748',['IRAcUtils',['../namespaceIRAcUtils.html',1,'']]], - ['irutils_3749',['irutils',['../namespaceirutils.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/namespaces_1.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/namespaces_1.js deleted file mode 100644 index 28cf3c43e..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/namespaces_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['stdac_3750',['stdAc',['../namespacestdAc.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/pages_0.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/pages_0.js deleted file mode 100644 index 38eb84cc2..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/pages_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['deprecated_20list_7453',['Deprecated List',['../deprecated.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/pages_1.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/pages_1.js deleted file mode 100644 index f36969cf2..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/pages_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['irremoteesp8266_20library_20api_20documentation_7454',['IRremoteESP8266 Library API Documentation',['../index.html',1,'']]], - ['internationalisation_20_28i18n_29_20_26_20locale_20files_7455',['Internationalisation (I18N) & Locale Files',['../md_src_locale_README.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/pages_2.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/pages_2.js deleted file mode 100644 index 11afc191d..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/pages_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['todo_20list_7456',['Todo List',['../todo.html',1,'']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_0.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_0.js deleted file mode 100644 index 3c0a66b88..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_0.js +++ /dev/null @@ -1,53 +0,0 @@ -var searchData= -[ - ['_5f_4541',['_',['../classIRAirwellAc.html#af5675d200cdc571911162ecf8c74fdc0',1,'IRAirwellAc::_()'],['../classIRGreeAC.html#a9c048fe707312bdfd30c29fe8d6ab4b5',1,'IRGreeAC::_()'],['../classIRHaierAC.html#a523b6e63f16c5f817d82bcdbf351d7e7',1,'IRHaierAC::_()'],['../classIRHaierACYRW02.html#aaa31ae12544758f57f0dcd11b20fe285',1,'IRHaierACYRW02::_()'],['../classIRMideaAC.html#a43e44a594e00ed14c9b6aca4a862ea9e',1,'IRMideaAC::_()'],['../classIRVoltas.html#a251065338907253521a12e5e0f8aeb26',1,'IRVoltas::_()']]], - ['_5f_5fpad0_5f_5f_4542',['__pad0__',['../unionAirwellProtocol.html#ac8190704f390caf41b76dc0ee3377056',1,'AirwellProtocol::__pad0__()'],['../unionGreeProtocol.html#a06baff7b648875f337ea4d099f8ba73d',1,'GreeProtocol::__pad0__()'],['../unionHaierProtocol.html#a2648f0ff2bc5a6481e9fd2017408a590',1,'HaierProtocol::__pad0__()'],['../unionHaierYRW02Protocol.html#a48fb1f12d6902568da902b5de7e1bfef',1,'HaierYRW02Protocol::__pad0__()'],['../unionMideaProtocol.html#ab48c834ee5a37297d04e71e6e32468d2',1,'MideaProtocol::__pad0__()'],['../unionVoltasProtocol.html#a6a9f9ff0c3c7b691ed78738138467afa',1,'VoltasProtocol::__pad0__()']]], - ['_5f_5fpad10_5f_5f_4543',['__pad10__',['../unionHaierYRW02Protocol.html#abc9d14dbc6ab798a389244499fad7d96',1,'HaierYRW02Protocol']]], - ['_5f_5fpad11_5f_5f_4544',['__pad11__',['../unionHaierYRW02Protocol.html#a033dacb9a8b936c0187e86c585431198',1,'HaierYRW02Protocol']]], - ['_5f_5fpad12_5f_5f_4545',['__pad12__',['../unionHaierYRW02Protocol.html#a3df5d93e5f676ff44b32227a44be98ac',1,'HaierYRW02Protocol']]], - ['_5f_5fpad1_5f_5f_4546',['__pad1__',['../unionAirwellProtocol.html#ab2a20785c417317ac37cd1b5ef795249',1,'AirwellProtocol::__pad1__()'],['../unionGreeProtocol.html#a094751746e21e5ae70ff7ace3b84c75d',1,'GreeProtocol::__pad1__()'],['../unionHaierProtocol.html#a8e91589ca0e2db529f73e3f8ecbb00a0',1,'HaierProtocol::__pad1__()'],['../unionHaierYRW02Protocol.html#aa20f4bbeb35dfa6afe0af4c7ea1cc498',1,'HaierYRW02Protocol::__pad1__()'],['../unionMideaProtocol.html#a3351e3af6d3f214536e593c450fa0915',1,'MideaProtocol::__pad1__()'],['../unionVoltasProtocol.html#a80c4eeb8eea30866ef991cab330f6def',1,'VoltasProtocol::__pad1__()']]], - ['_5f_5fpad2_5f_5f_4547',['__pad2__',['../unionAirwellProtocol.html#a3ba38aea4ada26e1936478d737e2080a',1,'AirwellProtocol::__pad2__()'],['../unionGreeProtocol.html#a715441faac2bdd5dc37d6a3efcc99c4f',1,'GreeProtocol::__pad2__()'],['../unionHaierYRW02Protocol.html#a51178359e3860a50dbf53bda14b5a88c',1,'HaierYRW02Protocol::__pad2__()'],['../unionMideaProtocol.html#ab638086cc0b8d25fba57278c7ba881cb',1,'MideaProtocol::__pad2__()'],['../unionVoltasProtocol.html#a4c2798df803074bcde8ddf6c7e855d91',1,'VoltasProtocol::__pad2__()']]], - ['_5f_5fpad3_5f_5f_4548',['__pad3__',['../unionGreeProtocol.html#a7291d729f3b5638cb160afbda37baba1',1,'GreeProtocol::__pad3__()'],['../unionHaierYRW02Protocol.html#ad2c1066a2d796f49424feb2612df3d98',1,'HaierYRW02Protocol::__pad3__()'],['../unionMideaProtocol.html#ac0d1346479086522065ec71ea0b87ad2',1,'MideaProtocol::__pad3__()'],['../unionVoltasProtocol.html#aa63b5dd18bc7376a712e7dd16d594525',1,'VoltasProtocol::__pad3__()']]], - ['_5f_5fpad4_5f_5f_4549',['__pad4__',['../unionGreeProtocol.html#a6caf58eb68a83c0686dbd65d7a35cb58',1,'GreeProtocol::__pad4__()'],['../unionHaierYRW02Protocol.html#a62e17795ebcaea82715972f98d5408ca',1,'HaierYRW02Protocol::__pad4__()'],['../unionMideaProtocol.html#addde95b2535612df3ef2183998cf7ca6',1,'MideaProtocol::__pad4__()'],['../unionVoltasProtocol.html#ab0ec8c8b4f98d8ad2185259a1013f20b',1,'VoltasProtocol::__pad4__()']]], - ['_5f_5fpad5_5f_5f_4550',['__pad5__',['../unionHaierYRW02Protocol.html#a7405f45e3dfb5230a6e531c3ea5bd2cc',1,'HaierYRW02Protocol::__pad5__()'],['../unionVoltasProtocol.html#af25903098b89acf7d2b6ebc08eea3ce5',1,'VoltasProtocol::__pad5__()']]], - ['_5f_5fpad6_5f_5f_4551',['__pad6__',['../unionHaierYRW02Protocol.html#a03595ed00f070b0eecc647f426c2c9b1',1,'HaierYRW02Protocol::__pad6__()'],['../unionVoltasProtocol.html#a1fc2d4c2b5792d53d364e61b84ca1fb0',1,'VoltasProtocol::__pad6__()']]], - ['_5f_5fpad7_5f_5f_4552',['__pad7__',['../unionHaierYRW02Protocol.html#a13f95461887012ca8a0d27ce71c65cb6',1,'HaierYRW02Protocol']]], - ['_5f_5fpad8_5f_5f_4553',['__pad8__',['../unionHaierYRW02Protocol.html#ab0640cdf0ae186ef0a75699bb2ab2247',1,'HaierYRW02Protocol']]], - ['_5f_5fpad9_5f_5f_4554',['__pad9__',['../unionHaierYRW02Protocol.html#ad5c197a23df2a768d022946347d765fe',1,'HaierYRW02Protocol']]], - ['_5fclean_4555',['_clean',['../classIRFujitsuAC.html#acf7808cfeb6e15cea1d5ee8196075e04',1,'IRFujitsuAC']]], - ['_5fcmd_4556',['_cmd',['../classIRFujitsuAC.html#a5e66bc4a24b892525cfa02bb4d741cbf',1,'IRFujitsuAC']]], - ['_5fdesiredtemp_4557',['_desiredtemp',['../classIRWhirlpoolAc.html#aee17cfa10f19e0df992b25cff58e9613',1,'IRWhirlpoolAc']]], - ['_5fdutycycle_4558',['_dutycycle',['../classIRsend.html#a602e96e8cdbd6af41d288d905043e51f',1,'IRsend']]], - ['_5feconotoggle_4559',['_EconoToggle',['../classIRMideaAC.html#a30f184751948b4412da46577578b625a',1,'IRMideaAC']]], - ['_5ffan_4560',['_fan',['../classIRSharpAc.html#ad0f4e6025f2952c477bbd3f72a64d2fe',1,'IRSharpAc']]], - ['_5ffanspeed_4561',['_fanSpeed',['../classIRFujitsuAC.html#a537f02328039c044f7152bf0a61a05c9',1,'IRFujitsuAC']]], - ['_5ffilter_4562',['_filter',['../classIRFujitsuAC.html#a4a2f96f4f1cd6650d48ebc3b13fd561c',1,'IRFujitsuAC']]], - ['_5fforcepower_4563',['_forcepower',['../classIRSamsungAc.html#a022c96bfab671b1d0b6b5b331be31993',1,'IRSamsungAc']]], - ['_5ffreq_5funittest_4564',['_freq_unittest',['../classIRsend.html#a2caec2f35ecdb890b1e34d9eb3642363',1,'IRsend']]], - ['_5finverted_4565',['_inverted',['../classIRac.html#a9cfaa0b92819f06b3aa5b3e9e48b9d51',1,'IRac']]], - ['_5firsend_4566',['_irsend',['../classIRAirwellAc.html#a57a01d6e65f6fa1127f8d3dc86ff8071',1,'IRAirwellAc::_irsend()'],['../classIRAmcorAc.html#a6245bb51fa206031c3348e3eb6cb096d',1,'IRAmcorAc::_irsend()'],['../classIRArgoAC.html#a1abd8d958c3e153c4f2aaf7a3716414e',1,'IRArgoAC::_irsend()'],['../classIRCarrierAc64.html#a17270f2b1d6cab828e2a51fc23b36437',1,'IRCarrierAc64::_irsend()'],['../classIRCoolixAC.html#a6c7033e72fb860bca600ba6ea6e7afef',1,'IRCoolixAC::_irsend()'],['../classIRCoronaAc.html#afba5a3c3cff3859303a91d136ad00b66',1,'IRCoronaAc::_irsend()'],['../classIRDaikinESP.html#a2f5a8cb170d54f06bfa3eeb9b8ff838e',1,'IRDaikinESP::_irsend()'],['../classIRDaikin2.html#aa8ba00ae2c09af098146452164c4cb3b',1,'IRDaikin2::_irsend()'],['../classIRDaikin216.html#ac0e88b92a5c75138ce5b3a31f0c09be2',1,'IRDaikin216::_irsend()'],['../classIRDaikin160.html#a3094f35b359d8774a95dd3896c0e45e4',1,'IRDaikin160::_irsend()'],['../classIRDaikin176.html#a24f7022eb1c1936f5ee95ac0d732584c',1,'IRDaikin176::_irsend()'],['../classIRDaikin128.html#a1f155cc34e6c21d206962239d0135d1b',1,'IRDaikin128::_irsend()'],['../classIRDaikin152.html#a9b203215156d48dabac0fa8fd19dc613',1,'IRDaikin152::_irsend()'],['../classIRDaikin64.html#a6eb57b0eb12dab12bd9cf2fe4fded2c7',1,'IRDaikin64::_irsend()'],['../classIRDelonghiAc.html#a8cbe8b6857b7492c108118b4eda3ecb0',1,'IRDelonghiAc::_irsend()'],['../classIRElectraAc.html#af8732b31f2a4421226220dd8a4a4f985',1,'IRElectraAc::_irsend()'],['../classIRFujitsuAC.html#a2b7fec218b3530b06ce8b49f472e9595',1,'IRFujitsuAC::_irsend()'],['../classIRGoodweatherAc.html#acf606eb9e024c99407138dbd058e98d9',1,'IRGoodweatherAc::_irsend()'],['../classIRGreeAC.html#a36390655badf0ad5b5809499a8634f70',1,'IRGreeAC::_irsend()'],['../classIRHaierAC.html#aec69643fe633a57d635754690225fdd1',1,'IRHaierAC::_irsend()'],['../classIRHaierACYRW02.html#a24dd00bfa5e062c5c7f459bcd60213b7',1,'IRHaierACYRW02::_irsend()'],['../classIRHitachiAc.html#a0e296fa54cc4c56e16c6fc58c7ad827f',1,'IRHitachiAc::_irsend()'],['../classIRHitachiAc1.html#a61ad6289fc3719a850299788e642b98b',1,'IRHitachiAc1::_irsend()'],['../classIRHitachiAc424.html#a39157a1bda46304429570be2880c6ec4',1,'IRHitachiAc424::_irsend()'],['../classIRHitachiAc3.html#a8dc3b713e29f3ea96a106868451ba728',1,'IRHitachiAc3::_irsend()'],['../classIRKelvinatorAC.html#ae3571bf6de20e47f81ad1da8f1d13118',1,'IRKelvinatorAC::_irsend()'],['../classIRLgAc.html#a779f321b65db6ad05ab3e578b38cf093',1,'IRLgAc::_irsend()'],['../classIRMideaAC.html#ae2b6068355ecdc360c4c2ca2fd8d921b',1,'IRMideaAC::_irsend()'],['../classIRMitsubishiAC.html#a6753b676690f35bc8ba73504fdc34946',1,'IRMitsubishiAC::_irsend()'],['../classIRMitsubishi136.html#acd14c7bb6b26d0603ee552a000e16d43',1,'IRMitsubishi136::_irsend()'],['../classIRMitsubishi112.html#af858d640f9b2fca053287f280c8a27c0',1,'IRMitsubishi112::_irsend()'],['../classIRMitsubishiHeavy152Ac.html#a1ebd4c8b06d64e0944358156f58d414e',1,'IRMitsubishiHeavy152Ac::_irsend()'],['../classIRMitsubishiHeavy88Ac.html#a1e999c9ee028d35c03cd6b4751bcb8be',1,'IRMitsubishiHeavy88Ac::_irsend()'],['../classIRNeoclimaAc.html#a43e42b1c7e68e5a85ed10454c6210be5',1,'IRNeoclimaAc::_irsend()'],['../classIRPanasonicAc.html#a065dcc65ef3dbb8f2384f883fb97d102',1,'IRPanasonicAc::_irsend()'],['../classIRSamsungAc.html#a5815878dbebe512c41c26924cf9f5eeb',1,'IRSamsungAc::_irsend()'],['../classIRSanyoAc.html#a5dc78b02c5d10ac717542b67b65f15d6',1,'IRSanyoAc::_irsend()'],['../classIRSharpAc.html#a10ee598c31c0f8179ace953ed88e37c6',1,'IRSharpAc::_irsend()'],['../classIRTcl112Ac.html#a3f10e710a44c3a80f4f9ed5247b28058',1,'IRTcl112Ac::_irsend()'],['../classIRTecoAc.html#a283ff8b73ef2998f0668d0a03cba0938',1,'IRTecoAc::_irsend()'],['../classIRToshibaAC.html#a694609136a9cbdb9af5f8bb98411c2eb',1,'IRToshibaAC::_irsend()'],['../classIRTrotecESP.html#a1faa968fc2651dc1774160950e97a74e',1,'IRTrotecESP::_irsend()'],['../classIRVestelAc.html#a56d35fc5d39c97b4c6f2decf176e2cae',1,'IRVestelAc::_irsend()'],['../classIRVoltas.html#a09225bcf0cdff72f0fe35a88a91a88ad',1,'IRVoltas::_irsend()'],['../classIRWhirlpoolAc.html#af4fdac2382048e2776c787bebd482e9e',1,'IRWhirlpoolAc::_irsend()']]], - ['_5firtimer_5funittest_5fnow_4567',['_IRtimer_unittest_now',['../IRtimer_8cpp.html#a4ac531aa761a28d68edbc12967038180',1,'IRtimer.cpp']]], - ['_5flastsentpowerstate_4568',['_lastsentpowerstate',['../classIRSamsungAc.html#af1c6712dc05a451e815675abe972d9b4',1,'IRSamsungAc']]], - ['_5fmode_4569',['_mode',['../classIRFujitsuAC.html#a1b22f3bb3dc43e370aabad5b6efd7ca5',1,'IRFujitsuAC::_mode()'],['../classIRSharpAc.html#a169d5636aead556234dc301729050619',1,'IRSharpAc::_mode()']]], - ['_5fmodel_4570',['_model',['../classIRFujitsuAC.html#a181c71dbd46ceabdcfe08448ee32bba7',1,'IRFujitsuAC::_model()'],['../classIRGreeAC.html#ae357bf1611f349e2686f4f46c2581c47',1,'IRGreeAC::_model()'],['../classIRVoltas.html#a01270b3d5e2b0d85a3ee860edb5c3232',1,'IRVoltas::_model()']]], - ['_5fmodulation_4571',['_modulation',['../classIRac.html#acc6b7380f11c38d13fffa99ca2189a9b',1,'IRac']]], - ['_5foutsidequiet_4572',['_outsideQuiet',['../classIRFujitsuAC.html#a20a794245e0bc44607faf7927a285672',1,'IRFujitsuAC']]], - ['_5fpin_4573',['_pin',['../classIRac.html#aba78a2510d8cdcaf4c601e8b0574ae6c',1,'IRac']]], - ['_5fprev_4574',['_prev',['../classIRac.html#a8c63dc78c49f3714887fea0feefffd44',1,'IRac']]], - ['_5fprevioustemp_4575',['_previoustemp',['../classIRHitachiAc.html#a1368dcd7f4c0049822fd2b9b1e0acb5e',1,'IRHitachiAc::_previoustemp()'],['../classIRHitachiAc424.html#aba6c17936775e268744af23a4a533f92',1,'IRHitachiAc424::_previoustemp()']]], - ['_5fprotocol_4576',['_protocol',['../classIRLgAc.html#a9bd32e865a7358bbf32830d888e2786a',1,'IRLgAc']]], - ['_5fsaved_5ftemp_4577',['_saved_temp',['../classIRDaikin176.html#a8f1d6c765bf09c1a3dc9678c3939a5be',1,'IRDaikin176::_saved_temp()'],['../classIRDelonghiAc.html#a724aa5748e714a7f0109a2f3502cd1d1',1,'IRDelonghiAc::_saved_temp()']]], - ['_5fsaved_5ftemp_5funits_4578',['_saved_temp_units',['../classIRDelonghiAc.html#a14fba6ccbc25da76744d28e7a40c385b',1,'IRDelonghiAc']]], - ['_5fsend_5fswing_4579',['_send_swing',['../classIRToshibaAC.html#a3c0873667deefce7b13a051910d13046',1,'IRToshibaAC']]], - ['_5fstate_5flength_4580',['_state_length',['../classIRFujitsuAC.html#aea1819d0041f305e2c990f6f3eced865',1,'IRFujitsuAC']]], - ['_5fstate_5flength_5fshort_4581',['_state_length_short',['../classIRFujitsuAC.html#a7093cf32cd2e856ff692aebc732c1d50',1,'IRFujitsuAC']]], - ['_5fswing_5fmode_4582',['_swing_mode',['../classIRToshibaAC.html#a3d782a316cbadf2128a1392feda5c21b',1,'IRToshibaAC']]], - ['_5fswingh_4583',['_swingh',['../classIRPanasonicAc.html#ad0300ee66bcab38e13724520cb3226f9',1,'IRPanasonicAc']]], - ['_5fswingmode_4584',['_swingMode',['../classIRFujitsuAC.html#a74a00fbba55b457b68f61481ce9ffbaa',1,'IRFujitsuAC']]], - ['_5fswingvtoggle_4585',['_SwingVToggle',['../classIRMideaAC.html#adb4318940487aea09116fe6b9f061470',1,'IRMideaAC']]], - ['_5ftemp_4586',['_temp',['../classIRFujitsuAC.html#afcff35df74885c63651134ba85359694',1,'IRFujitsuAC::_temp()'],['../classIRLgAc.html#a1eeb727ee96c26b784a607aabd4577c9',1,'IRLgAc::_temp()'],['../classIRPanasonicAc.html#af6511e3c9745ff6750dc6fc3fdda21b3',1,'IRPanasonicAc::_temp()'],['../classIRSharpAc.html#a1d0a6274534123133217175920c7cd95',1,'IRSharpAc::_temp()']]], - ['_5ftimer_5fnum_4587',['_timer_num',['../classIRrecv.html#aff11c0c20735b16ce411088003607911',1,'IRrecv']]], - ['_5ftimerms_5funittest_5fnow_4588',['_TimerMs_unittest_now',['../IRtimer_8cpp.html#aed35ce7fa92ebb856a03f81e756cb2c6',1,'IRtimer.cpp']]], - ['_5ftolerance_4589',['_tolerance',['../classIRrecv.html#a0459a65dd31b215713ad66a1e4f3540e',1,'IRrecv']]], - ['_5funknown_5fthreshold_4590',['_unknown_threshold',['../classIRrecv.html#adb8cbc5c1cb739f33f5be25b3a6c79bd',1,'IRrecv']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_1.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_1.js deleted file mode 100644 index 0b819efc3..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['address_4591',['address',['../classdecode__results.html#a2858c3a5e28eccca95d44aaa87b70e9e',1,'decode_results']]], - ['argo_4592',['argo',['../classIRArgoAC.html#ab607bde051712a57fe9c0a0cf9da20ac',1,'IRArgoAC']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_10.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_10.js deleted file mode 100644 index 4442562dc..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_10.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['raw_7253',['raw',['../unionAirwellProtocol.html#a984e1bba5afac9887c2ebb976a38d560',1,'AirwellProtocol::raw()'],['../unionHaierYRW02Protocol.html#aa1607ceff9c90cbb78e446a98eb0fe52',1,'HaierYRW02Protocol::raw()'],['../unionVoltasProtocol.html#aef55de7b215b4dd5d36d0bd7b542a85b',1,'VoltasProtocol::raw()']]], - ['rawbuf_7254',['rawbuf',['../structirparams__t.html#a6f8a82b51fa206a8cb195e5838aa0cb3',1,'irparams_t::rawbuf()'],['../classdecode__results.html#a19043dc161cd5e0d3dcc82b5a7470e49',1,'decode_results::rawbuf()']]], - ['rawlen_7255',['rawlen',['../structirparams__t.html#a08e83386c65a90038e0d4922f1f6aa84',1,'irparams_t::rawlen()'],['../classdecode__results.html#a913e19fc5032fa1f97cf8afe0fa450ec',1,'decode_results::rawlen()']]], - ['rcvstate_7256',['rcvstate',['../structirparams__t.html#a63354788dab4569f4092cd05e77f0260',1,'irparams_t']]], - ['recvpin_7257',['recvpin',['../structirparams__t.html#a50da5aa1c42a69b01d50ea688db67d14',1,'irparams_t']]], - ['remote_7258',['remote',['../classIRDaikinESP.html#ac24751c23f6b27cb26dcd51e91c63c9b',1,'IRDaikinESP::remote()'],['../classIRGoodweatherAc.html#af511a0703a4cbc77f5b8a520abf11f2f',1,'IRGoodweatherAc::remote()'],['../classIRSharpAc.html#a411a4db0579ed84b54533dcde153d5da',1,'IRSharpAc::remote()']]], - ['remote_5fstate_7259',['remote_state',['../classIRAmcorAc.html#acef1c3896f03afd5d10d5cbb7ed105ce',1,'IRAmcorAc::remote_state()'],['../classIRCarrierAc64.html#a257272c7cb54f5854e79053c8223a43e',1,'IRCarrierAc64::remote_state()'],['../classIRCoolixAC.html#a03bf575961d4d924275cb16a45edaa46',1,'IRCoolixAC::remote_state()'],['../classIRCoronaAc.html#afcf0b21ac5c438dc560612a785a29864',1,'IRCoronaAc::remote_state()'],['../classIRDaikin2.html#a0b28396956687a4009cab7c860b9ce4b',1,'IRDaikin2::remote_state()'],['../classIRDaikin216.html#abf9bab0a52f9227d54f583488b024a85',1,'IRDaikin216::remote_state()'],['../classIRDaikin160.html#a17fb5726060e8872735559654a72cb22',1,'IRDaikin160::remote_state()'],['../classIRDaikin176.html#adb6863da11f0569524f0beb31681d0b5',1,'IRDaikin176::remote_state()'],['../classIRDaikin128.html#af1b36cc2f51cd145da3bfe7ec3d9134a',1,'IRDaikin128::remote_state()'],['../classIRDaikin152.html#aa16c89c0cb6d83aef83d293466dab197',1,'IRDaikin152::remote_state()'],['../classIRDaikin64.html#aa279d6df0d130e727c3a1500b283eda0',1,'IRDaikin64::remote_state()'],['../classIRDelonghiAc.html#a3b3364143c52dc2a29d9db43612c07b1',1,'IRDelonghiAc::remote_state()'],['../classIRElectraAc.html#a3f423f5d896e4bfc2f3a0ce04b596289',1,'IRElectraAc::remote_state()'],['../classIRFujitsuAC.html#a851b9192e1f18f6a4b2f1726d49ef33b',1,'IRFujitsuAC::remote_state()'],['../unionGreeProtocol.html#ae034ac3966312175d26fe1817108d7a4',1,'GreeProtocol::remote_state()'],['../unionHaierProtocol.html#af8966fa819bcb51f496ec185130bcf0f',1,'HaierProtocol::remote_state()'],['../classIRHitachiAc.html#a44b3d360b2a8044782b73f7f4a533a99',1,'IRHitachiAc::remote_state()'],['../classIRHitachiAc1.html#a13340cba808d457d6093f1c9efffc419',1,'IRHitachiAc1::remote_state()'],['../classIRHitachiAc424.html#a58bac4ef7f46ef1e9f38c1a144e2ca41',1,'IRHitachiAc424::remote_state()'],['../classIRHitachiAc3.html#a5602ded229a41796c205519449f7d509',1,'IRHitachiAc3::remote_state()'],['../classIRKelvinatorAC.html#a70f75821274e53cc5ed64ac53a6e32b4',1,'IRKelvinatorAC::remote_state()'],['../classIRLgAc.html#a481133671657b13ecce1bd08f710089d',1,'IRLgAc::remote_state()'],['../unionMideaProtocol.html#a8d696bb16d652ef6d582014049be2bbb',1,'MideaProtocol::remote_state()'],['../classIRMitsubishiAC.html#ac0a149b9705371e59c45ece162bc1aab',1,'IRMitsubishiAC::remote_state()'],['../classIRMitsubishi136.html#ad1e80d693d3558f0bed4c0f7995bddd5',1,'IRMitsubishi136::remote_state()'],['../classIRMitsubishi112.html#a64a40e57208d08b5cd6ef87a7c8d6671',1,'IRMitsubishi112::remote_state()'],['../classIRMitsubishiHeavy152Ac.html#a6d333f238bf1b42e39919d4897080aa8',1,'IRMitsubishiHeavy152Ac::remote_state()'],['../classIRMitsubishiHeavy88Ac.html#a46be0e755530f59fad7d3f9050ecc107',1,'IRMitsubishiHeavy88Ac::remote_state()'],['../classIRNeoclimaAc.html#a336507e0635ede3b9ebf53881ece50bb',1,'IRNeoclimaAc::remote_state()'],['../classIRPanasonicAc.html#a85d5118c0ed947cc77f2ed94b0d44e4a',1,'IRPanasonicAc::remote_state()'],['../classIRSamsungAc.html#a5966a3b665ce034de807de1955396e10',1,'IRSamsungAc::remote_state()'],['../classIRSanyoAc.html#a157b54dba73a31d1945ed3ca7c676c37',1,'IRSanyoAc::remote_state()'],['../classIRTcl112Ac.html#a6eda1148a977a3ccf0c6c30239fca4c8',1,'IRTcl112Ac::remote_state()'],['../classIRTecoAc.html#a3c2ad7587ed4f5589deb20d8dc16b1e4',1,'IRTecoAc::remote_state()'],['../classIRToshibaAC.html#ab6c99091be13e159d88a07a9222c9a7c',1,'IRToshibaAC::remote_state()'],['../classIRTrotecESP.html#afccba55e2c3d42c716591c10bc9afa18',1,'IRTrotecESP::remote_state()'],['../classIRVestelAc.html#a74d889a0db2fa63a2e38aaa15819568c',1,'IRVestelAc::remote_state()'],['../classIRWhirlpoolAc.html#a65333985c39773896071081ebcca4821',1,'IRWhirlpoolAc::remote_state()']]], - ['remote_5ftime_5fstate_7260',['remote_time_state',['../classIRVestelAc.html#a9b10e4a0c1f71aecbeb385666d1a53bd',1,'IRVestelAc']]], - ['repeat_7261',['repeat',['../classdecode__results.html#a09da48786fe3966cd5621840fd771bfa',1,'decode_results']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_11.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_11.js deleted file mode 100644 index 8b7b9972f..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_11.js +++ /dev/null @@ -1,19 +0,0 @@ -var searchData= -[ - ['saved_5fstate_7262',['saved_state',['../classIRCoolixAC.html#aec0bce8019d7d49a30915394bee56b9a',1,'IRCoolixAC']]], - ['scrap_7263',['scrap',['../unionmagiquest.html#afd0bcf9a87f0fa2db87b68b211952a73',1,'magiquest']]], - ['sleep_7264',['Sleep',['../unionGreeProtocol.html#a1ea579a0c99eb1dc8fd72867519ab258',1,'GreeProtocol::Sleep()'],['../unionHaierProtocol.html#a88942d48d868ff5697040d5a89f93099',1,'HaierProtocol::Sleep()'],['../unionHaierYRW02Protocol.html#a0b0ad77222892e9fccf122fcee95d87d',1,'HaierYRW02Protocol::Sleep()'],['../unionMideaProtocol.html#aeea5e2520e4cd1773c1eddc8a84af2d3',1,'MideaProtocol::Sleep()'],['../unionVoltasProtocol.html#a1a47a7e57717d28e610e97b40e86b1ca',1,'VoltasProtocol::Sleep()'],['../structstdAc_1_1state__t.html#a94fa6098d7422292a1c6943973cd106a',1,'stdAc::state_t::sleep()']]], - ['sleepflag_7265',['sleepFlag',['../classIRCoolixAC.html#a26560e04d1f77830e40e5570845b9e06',1,'IRCoolixAC']]], - ['start_7266',['start',['../classIRtimer.html#aaa087b8688ff8150e0fc1ec6d5c4a52a',1,'IRtimer::start()'],['../classTimerMs.html#a15ad2e08a5931397391d48f040722f65',1,'TimerMs::start()']]], - ['state_7267',['state',['../classdecode__results.html#aaeb4b1b2e950bdd181582c385b2f4305',1,'decode_results']]], - ['success_7268',['success',['../structmatch__result__t.html#a13fe18ae6cf89364df443a64295b2f90',1,'match_result_t']]], - ['sum_7269',['Sum',['../unionGreeProtocol.html#a7502111538873c23d70129b77a26019e',1,'GreeProtocol::Sum()'],['../unionHaierProtocol.html#a5842a170e3cdd0ad823cf244c7b8dd51',1,'HaierProtocol::Sum()'],['../unionHaierYRW02Protocol.html#a656449e6901b3333ca0efe4a2e662fc7',1,'HaierYRW02Protocol::Sum()'],['../unionMideaProtocol.html#a3d4afe5411a769c48e8bfaa3a9e8e84c',1,'MideaProtocol::Sum()']]], - ['swing_7270',['Swing',['../unionGreeProtocol.html#a6ee1b2c7459fcd5ed839a7730a2c5931',1,'GreeProtocol::Swing()'],['../unionHaierProtocol.html#afc7ba334ae13911868d90c2fe37813b9',1,'HaierProtocol::Swing()'],['../unionHaierYRW02Protocol.html#a671ff83501bd3e6f6e5c2b08bb6d26d1',1,'HaierYRW02Protocol::Swing()']]], - ['swingauto_7271',['SwingAuto',['../unionGreeProtocol.html#a866257731360d655ffa24ba3fbdfa3cc',1,'GreeProtocol']]], - ['swingflag_7272',['swingFlag',['../classIRCoolixAC.html#a6d61903a90cebef56b931bebbfa5cba3',1,'IRCoolixAC']]], - ['swingh_7273',['swingh',['../structstdAc_1_1state__t.html#a761bb702891ed1fa35906929a4c8a3f8',1,'stdAc::state_t::swingh()'],['../unionVoltasProtocol.html#a55094a8796bf95e81eb7dd9a91d7a127',1,'VoltasProtocol::SwingH()']]], - ['swinghchange_7274',['SwingHChange',['../unionVoltasProtocol.html#a32c53808a0f8b6574025f2b3c721ae47',1,'VoltasProtocol']]], - ['swinghflag_7275',['swingHFlag',['../classIRCoolixAC.html#a1c5fb27fb58d4d1a1fd8c9931eba58c4',1,'IRCoolixAC']]], - ['swingv_7276',['SwingV',['../unionVoltasProtocol.html#ac2a240ab6b19af0e472c3134331a6e68',1,'VoltasProtocol::SwingV()'],['../structstdAc_1_1state__t.html#a35477d368350d8981ad8b7b09505857e',1,'stdAc::state_t::swingv()']]], - ['swingvflag_7277',['swingVFlag',['../classIRCoolixAC.html#adf18ad8494466f6301176ce10aa3a075',1,'IRCoolixAC']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_12.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_12.js deleted file mode 100644 index 94cc9ed80..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_12.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['temp_7278',['Temp',['../unionAirwellProtocol.html#a5a6bd2772f3b9b5898ea84cf272cdf87',1,'AirwellProtocol::Temp()'],['../unionGreeProtocol.html#a46075a9f5fbd0d3829a84cca3d4a9d4f',1,'GreeProtocol::Temp()'],['../unionHaierProtocol.html#affb6ef60b50ae3351393e3f168ae8f2f',1,'HaierProtocol::Temp()'],['../unionHaierYRW02Protocol.html#a19211a1af7d11da6034b87cb7a042fcd',1,'HaierYRW02Protocol::Temp()'],['../unionMideaProtocol.html#a4206c02c5cafe996c05d92beb7a7e8d6',1,'MideaProtocol::Temp()'],['../unionVoltasProtocol.html#a23efaf01747b58d1e77c101f99bc2b4c',1,'VoltasProtocol::Temp()']]], - ['tempextradegreef_7279',['TempExtraDegreeF',['../unionGreeProtocol.html#ae093878b66b84bbc4f5c5df5e59fd639',1,'GreeProtocol']]], - ['tempset_7280',['TempSet',['../unionVoltasProtocol.html#a16ae188cb58127b21fb905f3b1d8653c',1,'VoltasProtocol']]], - ['timeout_7281',['timeout',['../structirparams__t.html#a132d6448ad59f03f6b35c4b04a6d1af4',1,'irparams_t']]], - ['timer_7282',['timer',['../structirparams__t.html#a6d4594a4d6bf8a2587095be7adfc018d',1,'irparams_t']]], - ['timerenabled_7283',['TimerEnabled',['../unionGreeProtocol.html#a603b0bde826287c2ddddb4d17cf9acd0',1,'GreeProtocol']]], - ['timerhalfhr_7284',['TimerHalfHr',['../unionGreeProtocol.html#a3e9fe2455001daec79f687797842239c',1,'GreeProtocol']]], - ['timerhours_7285',['TimerHours',['../unionGreeProtocol.html#a7cc95f9868755876049dbe2b3ce4c730',1,'GreeProtocol']]], - ['timertenshr_7286',['TimerTensHr',['../unionGreeProtocol.html#a21cc20bf1a214a17c735e5997f236ee9',1,'GreeProtocol']]], - ['turbo_7287',['turbo',['../structstdAc_1_1state__t.html#aae084b686685f2b2a07ccdda649e358c',1,'stdAc::state_t::turbo()'],['../unionGreeProtocol.html#a36add055a70df62e09bca1e031314a4d',1,'GreeProtocol::Turbo()'],['../unionHaierYRW02Protocol.html#a1cea874c8398b49e704ba0943284c64a',1,'HaierYRW02Protocol::Turbo()'],['../unionVoltasProtocol.html#aa0bfed2718430a9cffdfdc02b345971b',1,'VoltasProtocol::Turbo()']]], - ['turboflag_7288',['turboFlag',['../classIRCoolixAC.html#a60a8a848951555dba34f2a317d6611ea',1,'IRCoolixAC']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_13.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_13.js deleted file mode 100644 index e25c8dc49..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_13.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['unknown_7289',['unknown',['../unionHaierProtocol.html#aabc2a684c5936858544c02ec8a68afb9',1,'HaierProtocol']]], - ['unknown1_7290',['unknown1',['../unionGreeProtocol.html#ae973c1c723b7162959374e1fd8ecab61',1,'GreeProtocol']]], - ['unknown2_7291',['unknown2',['../unionGreeProtocol.html#aa102f7d68c26f5b8644b13113a5b05f4',1,'GreeProtocol']]], - ['use_5ftime_5fstate_7292',['use_time_state',['../classIRVestelAc.html#af1b622c50a4952fb3edaf483e1bf9328',1,'IRVestelAc']]], - ['used_7293',['used',['../structmatch__result__t.html#a26cea305aa83ed65b88ac0b6ed6de54a',1,'match_result_t']]], - ['usefahrenheit_7294',['UseFahrenheit',['../unionGreeProtocol.html#a47c79761efe40c00e6bb01b7712b272c',1,'GreeProtocol::UseFahrenheit()'],['../unionMideaProtocol.html#a1b1258107620bb83fd6356815242e19b',1,'MideaProtocol::useFahrenheit()']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_14.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_14.js deleted file mode 100644 index 8694c8171..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_14.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['value_7295',['value',['../classdecode__results.html#a033502b7a6b4b0412e5a2062e33c5f47',1,'decode_results']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_16.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_16.js deleted file mode 100644 index 501ffbb9c..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_16.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['xfan_7298',['Xfan',['../unionGreeProtocol.html#a3fbf66dfc2043710c5e00f8230eddb48',1,'GreeProtocol']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_2.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_2.js deleted file mode 100644 index 341973dd6..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_2.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['backup_4593',['backup',['../classIRToshibaAC.html#adc8d8c6918cd110f524f6bedf6f2bb6e',1,'IRToshibaAC']]], - ['beep_4594',['beep',['../structstdAc_1_1state__t.html#a468ce4cf8b68467964b1f1840257663d',1,'stdAc::state_t']]], - ['bits_4595',['bits',['../classdecode__results.html#aa5ba2fd53bdb36bdc120d8eabd9f36d7',1,'decode_results']]], - ['bufsize_4596',['bufsize',['../structirparams__t.html#a2b34d697b85ee6a0ce08344c941e50ec',1,'irparams_t']]], - ['button_4597',['Button',['../unionHaierYRW02Protocol.html#ab5b13626ecf6214cc1be52d47909915d',1,'HaierYRW02Protocol']]], - ['byte_4598',['byte',['../unionmagiquest.html#af1a9c9a147a1610fe5f0e77ca3e09e44',1,'magiquest']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_3.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_3.js deleted file mode 100644 index fdb349c15..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_3.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['celsius_4599',['celsius',['../structstdAc_1_1state__t.html#a235b17f3979b155b368bfdc2b14123f5',1,'stdAc::state_t']]], - ['checksum_4600',['Checksum',['../unionVoltasProtocol.html#a4349ae4488d2d9c9dd5606502d486b19',1,'VoltasProtocol']]], - ['clean_4601',['clean',['../structstdAc_1_1state__t.html#a703fa57ade60d68deccbb2a59258b32a',1,'stdAc::state_t']]], - ['cleanflag_4602',['cleanFlag',['../classIRCoolixAC.html#a9280bc7517713dae451a64e35674804d',1,'IRCoolixAC']]], - ['clock_4603',['clock',['../structstdAc_1_1state__t.html#ab1d76172930ebfe992fd9b700369e787',1,'stdAc::state_t']]], - ['cmd_4604',['cmd',['../unionmagiquest.html#ae4e71f4919a714a6d5db4b2e420e8c43',1,'magiquest']]], - ['command_4605',['Command',['../unionHaierProtocol.html#aeb39971e74e12fb0c7463006d6c644bd',1,'HaierProtocol::Command()'],['../classdecode__results.html#a9b750d09f713b0693472f815fd0fd402',1,'decode_results::command()']]], - ['cool_5fmode_4606',['cool_mode',['../classIRArgoAC.html#a74e7e489d743f213664d9259f1e7a431',1,'IRArgoAC']]], - ['currhours_4607',['CurrHours',['../unionHaierProtocol.html#a093d2441856e448462551ac7bc1b8d9b',1,'HaierProtocol']]], - ['currmins_4608',['CurrMins',['../unionHaierProtocol.html#a70abde8bccafd39cf1a1506f63481893',1,'HaierProtocol']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_4.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_4.js deleted file mode 100644 index 8e61dbb7e..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_4.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['data_4609',['data',['../structmatch__result__t.html#ae88be61a6d1ffa7c3525aa958f4c0d25',1,'match_result_t']]], - ['decode_5ftype_4610',['decode_type',['../classdecode__results.html#a9c0e9f161b9c90dc10b7561d4c0b50fa',1,'decode_results']]], - ['degrees_4611',['degrees',['../structstdAc_1_1state__t.html#a3d1ff0ff2e0035db4ee8ead5c53b2dbd',1,'stdAc::state_t']]], - ['displaytemp_4612',['DisplayTemp',['../unionGreeProtocol.html#ad0756a64f9c90c9dd12ca6cd71c78bb2',1,'GreeProtocol']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_5.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_5.js deleted file mode 100644 index ed7e821e3..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['econo_4613',['econo',['../structstdAc_1_1state__t.html#a580c826c6d9671715adfe8445531b957',1,'stdAc::state_t::econo()'],['../unionVoltasProtocol.html#a4f44e3e3a68988d25173b2aab1c32e53',1,'VoltasProtocol::Econo()']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_6.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_6.js deleted file mode 100644 index d3b7c0616..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_6.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['fan_4614',['Fan',['../unionAirwellProtocol.html#a7d38043e982231fb6a331d72f7407c10',1,'AirwellProtocol::Fan()'],['../unionGreeProtocol.html#af6f917228f457a24e70256d7c132289c',1,'GreeProtocol::Fan()'],['../unionHaierProtocol.html#a44e6a58782f4c6d5e532c715e9050b5b',1,'HaierProtocol::Fan()'],['../unionHaierYRW02Protocol.html#a4ecca9653d14ccd283e44f6e385ff36a',1,'HaierYRW02Protocol::Fan()'],['../unionMideaProtocol.html#a04b0f344ec9b7cf2bdbd2c530b409fcb',1,'MideaProtocol::Fan()']]], - ['fanspeed_4615',['fanspeed',['../structstdAc_1_1state__t.html#a28a50c877a0eaa71689ccc3bf9c957d7',1,'stdAc::state_t::fanspeed()'],['../unionVoltasProtocol.html#a7a2326d3ecf316e1a4e0a5db0523cad6',1,'VoltasProtocol::FanSpeed()']]], - ['filter_4616',['filter',['../structstdAc_1_1state__t.html#a41e4b957f9e011ddb32d35bfcd56c0e7',1,'stdAc::state_t']]], - ['flap_5fmode_4617',['flap_mode',['../classIRArgoAC.html#abfc383d92ced7d47945cc5ac996e5fc4',1,'IRArgoAC']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_7.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_7.js deleted file mode 100644 index 35a484518..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['health_4618',['Health',['../unionHaierProtocol.html#a4cf70c633e33066e3fc0f98bb2ad3820',1,'HaierProtocol::Health()'],['../unionHaierYRW02Protocol.html#a7fa39803fd72a788736bb8f00acfa76f',1,'HaierYRW02Protocol::Health()']]], - ['heat_5fmode_4619',['heat_mode',['../classIRArgoAC.html#a255762f71502b9ffeb0686759991ec53',1,'IRArgoAC']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_8.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_8.js deleted file mode 100644 index 71d88094a..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_8.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['ifeel_4620',['IFeel',['../unionGreeProtocol.html#a592364307a4b11064888bda76c403142',1,'GreeProtocol']]], - ['irparams_4621',['irparams',['../IRrecv_8cpp.html#a5620be27a7445f25d43dbe3432ed6fd1',1,'IRrecv.cpp']]], - ['irparams_5fsave_4622',['irparams_save',['../classIRrecv.html#a6fdac84ce51ce119972bf121ccc95aab',1,'IRrecv::irparams_save()'],['../IRrecv_8cpp.html#a96e84ae171529ee954c53e2e938dd998',1,'irparams_save(): IRrecv.cpp']]], - ['irpin_4623',['IRpin',['../classIRsend.html#ae4a6ea1e72f4861167002d6e7bf17b7c',1,'IRsend']]], - ['irremote_5fmux_4624',['irremote_mux',['../IRrecv_8cpp.html#ad2612f65707186ef7df0179d3636b4ea',1,'IRrecv.cpp']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_a.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_a.js deleted file mode 100644 index f960a58bd..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_a.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['ledflag_7215',['ledFlag',['../classIRCoolixAC.html#a03ba5e0a6cb47a7bb054155c2111a69c',1,'IRCoolixAC']]], - ['light_7216',['light',['../structstdAc_1_1state__t.html#a51c3a5c4703ea49b420d70aeb18b6b9b',1,'stdAc::state_t::light()'],['../unionGreeProtocol.html#a72092768725667d3bce381a6e2900c66',1,'GreeProtocol::Light()'],['../unionVoltasProtocol.html#a811a0de66771c693831740440aac460c',1,'VoltasProtocol::Light()']]], - ['llword_7217',['llword',['../unionmagiquest.html#ad57fbc75ab289c3e93b94be0b2187d65',1,'magiquest']]], - ['lword_7218',['lword',['../unionmagiquest.html#ac87102145311831a232002b52fe2d02c',1,'magiquest']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_b.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_b.js deleted file mode 100644 index 6f3febef8..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_b.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['magnitude_7219',['magnitude',['../unionmagiquest.html#a8f687419a00322a04aab223dec093d6e',1,'magiquest']]], - ['mode_7220',['mode',['../structstdAc_1_1state__t.html#ae5e4b17fac2ea36300f796670337d7a7',1,'stdAc::state_t::mode()'],['../unionAirwellProtocol.html#a4a12b674ee9dcdbca592a1c5f3deb43e',1,'AirwellProtocol::Mode()'],['../unionGreeProtocol.html#aacd25e508a37e0012295a87e712987ce',1,'GreeProtocol::Mode()'],['../unionHaierProtocol.html#aab10d402084329d472e08385cc9645ec',1,'HaierProtocol::Mode()'],['../unionHaierYRW02Protocol.html#a8b9060ce2e0b1e9192191e6ae68277dd',1,'HaierYRW02Protocol::Mode()'],['../unionMideaProtocol.html#aa0255e9e1351d594b2e2c8c6f9698e1a',1,'MideaProtocol::Mode()'],['../unionVoltasProtocol.html#ad991a7ccaf9caa0b9f7880f4138f1dab',1,'VoltasProtocol::Mode()']]], - ['model_7221',['model',['../structstdAc_1_1state__t.html#aa1a57a63b2ea80c1f9c4a1bcf16a4c62',1,'stdAc::state_t']]], - ['modela_7222',['ModelA',['../unionGreeProtocol.html#a66fdedd8318541269f0ab9ae3b832813',1,'GreeProtocol']]], - ['modulation_7223',['modulation',['../classIRsend.html#a11e26c03c87e2bed756eb7f318570bd8',1,'IRsend']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_c.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_c.js deleted file mode 100644 index 804cefdab..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_c.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['next_7224',['next',['../classIRac.html#ae85d7ac0c58028b2547518f88d3e98fe',1,'IRac']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_d.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_d.js deleted file mode 100644 index e00140e5f..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_d.js +++ /dev/null @@ -1,22 +0,0 @@ -var searchData= -[ - ['offhours_7225',['OffHours',['../unionHaierProtocol.html#aecaad31185de1e7843047a9b9194d55b',1,'HaierProtocol']]], - ['offmins_7226',['OffMins',['../unionHaierProtocol.html#a6eec6ff574e93f327ca567251b37e33b',1,'HaierProtocol']]], - ['offtimeperiod_7227',['offTimePeriod',['../classIRsend.html#a9e45c9e4f54db86c1f3e506cd72fe4c1',1,'IRsend']]], - ['offtimer_7228',['OffTimer',['../unionHaierProtocol.html#a6f3893711bffc1d59d8e3d76e7a954a2',1,'HaierProtocol']]], - ['offtimer12hr_7229',['OffTimer12Hr',['../unionVoltasProtocol.html#a6d55446514c9a0209209504de336a0b5',1,'VoltasProtocol']]], - ['offtimerenable_7230',['OffTimerEnable',['../unionVoltasProtocol.html#a415a13e7722786f41b33c1db78771c8e',1,'VoltasProtocol']]], - ['offtimerhrs_7231',['OffTimerHrs',['../unionVoltasProtocol.html#aeef99d8c93860c34eb08f1c591d1da9f',1,'VoltasProtocol']]], - ['offtimermins_7232',['OffTimerMins',['../unionVoltasProtocol.html#a243f1a105ba96c4830d0b4ce66a75a4e',1,'VoltasProtocol']]], - ['onhours_7233',['OnHours',['../unionHaierProtocol.html#af08311ee6680b3a6951bd200e2b8f310',1,'HaierProtocol']]], - ['onmins_7234',['OnMins',['../unionHaierProtocol.html#a65fe65bdfb819fec434eba573daccc34',1,'HaierProtocol']]], - ['ontimeperiod_7235',['onTimePeriod',['../classIRsend.html#aaaa65f31dbea033f8130e847b0366d94',1,'IRsend']]], - ['ontimer_7236',['OnTimer',['../unionHaierProtocol.html#ae5c9fd1397bcf3c6737c38d8e76682b1',1,'HaierProtocol']]], - ['ontimer12hr_7237',['OnTimer12Hr',['../unionVoltasProtocol.html#a600e00d4c64841f9ce11490197bfbc0d',1,'VoltasProtocol']]], - ['ontimerenable_7238',['OnTimerEnable',['../unionVoltasProtocol.html#a26f169f663b7cbac7e6235b7320929da',1,'VoltasProtocol']]], - ['ontimerhrs_7239',['OnTimerHrs',['../unionVoltasProtocol.html#ad38a8a291f71ccb4c34363c4662994d6',1,'VoltasProtocol']]], - ['ontimermins_7240',['OnTimerMins',['../unionVoltasProtocol.html#a38cb13bbd23b5680bcdbfcf5b2223a71',1,'VoltasProtocol']]], - ['outputoff_7241',['outputOff',['../classIRsend.html#a5e80df8b2ee534dbd6ddc30a852a2791',1,'IRsend']]], - ['outputon_7242',['outputOn',['../classIRsend.html#a4acfc45b339e724e2dbdff24762dfa7d',1,'IRsend']]], - ['overflow_7243',['overflow',['../structirparams__t.html#aa39b4f38e0ffcd470766373e03548e58',1,'irparams_t::overflow()'],['../classdecode__results.html#a821bc53c006bab3283c6b8592f0c43d3',1,'decode_results::overflow()']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_e.js b/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_e.js deleted file mode 100644 index c58ebd9e0..000000000 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/search/variables_e.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['padding_7244',['padding',['../unionmagiquest.html#a28ca4be56c78ef762f87171506dc6e93',1,'magiquest']]], - ['periodoffset_7245',['periodOffset',['../classIRsend.html#a1b5180cbf4f88f19fca3f677e1e91b96',1,'IRsend']]], - ['power_7246',['power',['../structstdAc_1_1state__t.html#ab85d37cc99bbbc4915331369c4ea622e',1,'stdAc::state_t::power()'],['../unionGreeProtocol.html#ab04d1d5bdaf8fb0b7129e210de14a772',1,'GreeProtocol::Power()'],['../unionHaierYRW02Protocol.html#ae87a93806911792662391a671607a760',1,'HaierYRW02Protocol::Power()'],['../unionMideaProtocol.html#a6b534bb5845c3c184ee43b87995cff32',1,'MideaProtocol::Power()'],['../unionVoltasProtocol.html#a554e4bce95426a096f090cc6890f46f2',1,'VoltasProtocol::Power()']]], - ['powerflag_7247',['powerFlag',['../classIRCoolixAC.html#a5984ff64ff14df92291618a647da08f9',1,'IRCoolixAC']]], - ['powertoggle_7248',['PowerToggle',['../unionAirwellProtocol.html#a9a3893a0ec7811202697adeb60d89775',1,'AirwellProtocol']]], - ['prefix_7249',['Prefix',['../unionHaierProtocol.html#a6c15a8e22231dae23ffa8bef78420054',1,'HaierProtocol::Prefix()'],['../unionHaierYRW02Protocol.html#af55185fad3229f2011b5917412ad8c1b',1,'HaierYRW02Protocol::Prefix()']]], - ['prev_5fmode_7250',['prev_mode',['../classIRToshibaAC.html#ac251884741fb8ad8280b55e99c23211e',1,'IRToshibaAC']]], - ['protocol_7251',['protocol',['../structstdAc_1_1state__t.html#af59897778be0e571f77dd11337352c27',1,'stdAc::state_t']]] -]; diff --git a/lib/IRremoteESP8266-2.7.10/keywords.txt b/lib/IRremoteESP8266-2.7.10/keywords.txt deleted file mode 100644 index e90eb725a..000000000 --- a/lib/IRremoteESP8266-2.7.10/keywords.txt +++ /dev/null @@ -1,3855 +0,0 @@ -######################################### -# Syntax Coloring Map For IRremoteESP8266 -######################################### - -################################################ -# WARNING: Do NOT edit this file directly. -# It is generated by 'tools/mkkeywords' -# e.g. tools/mkkeywords > keywords.txt -################################################ - -####################################################### -# The Arduino IDE requires the use of a tab separator -# between the name and identifier. Without this tab the -# keyword is not highlighted. -# -# Reference: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification#keywords -####################################################### - -####################################### -# Datatypes & Classes (KEYWORD1) -####################################### - -IRAirwellAc KEYWORD1 -IRAmcorAc KEYWORD1 -IRArgoAC KEYWORD1 -IRCarrierAc64 KEYWORD1 -IRCoolixAC KEYWORD1 -IRCoronaAc KEYWORD1 -IRDaikin128 KEYWORD1 -IRDaikin152 KEYWORD1 -IRDaikin160 KEYWORD1 -IRDaikin176 KEYWORD1 -IRDaikin2 KEYWORD1 -IRDaikin216 KEYWORD1 -IRDaikin64 KEYWORD1 -IRDaikinESP KEYWORD1 -IRDelonghiAc KEYWORD1 -IRElectraAc KEYWORD1 -IRFujitsuAC KEYWORD1 -IRGoodweatherAc KEYWORD1 -IRGreeAC KEYWORD1 -IRHaierAC KEYWORD1 -IRHaierACYRW02 KEYWORD1 -IRHitachiAc KEYWORD1 -IRHitachiAc1 KEYWORD1 -IRHitachiAc3 KEYWORD1 -IRHitachiAc344: KEYWORD1 -IRHitachiAc424 KEYWORD1 -IRKelvinatorAC KEYWORD1 -IRLgAc KEYWORD1 -IRMideaAC KEYWORD1 -IRMitsubishi112 KEYWORD1 -IRMitsubishi136 KEYWORD1 -IRMitsubishiAC KEYWORD1 -IRMitsubishiHeavy152Ac KEYWORD1 -IRMitsubishiHeavy88Ac KEYWORD1 -IRNeoclimaAc KEYWORD1 -IRPanasonicAc KEYWORD1 -IRSamsungAc KEYWORD1 -IRSanyoAc KEYWORD1 -IRSharpAc KEYWORD1 -IRTcl112Ac KEYWORD1 -IRTecoAc KEYWORD1 -IRToshibaAC KEYWORD1 -IRTrotecESP KEYWORD1 -IRVestelAc KEYWORD1 -IRVoltas KEYWORD1 -IRWhirlpoolAc KEYWORD1 -IRac KEYWORD1 -IRrecv KEYWORD1 -IRsend KEYWORD1 -IRtimer KEYWORD1 -TimerMs KEYWORD1 -decode_results KEYWORD1 -decode_type_t KEYWORD1 -fanspeed_t KEYWORD1 -fujitsu_ac_remote_model_t KEYWORD1 -gree_ac_remote_model_t KEYWORD1 -hitachi_ac1_remote_model_t KEYWORD1 -irparams_t KEYWORD1 -lg_ac_remote_model_t KEYWORD1 -match_result_t KEYWORD1 -opmode_t KEYWORD1 -panasonic_ac_remote_model_t KEYWORD1 -state_t KEYWORD1 -swingh_t KEYWORD1 -swingv_t KEYWORD1 -voltas_ac_remote_model_t KEYWORD1 -whirlpool_ac_remote_model_t KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -_backupState KEYWORD2 -_cancelOffTimer KEYWORD2 -_cancelOnTimer KEYWORD2 -_delayMicroseconds KEYWORD2 -_getTemp KEYWORD2 -_getTime KEYWORD2 -_getTimer KEYWORD2 -_matchGeneric KEYWORD2 -_restoreState KEYWORD2 -_sendSony KEYWORD2 -_setMode KEYWORD2 -_setPower KEYWORD2 -_setTemp KEYWORD2 -_setTime KEYWORD2 -_setTimer KEYWORD2 -_toString KEYWORD2 -_validTolerance KEYWORD2 -add KEYWORD2 -addBoolToString KEYWORD2 -addDayToString KEYWORD2 -addFanToString KEYWORD2 -addIntToString KEYWORD2 -addLabeledString KEYWORD2 -addModeToString KEYWORD2 -addModelToString KEYWORD2 -addTempToString KEYWORD2 -airwell KEYWORD2 -amcor KEYWORD2 -argo KEYWORD2 -bcdToUint8 KEYWORD2 -begin KEYWORD2 -boolToString KEYWORD2 -buildFromState KEYWORD2 -buildState KEYWORD2 -calcBlockChecksum KEYWORD2 -calcChecksum KEYWORD2 -calcFirstChecksum KEYWORD2 -calcSecondChecksum KEYWORD2 -calcUSecPeriod KEYWORD2 -calculateChecksum KEYWORD2 -calibrate KEYWORD2 -cancelOffTimer KEYWORD2 -cancelOnTimer KEYWORD2 -cancelTimers KEYWORD2 -carrier64 KEYWORD2 -celsiusToFahrenheit KEYWORD2 -checkInvertedBytePairs KEYWORD2 -checkZjsSig KEYWORD2 -checkZmsSig KEYWORD2 -checksum KEYWORD2 -clearOnTimerFlag KEYWORD2 -clearPowerSpecial KEYWORD2 -clearSensorTemp KEYWORD2 -clearSleepTimerFlag KEYWORD2 -cmpStates KEYWORD2 -compare KEYWORD2 -convertFan KEYWORD2 -convertMode KEYWORD2 -convertSwingH KEYWORD2 -convertSwingV KEYWORD2 -coolix KEYWORD2 -copyIrParams KEYWORD2 -corona KEYWORD2 -countBits KEYWORD2 -crudeNoiseFilter KEYWORD2 -daikin KEYWORD2 -daikin128 KEYWORD2 -daikin152 KEYWORD2 -daikin160 KEYWORD2 -daikin176 KEYWORD2 -daikin2 KEYWORD2 -daikin216 KEYWORD2 -daikin64 KEYWORD2 -decode KEYWORD2 -decodeAirwell KEYWORD2 -decodeAiwaRCT501 KEYWORD2 -decodeAmcor KEYWORD2 -decodeArgo KEYWORD2 -decodeCOOLIX KEYWORD2 -decodeCarrierAC KEYWORD2 -decodeCarrierAC40 KEYWORD2 -decodeCarrierAC64 KEYWORD2 -decodeCoronaAc KEYWORD2 -decodeDISH KEYWORD2 -decodeDaikin KEYWORD2 -decodeDaikin128 KEYWORD2 -decodeDaikin152 KEYWORD2 -decodeDaikin160 KEYWORD2 -decodeDaikin176 KEYWORD2 -decodeDaikin2 KEYWORD2 -decodeDaikin216 KEYWORD2 -decodeDaikin64 KEYWORD2 -decodeDelonghiAc KEYWORD2 -decodeDenon KEYWORD2 -decodeDoshisha KEYWORD2 -decodeElectraAC KEYWORD2 -decodeEpson KEYWORD2 -decodeFujitsuAC KEYWORD2 -decodeGICable KEYWORD2 -decodeGoodweather KEYWORD2 -decodeGree KEYWORD2 -decodeHaierAC KEYWORD2 -decodeHaierACYRW02 KEYWORD2 -decodeHash KEYWORD2 -decodeHitachiAC KEYWORD2 -decodeHitachiAc3 KEYWORD2 -decodeHitachiAc424 KEYWORD2 -decodeInax KEYWORD2 -decodeJVC KEYWORD2 -decodeKelvinator KEYWORD2 -decodeLG KEYWORD2 -decodeLasertag KEYWORD2 -decodeLegoPf KEYWORD2 -decodeLutron KEYWORD2 -decodeMWM KEYWORD2 -decodeMagiQuest KEYWORD2 -decodeMetz KEYWORD2 -decodeMidea KEYWORD2 -decodeMidea24 KEYWORD2 -decodeMitsubishi KEYWORD2 -decodeMitsubishi112 KEYWORD2 -decodeMitsubishi136 KEYWORD2 -decodeMitsubishi2 KEYWORD2 -decodeMitsubishiAC KEYWORD2 -decodeMitsubishiHeavy KEYWORD2 -decodeMultibrackets KEYWORD2 -decodeNEC KEYWORD2 -decodeNeoclima KEYWORD2 -decodeNikai KEYWORD2 -decodePanasonic KEYWORD2 -decodePanasonicAC KEYWORD2 -decodePioneer KEYWORD2 -decodeRC5 KEYWORD2 -decodeRC6 KEYWORD2 -decodeRCMM KEYWORD2 -decodeSAMSUNG KEYWORD2 -decodeSamsung36 KEYWORD2 -decodeSamsungAC KEYWORD2 -decodeSanyo KEYWORD2 -decodeSanyoAc KEYWORD2 -decodeSanyoLC7461 KEYWORD2 -decodeSharp KEYWORD2 -decodeSharpAc KEYWORD2 -decodeSony KEYWORD2 -decodeSymphony KEYWORD2 -decodeTeco KEYWORD2 -decodeToState KEYWORD2 -decodeToshibaAC KEYWORD2 -decodeTrotec KEYWORD2 -decodeVestelAc KEYWORD2 -decodeVoltas KEYWORD2 -decodeWhirlpoolAC KEYWORD2 -decodeWhynter KEYWORD2 -decodeZepeal KEYWORD2 -defaultBits KEYWORD2 -delonghiac KEYWORD2 -disableIRIn KEYWORD2 -disableOffTimer KEYWORD2 -disableOnTimer KEYWORD2 -disableSleepTimer KEYWORD2 -elapsed KEYWORD2 -electra KEYWORD2 -enableIRIn KEYWORD2 -enableIROut KEYWORD2 -enableOffTimer KEYWORD2 -enableOnTimer KEYWORD2 -enableSleepTimer KEYWORD2 -enableTimer KEYWORD2 -encodeDoshisha KEYWORD2 -encodeJVC KEYWORD2 -encodeLG KEYWORD2 -encodeMagiQuest KEYWORD2 -encodeMetz KEYWORD2 -encodeNEC KEYWORD2 -encodePanasonic KEYWORD2 -encodePioneer KEYWORD2 -encodeRC5 KEYWORD2 -encodeRC5X KEYWORD2 -encodeRC6 KEYWORD2 -encodeSAMSUNG KEYWORD2 -encodeSanyoLC7461 KEYWORD2 -encodeSharp KEYWORD2 -encodeSony KEYWORD2 -encodeTime KEYWORD2 -fahrenheitToCelsius KEYWORD2 -fanspeedToString KEYWORD2 -fixChecksum KEYWORD2 -fixup KEYWORD2 -fujitsu KEYWORD2 -get3D KEYWORD2 -get8CHeat KEYWORD2 -getBeep KEYWORD2 -getBit KEYWORD2 -getBoost KEYWORD2 -getBreeze KEYWORD2 -getBufSize KEYWORD2 -getButton KEYWORD2 -getClean KEYWORD2 -getClock KEYWORD2 -getCmd KEYWORD2 -getComfort KEYWORD2 -getCommand KEYWORD2 -getCorrectedRawLength KEYWORD2 -getCurrTime KEYWORD2 -getCurrentDay KEYWORD2 -getCurrentTime KEYWORD2 -getDisplay KEYWORD2 -getDisplayTempSource KEYWORD2 -getEcono KEYWORD2 -getEconoToggle KEYWORD2 -getEye KEYWORD2 -getEyeAuto KEYWORD2 -getFan KEYWORD2 -getFanSpeed KEYWORD2 -getFilter KEYWORD2 -getFlap KEYWORD2 -getFollow KEYWORD2 -getFresh KEYWORD2 -getFreshAir KEYWORD2 -getFreshAirHigh KEYWORD2 -getHealth KEYWORD2 -getHold KEYWORD2 -getHumid KEYWORD2 -getIFeel KEYWORD2 -getInternalStateLength KEYWORD2 -getIon KEYWORD2 -getIonFilter KEYWORD2 -getLed KEYWORD2 -getLight KEYWORD2 -getLightToggle KEYWORD2 -getMax KEYWORD2 -getMode KEYWORD2 -getMold KEYWORD2 -getNight KEYWORD2 -getOffTime KEYWORD2 -getOffTimeEnabled KEYWORD2 -getOffTimer KEYWORD2 -getOffTimerEnabled KEYWORD2 -getOnTime KEYWORD2 -getOnTimeEnabled KEYWORD2 -getOnTimer KEYWORD2 -getOnTimerEnabled KEYWORD2 -getOutsideQuiet KEYWORD2 -getPower KEYWORD2 -getPowerButton KEYWORD2 -getPowerSpecial KEYWORD2 -getPowerToggle KEYWORD2 -getPowerful KEYWORD2 -getPurify KEYWORD2 -getQuiet KEYWORD2 -getRClevel KEYWORD2 -getRaw KEYWORD2 -getRoomTemp KEYWORD2 -getSave KEYWORD2 -getSectionByte KEYWORD2 -getSensor KEYWORD2 -getSensorTemp KEYWORD2 -getSilent KEYWORD2 -getSleep KEYWORD2 -getSleepTime KEYWORD2 -getSleepTimerEnabled KEYWORD2 -getSpecial KEYWORD2 -getSpeed KEYWORD2 -getStartClock KEYWORD2 -getStateLength KEYWORD2 -getStopClock KEYWORD2 -getSuper KEYWORD2 -getSwing KEYWORD2 -getSwingH KEYWORD2 -getSwingHChange KEYWORD2 -getSwingHorizontal KEYWORD2 -getSwingToggle KEYWORD2 -getSwingV KEYWORD2 -getSwingVToggle KEYWORD2 -getSwingVertical KEYWORD2 -getSwingVerticalAuto KEYWORD2 -getSwingVerticalPosition KEYWORD2 -getTemp KEYWORD2 -getTempOffset KEYWORD2 -getTempRaw KEYWORD2 -getTempUnit KEYWORD2 -getTime KEYWORD2 -getTimer KEYWORD2 -getTimerEnabled KEYWORD2 -getTimerTime KEYWORD2 -getTimerType KEYWORD2 -getTolerance KEYWORD2 -getTurbo KEYWORD2 -getUseCelsius KEYWORD2 -getUseFahrenheit KEYWORD2 -getVane KEYWORD2 -getWeeklyTimerEnable KEYWORD2 -getWiFi KEYWORD2 -getWideVane KEYWORD2 -getWifi KEYWORD2 -getXFan KEYWORD2 -getZoneFollow KEYWORD2 -getiFeel KEYWORD2 -goodweather KEYWORD2 -gree KEYWORD2 -haier KEYWORD2 -haierYrwo2 KEYWORD2 -handleSpecialState KEYWORD2 -hasACState KEYWORD2 -hasInvertedStates KEYWORD2 -hasStateChanged KEYWORD2 -hitachi KEYWORD2 -hitachi1 KEYWORD2 -hitachi344 KEYWORD2 -hitachi424 KEYWORD2 -htmlEscape KEYWORD2 -initState KEYWORD2 -invertBits KEYWORD2 -isEconoToggle KEYWORD2 -isOffTimerActive KEYWORD2 -isOffTimerEnabled KEYWORD2 -isOnTimerActive KEYWORD2 -isOnTimerEnabled KEYWORD2 -isPowerSpecial KEYWORD2 -isProtocolSupported KEYWORD2 -isSpecialState KEYWORD2 -isSwingVToggle KEYWORD2 -isTimeCommand KEYWORD2 -isTimerActive KEYWORD2 -isTimerEnabled KEYWORD2 -isValidLgAc KEYWORD2 -kelvinator KEYWORD2 -ledOff KEYWORD2 -ledOn KEYWORD2 -lg KEYWORD2 -lowLevelSanityCheck KEYWORD2 -mark KEYWORD2 -markAsSent KEYWORD2 -match KEYWORD2 -matchAtLeast KEYWORD2 -matchBytes KEYWORD2 -matchData KEYWORD2 -matchGeneric KEYWORD2 -matchGenericConstBitTime KEYWORD2 -matchManchester KEYWORD2 -matchManchesterData KEYWORD2 -matchMark KEYWORD2 -matchSpace KEYWORD2 -midea KEYWORD2 -minRepeats KEYWORD2 -minsToString KEYWORD2 -mitsubishi KEYWORD2 -mitsubishi112 KEYWORD2 -mitsubishi136 KEYWORD2 -mitsubishiHeavy152 KEYWORD2 -mitsubishiHeavy88 KEYWORD2 -modelToStr KEYWORD2 -msToString KEYWORD2 -neoclima KEYWORD2 -off KEYWORD2 -on KEYWORD2 -opmodeToString KEYWORD2 -panasonic KEYWORD2 -recoverSavedState KEYWORD2 -reset KEYWORD2 -resultAcToString KEYWORD2 -resultToHexidecimal KEYWORD2 -resultToHumanReadableBasic KEYWORD2 -resultToRawArray KEYWORD2 -resultToSourceCode KEYWORD2 -resultToTimingInfo KEYWORD2 -resume KEYWORD2 -reverseBits KEYWORD2 -samsung KEYWORD2 -sanyo KEYWORD2 -send KEYWORD2 -sendAc KEYWORD2 -sendAirwell KEYWORD2 -sendAiwaRCT501 KEYWORD2 -sendAmcor KEYWORD2 -sendArgo KEYWORD2 -sendCOOLIX KEYWORD2 -sendCarrierAC KEYWORD2 -sendCarrierAC40 KEYWORD2 -sendCarrierAC64 KEYWORD2 -sendCoronaAc KEYWORD2 -sendDISH KEYWORD2 -sendDaikin KEYWORD2 -sendDaikin128 KEYWORD2 -sendDaikin152 KEYWORD2 -sendDaikin160 KEYWORD2 -sendDaikin176 KEYWORD2 -sendDaikin2 KEYWORD2 -sendDaikin216 KEYWORD2 -sendDaikin64 KEYWORD2 -sendData KEYWORD2 -sendDelonghiAc KEYWORD2 -sendDenon KEYWORD2 -sendDoshisha KEYWORD2 -sendElectraAC KEYWORD2 -sendEpson KEYWORD2 -sendExtended KEYWORD2 -sendFujitsuAC KEYWORD2 -sendGC KEYWORD2 -sendGICable KEYWORD2 -sendGeneric KEYWORD2 -sendGoodweather KEYWORD2 -sendGree KEYWORD2 -sendHaierAC KEYWORD2 -sendHaierACYRW02 KEYWORD2 -sendHitachiAC KEYWORD2 -sendHitachiAC1 KEYWORD2 -sendHitachiAC2 KEYWORD2 -sendHitachiAc3 KEYWORD2 -sendHitachiAc344 KEYWORD2 -sendHitachiAc424 KEYWORD2 -sendInax KEYWORD2 -sendJVC KEYWORD2 -sendKelvinator KEYWORD2 -sendLG KEYWORD2 -sendLG2 KEYWORD2 -sendLasertag KEYWORD2 -sendLegoPf KEYWORD2 -sendLutron KEYWORD2 -sendMWM KEYWORD2 -sendMagiQuest KEYWORD2 -sendManchester KEYWORD2 -sendManchesterData KEYWORD2 -sendMetz KEYWORD2 -sendMidea KEYWORD2 -sendMidea24 KEYWORD2 -sendMitsubishi KEYWORD2 -sendMitsubishi112 KEYWORD2 -sendMitsubishi136 KEYWORD2 -sendMitsubishi2 KEYWORD2 -sendMitsubishiAC KEYWORD2 -sendMitsubishiHeavy152 KEYWORD2 -sendMitsubishiHeavy88 KEYWORD2 -sendMultibrackets KEYWORD2 -sendNEC KEYWORD2 -sendNeoclima KEYWORD2 -sendNikai KEYWORD2 -sendOff KEYWORD2 -sendOn KEYWORD2 -sendPanasonic KEYWORD2 -sendPanasonic64 KEYWORD2 -sendPanasonicAC KEYWORD2 -sendPioneer KEYWORD2 -sendPronto KEYWORD2 -sendRC5 KEYWORD2 -sendRC6 KEYWORD2 -sendRCMM KEYWORD2 -sendRaw KEYWORD2 -sendSAMSUNG KEYWORD2 -sendSamsung36 KEYWORD2 -sendSamsungAC KEYWORD2 -sendSanyoAc KEYWORD2 -sendSanyoLC7461 KEYWORD2 -sendSharp KEYWORD2 -sendSharpAc KEYWORD2 -sendSharpRaw KEYWORD2 -sendSherwood KEYWORD2 -sendSony KEYWORD2 -sendSony38 KEYWORD2 -sendSymphony KEYWORD2 -sendTcl112Ac KEYWORD2 -sendTeco KEYWORD2 -sendToshibaAC KEYWORD2 -sendTrotec KEYWORD2 -sendVestelAc KEYWORD2 -sendVoltas KEYWORD2 -sendWhirlpoolAC KEYWORD2 -sendWhynter KEYWORD2 -sendZepeal KEYWORD2 -serialPrintUint64 KEYWORD2 -set3D KEYWORD2 -set8CHeat KEYWORD2 -setAuto KEYWORD2 -setBeep KEYWORD2 -setBit KEYWORD2 -setBits KEYWORD2 -setBoost KEYWORD2 -setBreeze KEYWORD2 -setButton KEYWORD2 -setClean KEYWORD2 -setClock KEYWORD2 -setCmd KEYWORD2 -setComfort KEYWORD2 -setCommand KEYWORD2 -setCurrTime KEYWORD2 -setCurrentDay KEYWORD2 -setCurrentTime KEYWORD2 -setDisplay KEYWORD2 -setDisplayTempSource KEYWORD2 -setEcono KEYWORD2 -setEconoToggle KEYWORD2 -setEye KEYWORD2 -setEyeAuto KEYWORD2 -setFan KEYWORD2 -setFanSpeed KEYWORD2 -setFilter KEYWORD2 -setFlap KEYWORD2 -setFollow KEYWORD2 -setFresh KEYWORD2 -setFreshAir KEYWORD2 -setFreshAirHigh KEYWORD2 -setHealth KEYWORD2 -setHold KEYWORD2 -setHumid KEYWORD2 -setIFeel KEYWORD2 -setInvertedStates KEYWORD2 -setIon KEYWORD2 -setIonFilter KEYWORD2 -setLed KEYWORD2 -setLight KEYWORD2 -setLightToggle KEYWORD2 -setMax KEYWORD2 -setMode KEYWORD2 -setModel KEYWORD2 -setMold KEYWORD2 -setNight KEYWORD2 -setOffTime KEYWORD2 -setOffTimeEnabled KEYWORD2 -setOffTimer KEYWORD2 -setOffTimerActive KEYWORD2 -setOffTimerEnabled KEYWORD2 -setOnTime KEYWORD2 -setOnTimeEnabled KEYWORD2 -setOnTimer KEYWORD2 -setOnTimerActive KEYWORD2 -setOnTimerEnabled KEYWORD2 -setOutsideQuiet KEYWORD2 -setPower KEYWORD2 -setPowerButton KEYWORD2 -setPowerSpecial KEYWORD2 -setPowerToggle KEYWORD2 -setPowerful KEYWORD2 -setPurify KEYWORD2 -setQuiet KEYWORD2 -setRaw KEYWORD2 -setRoomTemp KEYWORD2 -setSave KEYWORD2 -setSensor KEYWORD2 -setSensorTemp KEYWORD2 -setSensorTempRaw KEYWORD2 -setSilent KEYWORD2 -setSleep KEYWORD2 -setSpecial KEYWORD2 -setSpeed KEYWORD2 -setStartClock KEYWORD2 -setStateLength KEYWORD2 -setStopClock KEYWORD2 -setSuper KEYWORD2 -setSwing KEYWORD2 -setSwingH KEYWORD2 -setSwingHChange KEYWORD2 -setSwingHorizontal KEYWORD2 -setSwingToggle KEYWORD2 -setSwingV KEYWORD2 -setSwingVToggle KEYWORD2 -setSwingVertical KEYWORD2 -setTemp KEYWORD2 -setTempRaw KEYWORD2 -setTempUnit KEYWORD2 -setTime KEYWORD2 -setTimer KEYWORD2 -setTimerActive KEYWORD2 -setTimerEnabled KEYWORD2 -setTolerance KEYWORD2 -setTurbo KEYWORD2 -setUnknownThreshold KEYWORD2 -setUseCelsius KEYWORD2 -setUseFahrenheit KEYWORD2 -setVane KEYWORD2 -setWeeklyTimerEnable KEYWORD2 -setWiFi KEYWORD2 -setWideVane KEYWORD2 -setWifi KEYWORD2 -setXFan KEYWORD2 -setZoneFollow KEYWORD2 -setiFeel KEYWORD2 -sharp KEYWORD2 -space KEYWORD2 -stateReset KEYWORD2 -stepHoriz KEYWORD2 -stepVert KEYWORD2 -strToBool KEYWORD2 -strToDecodeType KEYWORD2 -strToModel KEYWORD2 -sumBytes KEYWORD2 -sumNibbles KEYWORD2 -swinghToString KEYWORD2 -swingvToString KEYWORD2 -tcl112 KEYWORD2 -teco KEYWORD2 -ticksHigh KEYWORD2 -ticksLow KEYWORD2 -toString KEYWORD2 -toggleRC5 KEYWORD2 -toggleRC6 KEYWORD2 -toggleSwingHoriz KEYWORD2 -toggleSwingVert KEYWORD2 -toshiba KEYWORD2 -trotec KEYWORD2 -typeToString KEYWORD2 -uint64ToString KEYWORD2 -uint8ToBcd KEYWORD2 -updateSavedState KEYWORD2 -validChecksum KEYWORD2 -validSection KEYWORD2 -vestel KEYWORD2 -voltas KEYWORD2 -whirlpool KEYWORD2 -xorBytes KEYWORD2 - -####################################### -# Constants (LITERAL1) -####################################### - -*kAllProtocolNamesStr LITERAL1 -// LITERAL1 -AIRWELL LITERAL1 -AIWA_RC_T501 LITERAL1 -AIWA_RC_T501_BITS LITERAL1 -AKB75215403 LITERAL1 -ALLOW_DELAY_CALLS LITERAL1 -AMCOR LITERAL1 -ARDB1 LITERAL1 -ARGO LITERAL1 -ARGO_COMMAND_LENGTH LITERAL1 -ARGO_COOL_AUTO LITERAL1 -ARGO_COOL_HUM LITERAL1 -ARGO_COOL_OFF LITERAL1 -ARGO_COOL_ON LITERAL1 -ARGO_FAN_1 LITERAL1 -ARGO_FAN_2 LITERAL1 -ARGO_FAN_3 LITERAL1 -ARGO_FAN_AUTO LITERAL1 -ARGO_FLAP_1 LITERAL1 -ARGO_FLAP_2 LITERAL1 -ARGO_FLAP_3 LITERAL1 -ARGO_FLAP_4 LITERAL1 -ARGO_FLAP_5 LITERAL1 -ARGO_FLAP_6 LITERAL1 -ARGO_FLAP_AUTO LITERAL1 -ARGO_FLAP_FULL LITERAL1 -ARGO_HEAT_AUTO LITERAL1 -ARGO_HEAT_BLINK LITERAL1 -ARGO_HEAT_ON LITERAL1 -ARGO_MAX_TEMP LITERAL1 -ARGO_MIN_TEMP LITERAL1 -ARJW2 LITERAL1 -ARRAH2E LITERAL1 -ARREB1E LITERAL1 -ARRY4 LITERAL1 -CARRIER_AC LITERAL1 -CARRIER_AC40 LITERAL1 -CARRIER_AC64 LITERAL1 -CARRIER_AC_BITS LITERAL1 -COOLIX LITERAL1 -COOLIX_BITS LITERAL1 -CORONA_AC LITERAL1 -DAIKIN LITERAL1 -DAIKIN128 LITERAL1 -DAIKIN152 LITERAL1 -DAIKIN160 LITERAL1 -DAIKIN176 LITERAL1 -DAIKIN2 LITERAL1 -DAIKIN216 LITERAL1 -DAIKIN64 LITERAL1 -DAIKIN_AUTO LITERAL1 -DAIKIN_COMMAND_LENGTH LITERAL1 -DAIKIN_COOL LITERAL1 -DAIKIN_DRY LITERAL1 -DAIKIN_FAN LITERAL1 -DAIKIN_FAN_AUTO LITERAL1 -DAIKIN_FAN_MAX LITERAL1 -DAIKIN_FAN_MIN LITERAL1 -DAIKIN_FAN_QUIET LITERAL1 -DAIKIN_HEAT LITERAL1 -DAIKIN_MAX_TEMP LITERAL1 -DAIKIN_MIN_TEMP LITERAL1 -DECODE_AC LITERAL1 -DECODE_AIRWELL LITERAL1 -DECODE_AIWA_RC_T501 LITERAL1 -DECODE_AMCOR LITERAL1 -DECODE_ARGO LITERAL1 -DECODE_CARRIER_AC LITERAL1 -DECODE_CARRIER_AC40 LITERAL1 -DECODE_CARRIER_AC64 LITERAL1 -DECODE_COOLIX LITERAL1 -DECODE_CORONA_AC LITERAL1 -DECODE_DAIKIN LITERAL1 -DECODE_DAIKIN128 LITERAL1 -DECODE_DAIKIN152 LITERAL1 -DECODE_DAIKIN160 LITERAL1 -DECODE_DAIKIN176 LITERAL1 -DECODE_DAIKIN2 LITERAL1 -DECODE_DAIKIN216 LITERAL1 -DECODE_DAIKIN64 LITERAL1 -DECODE_DELONGHI_AC LITERAL1 -DECODE_DENON LITERAL1 -DECODE_DISH LITERAL1 -DECODE_DOSHISHA LITERAL1 -DECODE_ELECTRA_AC LITERAL1 -DECODE_EPSON LITERAL1 -DECODE_FUJITSU_AC LITERAL1 -DECODE_GICABLE LITERAL1 -DECODE_GLOBALCACHE LITERAL1 -DECODE_GOODWEATHER LITERAL1 -DECODE_GREE LITERAL1 -DECODE_HAIER_AC LITERAL1 -DECODE_HAIER_AC_YRW02 LITERAL1 -DECODE_HASH LITERAL1 -DECODE_HITACHI_AC LITERAL1 -DECODE_HITACHI_AC1 LITERAL1 -DECODE_HITACHI_AC2 LITERAL1 -DECODE_HITACHI_AC3 LITERAL1 -DECODE_HITACHI_AC344 LITERAL1 -DECODE_HITACHI_AC424 LITERAL1 -DECODE_INAX LITERAL1 -DECODE_JVC LITERAL1 -DECODE_KELVINATOR LITERAL1 -DECODE_LASERTAG LITERAL1 -DECODE_LEGOPF LITERAL1 -DECODE_LG LITERAL1 -DECODE_LUTRON LITERAL1 -DECODE_MAGIQUEST LITERAL1 -DECODE_METZ LITERAL1 -DECODE_MIDEA LITERAL1 -DECODE_MIDEA24 LITERAL1 -DECODE_MITSUBISHI LITERAL1 -DECODE_MITSUBISHI112 LITERAL1 -DECODE_MITSUBISHI136 LITERAL1 -DECODE_MITSUBISHI2 LITERAL1 -DECODE_MITSUBISHIHEAVY LITERAL1 -DECODE_MITSUBISHI_AC LITERAL1 -DECODE_MULTIBRACKETS LITERAL1 -DECODE_MWM LITERAL1 -DECODE_NEC LITERAL1 -DECODE_NEOCLIMA LITERAL1 -DECODE_NIKAI LITERAL1 -DECODE_PANASONIC LITERAL1 -DECODE_PANASONIC_AC LITERAL1 -DECODE_PIONEER LITERAL1 -DECODE_PRONTO LITERAL1 -DECODE_RC5 LITERAL1 -DECODE_RC6 LITERAL1 -DECODE_RCMM LITERAL1 -DECODE_SAMSUNG LITERAL1 -DECODE_SAMSUNG36 LITERAL1 -DECODE_SAMSUNG_AC LITERAL1 -DECODE_SANYO LITERAL1 -DECODE_SANYO_AC LITERAL1 -DECODE_SHARP LITERAL1 -DECODE_SHARP_AC LITERAL1 -DECODE_SHERWOOD LITERAL1 -DECODE_SONY LITERAL1 -DECODE_SYMPHONY LITERAL1 -DECODE_TCL112AC LITERAL1 -DECODE_TECO LITERAL1 -DECODE_TOSHIBA_AC LITERAL1 -DECODE_TROTEC LITERAL1 -DECODE_VESTEL_AC LITERAL1 -DECODE_VOLTAS LITERAL1 -DECODE_WHIRLPOOL_AC LITERAL1 -DECODE_WHYNTER LITERAL1 -DECODE_ZEPEAL LITERAL1 -DELONGHI_AC LITERAL1 -DENON LITERAL1 -DENON_48_BITS LITERAL1 -DENON_BITS LITERAL1 -DENON_LEGACY_BITS LITERAL1 -DG11J13A LITERAL1 -DG11J191 LITERAL1 -DISH LITERAL1 -DISH_BITS LITERAL1 -DOSHISHA LITERAL1 -ELECTRA_AC LITERAL1 -ENABLE_NOISE_FILTER_OPTION LITERAL1 -EPSON LITERAL1 -FUJITSU_AC LITERAL1 -FUJITSU_AC_BITS LITERAL1 -FUJITSU_AC_CMD_STAY_ON LITERAL1 -FUJITSU_AC_CMD_STEP_HORIZ LITERAL1 -FUJITSU_AC_CMD_STEP_VERT LITERAL1 -FUJITSU_AC_CMD_TURN_OFF LITERAL1 -FUJITSU_AC_CMD_TURN_ON LITERAL1 -FUJITSU_AC_FAN_AUTO LITERAL1 -FUJITSU_AC_FAN_HIGH LITERAL1 -FUJITSU_AC_FAN_LOW LITERAL1 -FUJITSU_AC_FAN_MED LITERAL1 -FUJITSU_AC_FAN_QUIET LITERAL1 -FUJITSU_AC_MAX_TEMP LITERAL1 -FUJITSU_AC_MIN_BITS LITERAL1 -FUJITSU_AC_MIN_REPEAT LITERAL1 -FUJITSU_AC_MIN_TEMP LITERAL1 -FUJITSU_AC_MODE_AUTO LITERAL1 -FUJITSU_AC_MODE_COOL LITERAL1 -FUJITSU_AC_MODE_DRY LITERAL1 -FUJITSU_AC_MODE_FAN LITERAL1 -FUJITSU_AC_MODE_HEAT LITERAL1 -FUJITSU_AC_STATE_LENGTH LITERAL1 -FUJITSU_AC_STATE_LENGTH_SHORT LITERAL1 -FUJITSU_AC_SWING_BOTH LITERAL1 -FUJITSU_AC_SWING_HORIZ LITERAL1 -FUJITSU_AC_SWING_OFF LITERAL1 -FUJITSU_AC_SWING_VERT LITERAL1 -GE6711AR2853M LITERAL1 -GICABLE LITERAL1 -GICABLE_BITS LITERAL1 -GLOBALCACHE LITERAL1 -GOODWEATHER LITERAL1 -GREE LITERAL1 -GREE_AUTO LITERAL1 -GREE_COOL LITERAL1 -GREE_DRY LITERAL1 -GREE_FAN LITERAL1 -GREE_FAN_MAX LITERAL1 -GREE_HEAT LITERAL1 -GREE_MAX_TEMP LITERAL1 -GREE_MIN_TEMP LITERAL1 -GREE_STATE_LENGTH LITERAL1 -GREE_SWING_AUTO LITERAL1 -GREE_SWING_DOWN LITERAL1 -GREE_SWING_DOWN_AUTO LITERAL1 -GREE_SWING_LAST_POS LITERAL1 -GREE_SWING_MIDDLE LITERAL1 -GREE_SWING_MIDDLE_AUTO LITERAL1 -GREE_SWING_MIDDLE_DOWN LITERAL1 -GREE_SWING_MIDDLE_UP LITERAL1 -GREE_SWING_UP LITERAL1 -GREE_SWING_UP_AUTO LITERAL1 -HAIER_AC LITERAL1 -HAIER_AC_AUTO LITERAL1 -HAIER_AC_CMD_FAN LITERAL1 -HAIER_AC_CMD_HEALTH LITERAL1 -HAIER_AC_CMD_MODE LITERAL1 -HAIER_AC_CMD_OFF LITERAL1 -HAIER_AC_CMD_ON LITERAL1 -HAIER_AC_CMD_SLEEP LITERAL1 -HAIER_AC_CMD_SWING LITERAL1 -HAIER_AC_CMD_TEMP_DOWN LITERAL1 -HAIER_AC_CMD_TEMP_UP LITERAL1 -HAIER_AC_CMD_TIMER_CANCEL LITERAL1 -HAIER_AC_CMD_TIMER_SET LITERAL1 -HAIER_AC_COOL LITERAL1 -HAIER_AC_DEF_TEMP LITERAL1 -HAIER_AC_DRY LITERAL1 -HAIER_AC_FAN LITERAL1 -HAIER_AC_FAN_AUTO LITERAL1 -HAIER_AC_FAN_HIGH LITERAL1 -HAIER_AC_FAN_LOW LITERAL1 -HAIER_AC_FAN_MED LITERAL1 -HAIER_AC_HEAT LITERAL1 -HAIER_AC_MAX_TEMP LITERAL1 -HAIER_AC_MIN_TEMP LITERAL1 -HAIER_AC_STATE_LENGTH LITERAL1 -HAIER_AC_SWING_CHG LITERAL1 -HAIER_AC_SWING_DOWN LITERAL1 -HAIER_AC_SWING_OFF LITERAL1 -HAIER_AC_SWING_UP LITERAL1 -HAIER_AC_YRW02 LITERAL1 -HAIER_AC_YRW02_AUTO LITERAL1 -HAIER_AC_YRW02_BUTTON_FAN LITERAL1 -HAIER_AC_YRW02_BUTTON_HEALTH LITERAL1 -HAIER_AC_YRW02_BUTTON_MODE LITERAL1 -HAIER_AC_YRW02_BUTTON_POWER LITERAL1 -HAIER_AC_YRW02_BUTTON_SLEEP LITERAL1 -HAIER_AC_YRW02_BUTTON_SWING LITERAL1 -HAIER_AC_YRW02_BUTTON_TEMP_DOWN LITERAL1 -HAIER_AC_YRW02_BUTTON_TEMP_UP LITERAL1 -HAIER_AC_YRW02_BUTTON_TURBO LITERAL1 -HAIER_AC_YRW02_COOL LITERAL1 -HAIER_AC_YRW02_DRY LITERAL1 -HAIER_AC_YRW02_FAN LITERAL1 -HAIER_AC_YRW02_FAN_AUTO LITERAL1 -HAIER_AC_YRW02_FAN_HIGH LITERAL1 -HAIER_AC_YRW02_FAN_LOW LITERAL1 -HAIER_AC_YRW02_FAN_MED LITERAL1 -HAIER_AC_YRW02_HEAT LITERAL1 -HAIER_AC_YRW02_STATE_LENGTH LITERAL1 -HAIER_AC_YRW02_SWING_AUTO LITERAL1 -HAIER_AC_YRW02_SWING_BOTTOM LITERAL1 -HAIER_AC_YRW02_SWING_DOWN LITERAL1 -HAIER_AC_YRW02_SWING_MIDDLE LITERAL1 -HAIER_AC_YRW02_SWING_OFF LITERAL1 -HAIER_AC_YRW02_SWING_TOP LITERAL1 -HAIER_AC_YRW02_TURBO_HIGH LITERAL1 -HAIER_AC_YRW02_TURBO_LOW LITERAL1 -HAIER_AC_YRW02_TURBO_OFF LITERAL1 -HIGH LITERAL1 -HITACHI_AC LITERAL1 -HITACHI_AC1 LITERAL1 -HITACHI_AC1_BITS LITERAL1 -HITACHI_AC1_STATE_LENGTH LITERAL1 -HITACHI_AC2 LITERAL1 -HITACHI_AC2_BITS LITERAL1 -HITACHI_AC2_STATE_LENGTH LITERAL1 -HITACHI_AC3 LITERAL1 -HITACHI_AC344 LITERAL1 -HITACHI_AC424 LITERAL1 -HITACHI_AC_BITS LITERAL1 -HITACHI_AC_STATE_LENGTH LITERAL1 -ICACHE_RAM_ATTR LITERAL1 -INAX LITERAL1 -JVC LITERAL1 -JVC_BITS LITERAL1 -KELVINATOR LITERAL1 -KELVINATOR_AUTO LITERAL1 -KELVINATOR_AUTO_TEMP LITERAL1 -KELVINATOR_BASIC_FAN_MAX LITERAL1 -KELVINATOR_COOL LITERAL1 -KELVINATOR_DRY LITERAL1 -KELVINATOR_FAN LITERAL1 -KELVINATOR_FAN_AUTO LITERAL1 -KELVINATOR_FAN_MAX LITERAL1 -KELVINATOR_HEAT LITERAL1 -KELVINATOR_MAX_TEMP LITERAL1 -KELVINATOR_MIN_TEMP LITERAL1 -KELVINATOR_STATE_LENGTH LITERAL1 -LASERTAG LITERAL1 -LASERTAG_BITS LITERAL1 -LEGOPF LITERAL1 -LG LITERAL1 -LG2 LITERAL1 -LG32_BITS LITERAL1 -LG_BITS LITERAL1 -LOW LITERAL1 -LUTRON LITERAL1 -MAGIQUEST LITERAL1 -MAGIQUEST_BITS LITERAL1 -METZ LITERAL1 -MIDEA LITERAL1 -MIDEA24 LITERAL1 -MIDEA_AC_AUTO LITERAL1 -MIDEA_AC_COOL LITERAL1 -MIDEA_AC_DRY LITERAL1 -MIDEA_AC_FAN LITERAL1 -MIDEA_AC_FAN_AUTO LITERAL1 -MIDEA_AC_FAN_HI LITERAL1 -MIDEA_AC_FAN_LOW LITERAL1 -MIDEA_AC_FAN_MED LITERAL1 -MIDEA_AC_HEAT LITERAL1 -MIDEA_AC_MAX_TEMP_C LITERAL1 -MIDEA_AC_MAX_TEMP_F LITERAL1 -MIDEA_AC_MIN_TEMP_C LITERAL1 -MIDEA_AC_MIN_TEMP_F LITERAL1 -MIDEA_AC_POWER LITERAL1 -MIDEA_AC_SLEEP LITERAL1 -MIDEA_BITS LITERAL1 -MITSUBISHI LITERAL1 -MITSUBISHI112 LITERAL1 -MITSUBISHI136 LITERAL1 -MITSUBISHI2 LITERAL1 -MITSUBISHI_AC LITERAL1 -MITSUBISHI_AC_AUTO LITERAL1 -MITSUBISHI_AC_COOL LITERAL1 -MITSUBISHI_AC_DRY LITERAL1 -MITSUBISHI_AC_FAN_AUTO LITERAL1 -MITSUBISHI_AC_FAN_MAX LITERAL1 -MITSUBISHI_AC_FAN_REAL_MAX LITERAL1 -MITSUBISHI_AC_FAN_SILENT LITERAL1 -MITSUBISHI_AC_HEAT LITERAL1 -MITSUBISHI_AC_MAX_TEMP LITERAL1 -MITSUBISHI_AC_MIN_TEMP LITERAL1 -MITSUBISHI_AC_POWER LITERAL1 -MITSUBISHI_AC_STATE_LENGTH LITERAL1 -MITSUBISHI_AC_VANE_AUTO LITERAL1 -MITSUBISHI_AC_VANE_AUTO_MOVE LITERAL1 -MITSUBISHI_BITS LITERAL1 -MITSUBISHI_HEAVY_152 LITERAL1 -MITSUBISHI_HEAVY_88 LITERAL1 -MULTIBRACKETS LITERAL1 -MWM LITERAL1 -NEC LITERAL1 -NEC_BITS LITERAL1 -NEC_LIKE LITERAL1 -NEOCLIMA LITERAL1 -NIKAI LITERAL1 -NIKAI_BITS LITERAL1 -ONCE LITERAL1 -PANASONIC LITERAL1 -PANASONIC_AC LITERAL1 -PANASONIC_BITS LITERAL1 -PIONEER LITERAL1 -PROGMEM LITERAL1 -PRONTO LITERAL1 -RAW LITERAL1 -RAWTICK LITERAL1 -RC5 LITERAL1 -RC5X LITERAL1 -RC5X_BITS LITERAL1 -RC5_BITS LITERAL1 -RC6 LITERAL1 -RC6_36_BITS LITERAL1 -RC6_MODE0_BITS LITERAL1 -RCMM LITERAL1 -RCMM_BITS LITERAL1 -R_LT0541_HTA_A LITERAL1 -R_LT0541_HTA_B LITERAL1 -SAMSUNG LITERAL1 -SAMSUNG36 LITERAL1 -SAMSUNG_AC LITERAL1 -SAMSUNG_BITS LITERAL1 -SANYO LITERAL1 -SANYO_AC LITERAL1 -SANYO_LC7461 LITERAL1 -SANYO_LC7461_BITS LITERAL1 -SANYO_SA8650B_BITS LITERAL1 -SEND_AIRWELL LITERAL1 -SEND_AIWA_RC_T501 LITERAL1 -SEND_AMCOR LITERAL1 -SEND_ARGO LITERAL1 -SEND_CARRIER_AC LITERAL1 -SEND_CARRIER_AC40 LITERAL1 -SEND_CARRIER_AC64 LITERAL1 -SEND_COOLIX LITERAL1 -SEND_CORONA_AC LITERAL1 -SEND_DAIKIN LITERAL1 -SEND_DAIKIN128 LITERAL1 -SEND_DAIKIN152 LITERAL1 -SEND_DAIKIN160 LITERAL1 -SEND_DAIKIN176 LITERAL1 -SEND_DAIKIN2 LITERAL1 -SEND_DAIKIN216 LITERAL1 -SEND_DAIKIN64 LITERAL1 -SEND_DELONGHI_AC LITERAL1 -SEND_DENON LITERAL1 -SEND_DISH LITERAL1 -SEND_DOSHISHA LITERAL1 -SEND_ELECTRA_AC LITERAL1 -SEND_EPSON LITERAL1 -SEND_FUJITSU_AC LITERAL1 -SEND_GICABLE LITERAL1 -SEND_GLOBALCACHE LITERAL1 -SEND_GOODWEATHER LITERAL1 -SEND_GREE LITERAL1 -SEND_HAIER_AC LITERAL1 -SEND_HAIER_AC_YRW02 LITERAL1 -SEND_HITACHI_AC LITERAL1 -SEND_HITACHI_AC1 LITERAL1 -SEND_HITACHI_AC2 LITERAL1 -SEND_HITACHI_AC3 LITERAL1 -SEND_HITACHI_AC344 LITERAL1 -SEND_HITACHI_AC424 LITERAL1 -SEND_INAX LITERAL1 -SEND_JVC LITERAL1 -SEND_KELVINATOR LITERAL1 -SEND_LASERTAG LITERAL1 -SEND_LEGOPF LITERAL1 -SEND_LG LITERAL1 -SEND_LUTRON LITERAL1 -SEND_MAGIQUEST LITERAL1 -SEND_METZ LITERAL1 -SEND_MIDEA LITERAL1 -SEND_MIDEA24 LITERAL1 -SEND_MITSUBISHI LITERAL1 -SEND_MITSUBISHI112 LITERAL1 -SEND_MITSUBISHI136 LITERAL1 -SEND_MITSUBISHI2 LITERAL1 -SEND_MITSUBISHIHEAVY LITERAL1 -SEND_MITSUBISHI_AC LITERAL1 -SEND_MULTIBRACKETS LITERAL1 -SEND_MWM LITERAL1 -SEND_NEC LITERAL1 -SEND_NEOCLIMA LITERAL1 -SEND_NIKAI LITERAL1 -SEND_PANASONIC LITERAL1 -SEND_PANASONIC_AC LITERAL1 -SEND_PIONEER LITERAL1 -SEND_PRONTO LITERAL1 -SEND_RAW LITERAL1 -SEND_RC5 LITERAL1 -SEND_RC6 LITERAL1 -SEND_RCMM LITERAL1 -SEND_SAMSUNG LITERAL1 -SEND_SAMSUNG36 LITERAL1 -SEND_SAMSUNG_AC LITERAL1 -SEND_SANYO LITERAL1 -SEND_SANYO_AC LITERAL1 -SEND_SHARP LITERAL1 -SEND_SHARP_AC LITERAL1 -SEND_SHERWOOD LITERAL1 -SEND_SONY LITERAL1 -SEND_SYMPHONY LITERAL1 -SEND_TCL112AC LITERAL1 -SEND_TECO LITERAL1 -SEND_TOSHIBA_AC LITERAL1 -SEND_TROTEC LITERAL1 -SEND_VESTEL_AC LITERAL1 -SEND_VOLTAS LITERAL1 -SEND_WHIRLPOOL_AC LITERAL1 -SEND_WHYNTER LITERAL1 -SEND_ZEPEAL LITERAL1 -SHARP LITERAL1 -SHARP_AC LITERAL1 -SHARP_BITS LITERAL1 -SHERWOOD LITERAL1 -SHERWOOD_BITS LITERAL1 -SONY LITERAL1 -SONY_12_BITS LITERAL1 -SONY_15_BITS LITERAL1 -SONY_20_BITS LITERAL1 -SONY_38K LITERAL1 -SYMPHONY LITERAL1 -TCL112AC LITERAL1 -TECO LITERAL1 -TIMEOUT_MS LITERAL1 -TOSHIBA_AC LITERAL1 -TOSHIBA_AC_AUTO LITERAL1 -TOSHIBA_AC_COOL LITERAL1 -TOSHIBA_AC_DRY LITERAL1 -TOSHIBA_AC_FAN_AUTO LITERAL1 -TOSHIBA_AC_FAN_MAX LITERAL1 -TOSHIBA_AC_HEAT LITERAL1 -TOSHIBA_AC_MAX_TEMP LITERAL1 -TOSHIBA_AC_MIN_TEMP LITERAL1 -TOSHIBA_AC_POWER LITERAL1 -TOSHIBA_AC_STATE_LENGTH LITERAL1 -TROTEC LITERAL1 -TROTEC_AUTO LITERAL1 -TROTEC_COMMAND_LENGTH LITERAL1 -TROTEC_COOL LITERAL1 -TROTEC_DRY LITERAL1 -TROTEC_FAN LITERAL1 -TROTEC_FAN_HIGH LITERAL1 -TROTEC_FAN_LOW LITERAL1 -TROTEC_FAN_MED LITERAL1 -TROTEC_MAX_TEMP LITERAL1 -TROTEC_MAX_TIMER LITERAL1 -TROTEC_MIN_TEMP LITERAL1 -UNKNOWN LITERAL1 -UNUSED LITERAL1 -USE_IRAM_ATTR LITERAL1 -VESTEL_AC LITERAL1 -VOLTAS LITERAL1 -WHIRLPOOL_AC LITERAL1 -WHYNTER LITERAL1 -WHYNTER_BITS LITERAL1 -YAW1F LITERAL1 -YBOFB LITERAL1 -ZEPEAL LITERAL1 -k3DStr LITERAL1 -k6thSenseStr LITERAL1 -k8CHeatStr LITERAL1 -kAirFlowStr LITERAL1 -kAirwellAuto LITERAL1 -kAirwellBits LITERAL1 -kAirwellCool LITERAL1 -kAirwellDry LITERAL1 -kAirwellFan LITERAL1 -kAirwellFanAuto LITERAL1 -kAirwellFanHigh LITERAL1 -kAirwellFanLow LITERAL1 -kAirwellFanMedium LITERAL1 -kAirwellFooterMark LITERAL1 -kAirwellHalfClockPeriod LITERAL1 -kAirwellHdrMark LITERAL1 -kAirwellHdrSpace LITERAL1 -kAirwellHeat LITERAL1 -kAirwellKnownGoodState LITERAL1 -kAirwellMaxTemp LITERAL1 -kAirwellMinRepeats LITERAL1 -kAirwellMinTemp LITERAL1 -kAirwellOverhead LITERAL1 -kAiwaRcT501Bits LITERAL1 -kAiwaRcT501MinRepeats LITERAL1 -kAiwaRcT501PostBits LITERAL1 -kAiwaRcT501PostData LITERAL1 -kAiwaRcT501PreBits LITERAL1 -kAiwaRcT501PreData LITERAL1 -kAlokaBits LITERAL1 -kAlokaLedBlue LITERAL1 -kAlokaLedGreen LITERAL1 -kAlokaLedLightGreen LITERAL1 -kAlokaLedMidBlue LITERAL1 -kAlokaLedOrange LITERAL1 -kAlokaLedPink LITERAL1 -kAlokaLedPinkRed LITERAL1 -kAlokaLedRainbow LITERAL1 -kAlokaLedRed LITERAL1 -kAlokaLedTreeGrow LITERAL1 -kAlokaLedWhite LITERAL1 -kAlokaLedYellow LITERAL1 -kAlokaNightFade LITERAL1 -kAlokaNightTimer LITERAL1 -kAlokaPower LITERAL1 -kAmcorAuto LITERAL1 -kAmcorBits LITERAL1 -kAmcorChecksumByte LITERAL1 -kAmcorCool LITERAL1 -kAmcorDefaultRepeat LITERAL1 -kAmcorDry LITERAL1 -kAmcorFan LITERAL1 -kAmcorFanAuto LITERAL1 -kAmcorFanMax LITERAL1 -kAmcorFanMed LITERAL1 -kAmcorFanMin LITERAL1 -kAmcorFanOffset LITERAL1 -kAmcorFanSize LITERAL1 -kAmcorFooterMark LITERAL1 -kAmcorGap LITERAL1 -kAmcorHdrMark LITERAL1 -kAmcorHdrSpace LITERAL1 -kAmcorHeat LITERAL1 -kAmcorMax LITERAL1 -kAmcorMaxOffset LITERAL1 -kAmcorMaxSize LITERAL1 -kAmcorMaxTemp LITERAL1 -kAmcorMinTemp LITERAL1 -kAmcorModeFanByte LITERAL1 -kAmcorModeOffset LITERAL1 -kAmcorModeSize LITERAL1 -kAmcorOneMark LITERAL1 -kAmcorOneSpace LITERAL1 -kAmcorPowerByte LITERAL1 -kAmcorPowerOff LITERAL1 -kAmcorPowerOffset LITERAL1 -kAmcorPowerOn LITERAL1 -kAmcorPowerSize LITERAL1 -kAmcorSpecialByte LITERAL1 -kAmcorStateLength LITERAL1 -kAmcorTempByte LITERAL1 -kAmcorTempOffset LITERAL1 -kAmcorTempSize LITERAL1 -kAmcorTolerance LITERAL1 -kAmcorVentOffset LITERAL1 -kAmcorVentOn LITERAL1 -kAmcorVentSize LITERAL1 -kAmcorZeroMark LITERAL1 -kAmcorZeroSpace LITERAL1 -kArgoAuto LITERAL1 -kArgoBitMark LITERAL1 -kArgoBits LITERAL1 -kArgoCool LITERAL1 -kArgoDefaultRepeat LITERAL1 -kArgoDry LITERAL1 -kArgoFan1 LITERAL1 -kArgoFan2 LITERAL1 -kArgoFan3 LITERAL1 -kArgoFanAuto LITERAL1 -kArgoFanOffset LITERAL1 -kArgoFanSize LITERAL1 -kArgoFlap1 LITERAL1 -kArgoFlap2 LITERAL1 -kArgoFlap3 LITERAL1 -kArgoFlap4 LITERAL1 -kArgoFlap5 LITERAL1 -kArgoFlap6 LITERAL1 -kArgoFlapAuto LITERAL1 -kArgoFlapFull LITERAL1 -kArgoGap LITERAL1 -kArgoHdrMark LITERAL1 -kArgoHdrSpace LITERAL1 -kArgoHeat LITERAL1 -kArgoHeatAuto LITERAL1 -kArgoHeatBit LITERAL1 -kArgoHeatBlink LITERAL1 -kArgoIFeelBitOffset LITERAL1 -kArgoMaxBitOffset LITERAL1 -kArgoMaxRoomTemp LITERAL1 -kArgoMaxTemp LITERAL1 -kArgoMinTemp LITERAL1 -kArgoModeOffset LITERAL1 -kArgoModeSize LITERAL1 -kArgoNightBitOffset LITERAL1 -kArgoOff LITERAL1 -kArgoOneSpace LITERAL1 -kArgoPowerBitOffset LITERAL1 -kArgoRoomTempHighOffset LITERAL1 -kArgoRoomTempHighSize LITERAL1 -kArgoRoomTempLowOffset LITERAL1 -kArgoRoomTempLowSize LITERAL1 -kArgoStateLength LITERAL1 -kArgoTempDelta LITERAL1 -kArgoTempHighOffset LITERAL1 -kArgoTempHighSize LITERAL1 -kArgoTempLowOffset LITERAL1 -kArgoTempLowSize LITERAL1 -kArgoZeroSpace LITERAL1 -kAuto LITERAL1 -kAutoStr LITERAL1 -kAutomaticStr LITERAL1 -kBeepStr LITERAL1 -kBitsStr LITERAL1 -kBottomStr LITERAL1 -kBreezeStr LITERAL1 -kButtonStr LITERAL1 -kCancelStr LITERAL1 -kCarrierAc40BitMark LITERAL1 -kCarrierAc40Bits LITERAL1 -kCarrierAc40Gap LITERAL1 -kCarrierAc40HdrMark LITERAL1 -kCarrierAc40HdrSpace LITERAL1 -kCarrierAc40MinRepeat LITERAL1 -kCarrierAc40OneSpace LITERAL1 -kCarrierAc40ZeroSpace LITERAL1 -kCarrierAc64BitMark LITERAL1 -kCarrierAc64Bits LITERAL1 -kCarrierAc64ChecksumOffset LITERAL1 -kCarrierAc64ChecksumSize LITERAL1 -kCarrierAc64Cool LITERAL1 -kCarrierAc64Fan LITERAL1 -kCarrierAc64FanAuto LITERAL1 -kCarrierAc64FanHigh LITERAL1 -kCarrierAc64FanLow LITERAL1 -kCarrierAc64FanMedium LITERAL1 -kCarrierAc64FanOffset LITERAL1 -kCarrierAc64FanSize LITERAL1 -kCarrierAc64Gap LITERAL1 -kCarrierAc64HdrMark LITERAL1 -kCarrierAc64HdrSpace LITERAL1 -kCarrierAc64Heat LITERAL1 -kCarrierAc64MaxTemp LITERAL1 -kCarrierAc64MinRepeat LITERAL1 -kCarrierAc64MinTemp LITERAL1 -kCarrierAc64ModeOffset LITERAL1 -kCarrierAc64ModeSize LITERAL1 -kCarrierAc64OffTimerEnableOffset LITERAL1 -kCarrierAc64OffTimerOffset LITERAL1 -kCarrierAc64OnTimerEnableOffset LITERAL1 -kCarrierAc64OnTimerOffset LITERAL1 -kCarrierAc64OneSpace LITERAL1 -kCarrierAc64PowerOffset LITERAL1 -kCarrierAc64SleepOffset LITERAL1 -kCarrierAc64SwingVOffset LITERAL1 -kCarrierAc64TempOffset LITERAL1 -kCarrierAc64TempSize LITERAL1 -kCarrierAc64TimerMax LITERAL1 -kCarrierAc64TimerMin LITERAL1 -kCarrierAc64TimerSize LITERAL1 -kCarrierAc64ZeroSpace LITERAL1 -kCarrierAcBitMark LITERAL1 -kCarrierAcBits LITERAL1 -kCarrierAcFreq LITERAL1 -kCarrierAcGap LITERAL1 -kCarrierAcHdrMark LITERAL1 -kCarrierAcHdrSpace LITERAL1 -kCarrierAcMinRepeat LITERAL1 -kCarrierAcOneSpace LITERAL1 -kCarrierAcZeroSpace LITERAL1 -kCeilingStr LITERAL1 -kCelsiusStr LITERAL1 -kCentreStr LITERAL1 -kChangeStr LITERAL1 -kCirculateStr LITERAL1 -kCleanStr LITERAL1 -kClockStr LITERAL1 -kCodeStr LITERAL1 -kColonSpaceStr LITERAL1 -kComfortStr LITERAL1 -kCommaSpaceStr LITERAL1 -kCommandStr LITERAL1 -kCool LITERAL1 -kCoolStr LITERAL1 -kCoolixAuto LITERAL1 -kCoolixBitMark LITERAL1 -kCoolixBitMarkTicks LITERAL1 -kCoolixBits LITERAL1 -kCoolixClean LITERAL1 -kCoolixCmdFan LITERAL1 -kCoolixCool LITERAL1 -kCoolixDefaultRepeat LITERAL1 -kCoolixDefaultState LITERAL1 -kCoolixDry LITERAL1 -kCoolixFan LITERAL1 -kCoolixFanAuto LITERAL1 -kCoolixFanAuto0 LITERAL1 -kCoolixFanFixed LITERAL1 -kCoolixFanMax LITERAL1 -kCoolixFanMed LITERAL1 -kCoolixFanMin LITERAL1 -kCoolixFanOffset LITERAL1 -kCoolixFanSize LITERAL1 -kCoolixFanTempCode LITERAL1 -kCoolixFanZoneFollow LITERAL1 -kCoolixHdrMark LITERAL1 -kCoolixHdrMarkTicks LITERAL1 -kCoolixHdrSpace LITERAL1 -kCoolixHdrSpaceTicks LITERAL1 -kCoolixHeat LITERAL1 -kCoolixLed LITERAL1 -kCoolixMinGap LITERAL1 -kCoolixMinGapTicks LITERAL1 -kCoolixModeOffset LITERAL1 -kCoolixModeSize LITERAL1 -kCoolixOff LITERAL1 -kCoolixOneSpace LITERAL1 -kCoolixOneSpaceTicks LITERAL1 -kCoolixPrefix LITERAL1 -kCoolixSensorTempIgnoreCode LITERAL1 -kCoolixSensorTempMax LITERAL1 -kCoolixSensorTempMin LITERAL1 -kCoolixSensorTempOffset LITERAL1 -kCoolixSensorTempSize LITERAL1 -kCoolixSleep LITERAL1 -kCoolixSwing LITERAL1 -kCoolixSwingH LITERAL1 -kCoolixSwingV LITERAL1 -kCoolixTempMap LITERAL1 -kCoolixTempMax LITERAL1 -kCoolixTempMin LITERAL1 -kCoolixTempOffset LITERAL1 -kCoolixTempRange LITERAL1 -kCoolixTempSize LITERAL1 -kCoolixTick LITERAL1 -kCoolixTurbo LITERAL1 -kCoolixUnknown LITERAL1 -kCoolixZeroSpace LITERAL1 -kCoolixZeroSpaceTicks LITERAL1 -kCoolixZoneFollowMaskOffset LITERAL1 -kCoronaAcAutoD0 LITERAL1 -kCoronaAcAutoD1 LITERAL1 -kCoronaAcBitMark LITERAL1 -kCoronaAcBits LITERAL1 -kCoronaAcBitsShort LITERAL1 -kCoronaAcFanAuto LITERAL1 -kCoronaAcFanHigh LITERAL1 -kCoronaAcFanLow LITERAL1 -kCoronaAcFanMedium LITERAL1 -kCoronaAcFanOffset LITERAL1 -kCoronaAcFanSize LITERAL1 -kCoronaAcFreq LITERAL1 -kCoronaAcHdrMark LITERAL1 -kCoronaAcHdrSpace LITERAL1 -kCoronaAcMaxTemp LITERAL1 -kCoronaAcMinTemp LITERAL1 -kCoronaAcModeCool LITERAL1 -kCoronaAcModeDry LITERAL1 -kCoronaAcModeFan LITERAL1 -kCoronaAcModeHeat LITERAL1 -kCoronaAcModeOffset LITERAL1 -kCoronaAcModeSize LITERAL1 -kCoronaAcOffTimerSection LITERAL1 -kCoronaAcOnTimerSection LITERAL1 -kCoronaAcOneSpace LITERAL1 -kCoronaAcOverhead LITERAL1 -kCoronaAcOverheadShort LITERAL1 -kCoronaAcPowerButtonOffset LITERAL1 -kCoronaAcPowerOffset LITERAL1 -kCoronaAcPowerSaveOffset LITERAL1 -kCoronaAcSectionBytes LITERAL1 -kCoronaAcSectionData0Base LITERAL1 -kCoronaAcSectionData0InvPos LITERAL1 -kCoronaAcSectionData0Pos LITERAL1 -kCoronaAcSectionData1InvPos LITERAL1 -kCoronaAcSectionData1Pos LITERAL1 -kCoronaAcSectionHeader0 LITERAL1 -kCoronaAcSectionHeader0Pos LITERAL1 -kCoronaAcSectionHeader1 LITERAL1 -kCoronaAcSectionHeader1Pos LITERAL1 -kCoronaAcSectionLabelBase LITERAL1 -kCoronaAcSectionLabelPos LITERAL1 -kCoronaAcSections LITERAL1 -kCoronaAcSettingsSection LITERAL1 -kCoronaAcSpaceGap LITERAL1 -kCoronaAcStateLength LITERAL1 -kCoronaAcStateLengthShort LITERAL1 -kCoronaAcSwingVToggleOffset LITERAL1 -kCoronaAcTempOffset LITERAL1 -kCoronaAcTempSize LITERAL1 -kCoronaAcTimerMax LITERAL1 -kCoronaAcTimerOff LITERAL1 -kCoronaAcTimerUnitsPerMin LITERAL1 -kCoronaAcZeroSpace LITERAL1 -kCoronaTolerance LITERAL1 -kDaikin128Auto LITERAL1 -kDaikin128BitCeiling LITERAL1 -kDaikin128BitEcono LITERAL1 -kDaikin128BitEconoOffset LITERAL1 -kDaikin128BitHalfHour LITERAL1 -kDaikin128BitMark LITERAL1 -kDaikin128BitPowerToggle LITERAL1 -kDaikin128BitPowerToggleOffset LITERAL1 -kDaikin128BitSleep LITERAL1 -kDaikin128BitSleepOffset LITERAL1 -kDaikin128BitSwing LITERAL1 -kDaikin128BitSwingOffset LITERAL1 -kDaikin128BitTimerEnabled LITERAL1 -kDaikin128BitTimerEnabledOffset LITERAL1 -kDaikin128BitWall LITERAL1 -kDaikin128Bits LITERAL1 -kDaikin128ByteClockHours LITERAL1 -kDaikin128ByteClockMins LITERAL1 -kDaikin128ByteEconoLight LITERAL1 -kDaikin128ByteModeFan LITERAL1 -kDaikin128ByteOffTimer LITERAL1 -kDaikin128ByteOnTimer LITERAL1 -kDaikin128BytePowerSwingSleep LITERAL1 -kDaikin128ByteTemp LITERAL1 -kDaikin128Cool LITERAL1 -kDaikin128DefaultRepeat LITERAL1 -kDaikin128Dry LITERAL1 -kDaikin128Fan LITERAL1 -kDaikin128FanAuto LITERAL1 -kDaikin128FanHigh LITERAL1 -kDaikin128FanLow LITERAL1 -kDaikin128FanMed LITERAL1 -kDaikin128FanPowerful LITERAL1 -kDaikin128FanQuiet LITERAL1 -kDaikin128FooterMark LITERAL1 -kDaikin128Freq LITERAL1 -kDaikin128Gap LITERAL1 -kDaikin128HalfHourOffset LITERAL1 -kDaikin128HdrMark LITERAL1 -kDaikin128HdrSpace LITERAL1 -kDaikin128Heat LITERAL1 -kDaikin128HoursOffset LITERAL1 -kDaikin128HoursSize LITERAL1 -kDaikin128LeaderMark LITERAL1 -kDaikin128LeaderSpace LITERAL1 -kDaikin128MaskFan LITERAL1 -kDaikin128MaskLight LITERAL1 -kDaikin128MaxTemp LITERAL1 -kDaikin128MinTemp LITERAL1 -kDaikin128ModeSize LITERAL1 -kDaikin128OneSpace LITERAL1 -kDaikin128SectionLength LITERAL1 -kDaikin128Sections LITERAL1 -kDaikin128StateLength LITERAL1 -kDaikin128TimerOffset LITERAL1 -kDaikin128TimerSize LITERAL1 -kDaikin128ZeroSpace LITERAL1 -kDaikin152BitMark LITERAL1 -kDaikin152Bits LITERAL1 -kDaikin152ComfortByte LITERAL1 -kDaikin152ComfortOffset LITERAL1 -kDaikin152DefaultRepeat LITERAL1 -kDaikin152DryTemp LITERAL1 -kDaikin152EconoByte LITERAL1 -kDaikin152FanByte LITERAL1 -kDaikin152FanTemp LITERAL1 -kDaikin152Freq LITERAL1 -kDaikin152Gap LITERAL1 -kDaikin152HdrMark LITERAL1 -kDaikin152HdrSpace LITERAL1 -kDaikin152LeaderBits LITERAL1 -kDaikin152ModeByte LITERAL1 -kDaikin152OneSpace LITERAL1 -kDaikin152PowerByte LITERAL1 -kDaikin152PowerfulByte LITERAL1 -kDaikin152QuietByte LITERAL1 -kDaikin152SensorByte LITERAL1 -kDaikin152SensorOffset LITERAL1 -kDaikin152StateLength LITERAL1 -kDaikin152SwingVByte LITERAL1 -kDaikin152TempByte LITERAL1 -kDaikin152TempSize LITERAL1 -kDaikin152ZeroSpace LITERAL1 -kDaikin160BitMark LITERAL1 -kDaikin160Bits LITERAL1 -kDaikin160ByteFan LITERAL1 -kDaikin160ByteMode LITERAL1 -kDaikin160BytePower LITERAL1 -kDaikin160ByteSwingV LITERAL1 -kDaikin160ByteTemp LITERAL1 -kDaikin160DefaultRepeat LITERAL1 -kDaikin160Freq LITERAL1 -kDaikin160Gap LITERAL1 -kDaikin160HdrMark LITERAL1 -kDaikin160HdrSpace LITERAL1 -kDaikin160MaskFan LITERAL1 -kDaikin160MaskSwingV LITERAL1 -kDaikin160OneSpace LITERAL1 -kDaikin160Section1Length LITERAL1 -kDaikin160Section2Length LITERAL1 -kDaikin160Sections LITERAL1 -kDaikin160StateLength LITERAL1 -kDaikin160SwingVAuto LITERAL1 -kDaikin160SwingVHigh LITERAL1 -kDaikin160SwingVHighest LITERAL1 -kDaikin160SwingVLow LITERAL1 -kDaikin160SwingVLowest LITERAL1 -kDaikin160SwingVMiddle LITERAL1 -kDaikin160TempOffset LITERAL1 -kDaikin160TempSize LITERAL1 -kDaikin160ZeroSpace LITERAL1 -kDaikin176Auto LITERAL1 -kDaikin176BitMark LITERAL1 -kDaikin176Bits LITERAL1 -kDaikin176ByteAltMode LITERAL1 -kDaikin176ByteFan LITERAL1 -kDaikin176ByteModeButton LITERAL1 -kDaikin176ByteModePower LITERAL1 -kDaikin176ByteSwingH LITERAL1 -kDaikin176ByteTemp LITERAL1 -kDaikin176Cool LITERAL1 -kDaikin176DefaultRepeat LITERAL1 -kDaikin176Dry LITERAL1 -kDaikin176DryFanTemp LITERAL1 -kDaikin176Fan LITERAL1 -kDaikin176FanMax LITERAL1 -kDaikin176Freq LITERAL1 -kDaikin176Gap LITERAL1 -kDaikin176HdrMark LITERAL1 -kDaikin176HdrSpace LITERAL1 -kDaikin176Heat LITERAL1 -kDaikin176MaskFan LITERAL1 -kDaikin176MaskMode LITERAL1 -kDaikin176ModeButton LITERAL1 -kDaikin176OneSpace LITERAL1 -kDaikin176Section1Length LITERAL1 -kDaikin176Section2Length LITERAL1 -kDaikin176Sections LITERAL1 -kDaikin176StateLength LITERAL1 -kDaikin176SwingHAuto LITERAL1 -kDaikin176SwingHOff LITERAL1 -kDaikin176TempOffset LITERAL1 -kDaikin176TempSize LITERAL1 -kDaikin176ZeroSpace LITERAL1 -kDaikin216BitMark LITERAL1 -kDaikin216Bits LITERAL1 -kDaikin216ByteFan LITERAL1 -kDaikin216ByteMode LITERAL1 -kDaikin216BytePower LITERAL1 -kDaikin216BytePowerful LITERAL1 -kDaikin216ByteSwingH LITERAL1 -kDaikin216ByteSwingV LITERAL1 -kDaikin216ByteTemp LITERAL1 -kDaikin216DefaultRepeat LITERAL1 -kDaikin216Freq LITERAL1 -kDaikin216Gap LITERAL1 -kDaikin216HdrMark LITERAL1 -kDaikin216HdrSpace LITERAL1 -kDaikin216MaskFan LITERAL1 -kDaikin216OneSpace LITERAL1 -kDaikin216Section1Length LITERAL1 -kDaikin216Section2Length LITERAL1 -kDaikin216Sections LITERAL1 -kDaikin216StateLength LITERAL1 -kDaikin216SwingOff LITERAL1 -kDaikin216SwingOn LITERAL1 -kDaikin216SwingSize LITERAL1 -kDaikin216TempOffset LITERAL1 -kDaikin216TempSize LITERAL1 -kDaikin216ZeroSpace LITERAL1 -kDaikin2BeepOffset LITERAL1 -kDaikin2BeepSize LITERAL1 -kDaikin2BitClean LITERAL1 -kDaikin2BitCleanOffset LITERAL1 -kDaikin2BitEye LITERAL1 -kDaikin2BitEyeAuto LITERAL1 -kDaikin2BitEyeAutoOffset LITERAL1 -kDaikin2BitEyeOffset LITERAL1 -kDaikin2BitFreshAir LITERAL1 -kDaikin2BitFreshAirHigh LITERAL1 -kDaikin2BitFreshAirHighOffset LITERAL1 -kDaikin2BitFreshAirOffset LITERAL1 -kDaikin2BitMark LITERAL1 -kDaikin2BitMold LITERAL1 -kDaikin2BitMoldOffset LITERAL1 -kDaikin2BitPower LITERAL1 -kDaikin2BitPowerOffset LITERAL1 -kDaikin2BitPurify LITERAL1 -kDaikin2BitPurifyOffset LITERAL1 -kDaikin2BitSleepTimer LITERAL1 -kDaikin2BitSleepTimerOffset LITERAL1 -kDaikin2Bits LITERAL1 -kDaikin2DefaultRepeat LITERAL1 -kDaikin2FanByte LITERAL1 -kDaikin2Freq LITERAL1 -kDaikin2Gap LITERAL1 -kDaikin2HdrMark LITERAL1 -kDaikin2HdrSpace LITERAL1 -kDaikin2LeaderMark LITERAL1 -kDaikin2LeaderSpace LITERAL1 -kDaikin2LightOffset LITERAL1 -kDaikin2LightSize LITERAL1 -kDaikin2MinCoolTemp LITERAL1 -kDaikin2OneSpace LITERAL1 -kDaikin2Section1Length LITERAL1 -kDaikin2Section2Length LITERAL1 -kDaikin2Sections LITERAL1 -kDaikin2StateLength LITERAL1 -kDaikin2SwingHAuto LITERAL1 -kDaikin2SwingHLeft LITERAL1 -kDaikin2SwingHLeftMax LITERAL1 -kDaikin2SwingHMiddle LITERAL1 -kDaikin2SwingHRight LITERAL1 -kDaikin2SwingHRightMax LITERAL1 -kDaikin2SwingHSwing LITERAL1 -kDaikin2SwingHWide LITERAL1 -kDaikin2SwingVAuto LITERAL1 -kDaikin2SwingVBreeze LITERAL1 -kDaikin2SwingVCirculate LITERAL1 -kDaikin2SwingVHigh LITERAL1 -kDaikin2SwingVLow LITERAL1 -kDaikin2SwingVSwing LITERAL1 -kDaikin2Tolerance LITERAL1 -kDaikin2ZeroSpace LITERAL1 -kDaikin64BitMark LITERAL1 -kDaikin64Bits LITERAL1 -kDaikin64ChecksumOffset LITERAL1 -kDaikin64ChecksumSize LITERAL1 -kDaikin64ClockHoursSize LITERAL1 -kDaikin64ClockMinsSize LITERAL1 -kDaikin64ClockOffset LITERAL1 -kDaikin64ClockSize LITERAL1 -kDaikin64Cool LITERAL1 -kDaikin64DefaultRepeat LITERAL1 -kDaikin64Dry LITERAL1 -kDaikin64Fan LITERAL1 -kDaikin64FanAuto LITERAL1 -kDaikin64FanHigh LITERAL1 -kDaikin64FanLow LITERAL1 -kDaikin64FanMed LITERAL1 -kDaikin64FanOffset LITERAL1 -kDaikin64FanQuiet LITERAL1 -kDaikin64FanSize LITERAL1 -kDaikin64FanTurbo LITERAL1 -kDaikin64Freq LITERAL1 -kDaikin64Gap LITERAL1 -kDaikin64HdrMark LITERAL1 -kDaikin64HdrSpace LITERAL1 -kDaikin64KnownGoodState LITERAL1 -kDaikin64LdrMark LITERAL1 -kDaikin64LdrSpace LITERAL1 -kDaikin64MaxTemp LITERAL1 -kDaikin64MinTemp LITERAL1 -kDaikin64ModeOffset LITERAL1 -kDaikin64ModeSize LITERAL1 -kDaikin64OffTimeEnableBit LITERAL1 -kDaikin64OffTimeHalfHourBit LITERAL1 -kDaikin64OffTimeOffset LITERAL1 -kDaikin64OffTimeSize LITERAL1 -kDaikin64OnTimeEnableBit LITERAL1 -kDaikin64OnTimeHalfHourBit LITERAL1 -kDaikin64OnTimeOffset LITERAL1 -kDaikin64OnTimeSize LITERAL1 -kDaikin64OneSpace LITERAL1 -kDaikin64Overhead LITERAL1 -kDaikin64PowerToggleBit LITERAL1 -kDaikin64SleepBit LITERAL1 -kDaikin64SwingVBit LITERAL1 -kDaikin64TempOffset LITERAL1 -kDaikin64TempSize LITERAL1 -kDaikin64ToleranceDelta LITERAL1 -kDaikin64ZeroSpace LITERAL1 -kDaikinAuto LITERAL1 -kDaikinBeepLoud LITERAL1 -kDaikinBeepOff LITERAL1 -kDaikinBeepQuiet LITERAL1 -kDaikinBitComfort LITERAL1 -kDaikinBitComfortOffset LITERAL1 -kDaikinBitEcono LITERAL1 -kDaikinBitEconoOffset LITERAL1 -kDaikinBitEye LITERAL1 -kDaikinBitMark LITERAL1 -kDaikinBitMold LITERAL1 -kDaikinBitMoldOffset LITERAL1 -kDaikinBitOffTimer LITERAL1 -kDaikinBitOffTimerOffset LITERAL1 -kDaikinBitOnTimer LITERAL1 -kDaikinBitOnTimerOffset LITERAL1 -kDaikinBitPower LITERAL1 -kDaikinBitPowerOffset LITERAL1 -kDaikinBitPowerful LITERAL1 -kDaikinBitPowerfulOffset LITERAL1 -kDaikinBitSensor LITERAL1 -kDaikinBitSensorOffset LITERAL1 -kDaikinBitSilent LITERAL1 -kDaikinBitSilentOffset LITERAL1 -kDaikinBitWeeklyTimer LITERAL1 -kDaikinBitWeeklyTimerOffset LITERAL1 -kDaikinBits LITERAL1 -kDaikinBitsShort LITERAL1 -kDaikinByteChecksum1 LITERAL1 -kDaikinByteChecksum2 LITERAL1 -kDaikinByteChecksum3 LITERAL1 -kDaikinByteClockMinsHigh LITERAL1 -kDaikinByteClockMinsLow LITERAL1 -kDaikinByteComfort LITERAL1 -kDaikinByteEcono LITERAL1 -kDaikinByteEye LITERAL1 -kDaikinByteFan LITERAL1 -kDaikinByteMold LITERAL1 -kDaikinByteOffTimer LITERAL1 -kDaikinByteOffTimerMinsHigh LITERAL1 -kDaikinByteOffTimerMinsLow LITERAL1 -kDaikinByteOnTimer LITERAL1 -kDaikinByteOnTimerMinsHigh LITERAL1 -kDaikinByteOnTimerMinsLow LITERAL1 -kDaikinBytePower LITERAL1 -kDaikinBytePowerful LITERAL1 -kDaikinByteSensor LITERAL1 -kDaikinByteSilent LITERAL1 -kDaikinByteSwingH LITERAL1 -kDaikinByteTemp LITERAL1 -kDaikinByteWeeklyTimer LITERAL1 -kDaikinClockMinsHighOffset LITERAL1 -kDaikinClockMinsHighSize LITERAL1 -kDaikinCool LITERAL1 -kDaikinCurBit LITERAL1 -kDaikinCurIndex LITERAL1 -kDaikinDefaultRepeat LITERAL1 -kDaikinDoWOffset LITERAL1 -kDaikinDoWSize LITERAL1 -kDaikinDry LITERAL1 -kDaikinFan LITERAL1 -kDaikinFanAuto LITERAL1 -kDaikinFanMax LITERAL1 -kDaikinFanMed LITERAL1 -kDaikinFanMin LITERAL1 -kDaikinFanOffset LITERAL1 -kDaikinFanQuiet LITERAL1 -kDaikinFanSize LITERAL1 -kDaikinFirstHeader64 LITERAL1 -kDaikinGap LITERAL1 -kDaikinHdrMark LITERAL1 -kDaikinHdrSpace LITERAL1 -kDaikinHeaderLength LITERAL1 -kDaikinHeat LITERAL1 -kDaikinLightBright LITERAL1 -kDaikinLightDim LITERAL1 -kDaikinLightOff LITERAL1 -kDaikinMarkExcess LITERAL1 -kDaikinMaxTemp LITERAL1 -kDaikinMinTemp LITERAL1 -kDaikinModeOffset LITERAL1 -kDaikinModeSize LITERAL1 -kDaikinOnTimerMinsHighOffset LITERAL1 -kDaikinOnTimerMinsHighSize LITERAL1 -kDaikinOneSpace LITERAL1 -kDaikinSection1Length LITERAL1 -kDaikinSection2Length LITERAL1 -kDaikinSection3Length LITERAL1 -kDaikinSections LITERAL1 -kDaikinStateLength LITERAL1 -kDaikinStateLengthShort LITERAL1 -kDaikinSwingOff LITERAL1 -kDaikinSwingOffset LITERAL1 -kDaikinSwingOn LITERAL1 -kDaikinSwingSize LITERAL1 -kDaikinTempOffset LITERAL1 -kDaikinTempSize LITERAL1 -kDaikinTolerance LITERAL1 -kDaikinUnusedTime LITERAL1 -kDaikinZeroSpace LITERAL1 -kDayStr LITERAL1 -kDaysStr LITERAL1 -kDefaultESP32Timer LITERAL1 -kDefaultMessageGap LITERAL1 -kDelonghiAcAuto LITERAL1 -kDelonghiAcBitMark LITERAL1 -kDelonghiAcBits LITERAL1 -kDelonghiAcBoostBit LITERAL1 -kDelonghiAcChecksumOffset LITERAL1 -kDelonghiAcChecksumSize LITERAL1 -kDelonghiAcCool LITERAL1 -kDelonghiAcDefaultRepeat LITERAL1 -kDelonghiAcDry LITERAL1 -kDelonghiAcFan LITERAL1 -kDelonghiAcFanAuto LITERAL1 -kDelonghiAcFanHigh LITERAL1 -kDelonghiAcFanLow LITERAL1 -kDelonghiAcFanMedium LITERAL1 -kDelonghiAcFanOffset LITERAL1 -kDelonghiAcFanSize LITERAL1 -kDelonghiAcFreq LITERAL1 -kDelonghiAcGap LITERAL1 -kDelonghiAcHdrMark LITERAL1 -kDelonghiAcHdrSpace LITERAL1 -kDelonghiAcHoursSize LITERAL1 -kDelonghiAcMinsSize LITERAL1 -kDelonghiAcModeOffset LITERAL1 -kDelonghiAcModeSize LITERAL1 -kDelonghiAcOffTimerEnableBit LITERAL1 -kDelonghiAcOffTimerHoursOffset LITERAL1 -kDelonghiAcOffTimerMinsOffset LITERAL1 -kDelonghiAcOnTimerEnableBit LITERAL1 -kDelonghiAcOnTimerHoursOffset LITERAL1 -kDelonghiAcOnTimerMinsOffset LITERAL1 -kDelonghiAcOneSpace LITERAL1 -kDelonghiAcOverhead LITERAL1 -kDelonghiAcPowerBit LITERAL1 -kDelonghiAcSleepBit LITERAL1 -kDelonghiAcTempAutoDryMode LITERAL1 -kDelonghiAcTempFanMode LITERAL1 -kDelonghiAcTempMaxC LITERAL1 -kDelonghiAcTempMaxF LITERAL1 -kDelonghiAcTempMinC LITERAL1 -kDelonghiAcTempMinF LITERAL1 -kDelonghiAcTempOffset LITERAL1 -kDelonghiAcTempSize LITERAL1 -kDelonghiAcTempUnitBit LITERAL1 -kDelonghiAcTimerMax LITERAL1 -kDelonghiAcZeroSpace LITERAL1 -kDenon48Bits LITERAL1 -kDenonBitMark LITERAL1 -kDenonBitMarkTicks LITERAL1 -kDenonBits LITERAL1 -kDenonHdrMark LITERAL1 -kDenonHdrMarkTicks LITERAL1 -kDenonHdrSpace LITERAL1 -kDenonHdrSpaceTicks LITERAL1 -kDenonLegacyBits LITERAL1 -kDenonManufacturer LITERAL1 -kDenonMinCommandLengthTicks LITERAL1 -kDenonMinGap LITERAL1 -kDenonMinGapTicks LITERAL1 -kDenonOneSpace LITERAL1 -kDenonOneSpaceTicks LITERAL1 -kDenonTick LITERAL1 -kDenonZeroSpace LITERAL1 -kDenonZeroSpaceTicks LITERAL1 -kDishBitMark LITERAL1 -kDishBitMarkTicks LITERAL1 -kDishBits LITERAL1 -kDishHdrMark LITERAL1 -kDishHdrMarkTicks LITERAL1 -kDishHdrSpace LITERAL1 -kDishHdrSpaceTicks LITERAL1 -kDishMinRepeat LITERAL1 -kDishOneSpace LITERAL1 -kDishOneSpaceTicks LITERAL1 -kDishRptSpace LITERAL1 -kDishRptSpaceTicks LITERAL1 -kDishTick LITERAL1 -kDishZeroSpace LITERAL1 -kDishZeroSpaceTicks LITERAL1 -kDisplayTempStr LITERAL1 -kDoshishaBitMark LITERAL1 -kDoshishaBits LITERAL1 -kDoshishaHdrMark LITERAL1 -kDoshishaHdrSpace LITERAL1 -kDoshishaOneSpace LITERAL1 -kDoshishaZeroSpace LITERAL1 -kDownStr LITERAL1 -kDry LITERAL1 -kDryStr LITERAL1 -kDutyDefault LITERAL1 -kDutyMax LITERAL1 -kEconoStr LITERAL1 -kEconoToggleStr LITERAL1 -kElectraAcAuto LITERAL1 -kElectraAcBitMark LITERAL1 -kElectraAcBits LITERAL1 -kElectraAcCleanOffset LITERAL1 -kElectraAcCool LITERAL1 -kElectraAcDry LITERAL1 -kElectraAcFan LITERAL1 -kElectraAcFanAuto LITERAL1 -kElectraAcFanHigh LITERAL1 -kElectraAcFanLow LITERAL1 -kElectraAcFanMed LITERAL1 -kElectraAcFanOffset LITERAL1 -kElectraAcFanSize LITERAL1 -kElectraAcHdrMark LITERAL1 -kElectraAcHdrSpace LITERAL1 -kElectraAcHeat LITERAL1 -kElectraAcLightToggleMask LITERAL1 -kElectraAcLightToggleOff LITERAL1 -kElectraAcLightToggleOn LITERAL1 -kElectraAcMaxTemp LITERAL1 -kElectraAcMessageGap LITERAL1 -kElectraAcMinRepeat LITERAL1 -kElectraAcMinTemp LITERAL1 -kElectraAcModeOffset LITERAL1 -kElectraAcOneSpace LITERAL1 -kElectraAcPowerOffset LITERAL1 -kElectraAcStateLength LITERAL1 -kElectraAcSwingHOffset LITERAL1 -kElectraAcSwingOff LITERAL1 -kElectraAcSwingOn LITERAL1 -kElectraAcSwingSize LITERAL1 -kElectraAcSwingVOffset LITERAL1 -kElectraAcTempDelta LITERAL1 -kElectraAcTempOffset LITERAL1 -kElectraAcTempSize LITERAL1 -kElectraAcTurboOffset LITERAL1 -kElectraAcZeroSpace LITERAL1 -kEpsonBits LITERAL1 -kEpsonMinRepeat LITERAL1 -kEyeAutoStr LITERAL1 -kEyeStr LITERAL1 -kFalseStr LITERAL1 -kFan LITERAL1 -kFanOnlyStr LITERAL1 -kFanStr LITERAL1 -kFastStr LITERAL1 -kFilterStr LITERAL1 -kFixedStr LITERAL1 -kFnvBasis32 LITERAL1 -kFnvPrime32 LITERAL1 -kFollowStr LITERAL1 -kFooter LITERAL1 -kFreshStr LITERAL1 -kFujitsuAcBitMark LITERAL1 -kFujitsuAcBits LITERAL1 -kFujitsuAcCleanOffset LITERAL1 -kFujitsuAcCmdEcono LITERAL1 -kFujitsuAcCmdPowerful LITERAL1 -kFujitsuAcCmdStayOn LITERAL1 -kFujitsuAcCmdStepHoriz LITERAL1 -kFujitsuAcCmdStepVert LITERAL1 -kFujitsuAcCmdToggleSwingHoriz LITERAL1 -kFujitsuAcCmdToggleSwingVert LITERAL1 -kFujitsuAcCmdTurnOff LITERAL1 -kFujitsuAcCmdTurnOn LITERAL1 -kFujitsuAcFanAuto LITERAL1 -kFujitsuAcFanHigh LITERAL1 -kFujitsuAcFanLow LITERAL1 -kFujitsuAcFanMed LITERAL1 -kFujitsuAcFanQuiet LITERAL1 -kFujitsuAcFanSize LITERAL1 -kFujitsuAcFilterOffset LITERAL1 -kFujitsuAcHdrMark LITERAL1 -kFujitsuAcHdrSpace LITERAL1 -kFujitsuAcMaxTemp LITERAL1 -kFujitsuAcMinBits LITERAL1 -kFujitsuAcMinGap LITERAL1 -kFujitsuAcMinRepeat LITERAL1 -kFujitsuAcMinTemp LITERAL1 -kFujitsuAcModeAuto LITERAL1 -kFujitsuAcModeCool LITERAL1 -kFujitsuAcModeDry LITERAL1 -kFujitsuAcModeFan LITERAL1 -kFujitsuAcModeHeat LITERAL1 -kFujitsuAcOneSpace LITERAL1 -kFujitsuAcOutsideQuietOffset LITERAL1 -kFujitsuAcStateLength LITERAL1 -kFujitsuAcStateLengthShort LITERAL1 -kFujitsuAcSwingBoth LITERAL1 -kFujitsuAcSwingHoriz LITERAL1 -kFujitsuAcSwingOff LITERAL1 -kFujitsuAcSwingSize LITERAL1 -kFujitsuAcSwingVert LITERAL1 -kFujitsuAcZeroSpace LITERAL1 -kGicableBitMark LITERAL1 -kGicableBits LITERAL1 -kGicableHdrMark LITERAL1 -kGicableHdrSpace LITERAL1 -kGicableMinCommandLength LITERAL1 -kGicableMinGap LITERAL1 -kGicableMinRepeat LITERAL1 -kGicableOneSpace LITERAL1 -kGicableRptSpace LITERAL1 -kGicableZeroSpace LITERAL1 -kGlobalCacheFreqIndex LITERAL1 -kGlobalCacheMaxRepeat LITERAL1 -kGlobalCacheMinUsec LITERAL1 -kGlobalCacheRptIndex LITERAL1 -kGlobalCacheRptStartIndex LITERAL1 -kGlobalCacheStartIndex LITERAL1 -kGoodweatherAuto LITERAL1 -kGoodweatherBitAirFlow LITERAL1 -kGoodweatherBitCommand LITERAL1 -kGoodweatherBitEOF LITERAL1 -kGoodweatherBitFan LITERAL1 -kGoodweatherBitLight LITERAL1 -kGoodweatherBitMark LITERAL1 -kGoodweatherBitMode LITERAL1 -kGoodweatherBitPower LITERAL1 -kGoodweatherBitSleep LITERAL1 -kGoodweatherBitSwing LITERAL1 -kGoodweatherBitTemp LITERAL1 -kGoodweatherBitTurbo LITERAL1 -kGoodweatherBits LITERAL1 -kGoodweatherCmdAirFlow LITERAL1 -kGoodweatherCmdDownTemp LITERAL1 -kGoodweatherCmdFan LITERAL1 -kGoodweatherCmdHold LITERAL1 -kGoodweatherCmdLight LITERAL1 -kGoodweatherCmdMode LITERAL1 -kGoodweatherCmdPower LITERAL1 -kGoodweatherCmdSleep LITERAL1 -kGoodweatherCmdSwing LITERAL1 -kGoodweatherCmdTimer LITERAL1 -kGoodweatherCmdTurbo LITERAL1 -kGoodweatherCmdUpTemp LITERAL1 -kGoodweatherCommandSize LITERAL1 -kGoodweatherCool LITERAL1 -kGoodweatherDry LITERAL1 -kGoodweatherEOFMask LITERAL1 -kGoodweatherExtraTolerance LITERAL1 -kGoodweatherFan LITERAL1 -kGoodweatherFanAuto LITERAL1 -kGoodweatherFanHigh LITERAL1 -kGoodweatherFanLow LITERAL1 -kGoodweatherFanMed LITERAL1 -kGoodweatherFanSize LITERAL1 -kGoodweatherHdrMark LITERAL1 -kGoodweatherHdrSpace LITERAL1 -kGoodweatherHeat LITERAL1 -kGoodweatherMinRepeat LITERAL1 -kGoodweatherOneSpace LITERAL1 -kGoodweatherStateInit LITERAL1 -kGoodweatherSwingFast LITERAL1 -kGoodweatherSwingOff LITERAL1 -kGoodweatherSwingSize LITERAL1 -kGoodweatherSwingSlow LITERAL1 -kGoodweatherTempMax LITERAL1 -kGoodweatherTempMin LITERAL1 -kGoodweatherTempSize LITERAL1 -kGoodweatherZeroSpace LITERAL1 -kGpioUnused LITERAL1 -kGreeAuto LITERAL1 -kGreeBitMark LITERAL1 -kGreeBits LITERAL1 -kGreeBlockFooter LITERAL1 -kGreeBlockFooterBits LITERAL1 -kGreeCool LITERAL1 -kGreeDefaultRepeat LITERAL1 -kGreeDisplayTempInside LITERAL1 -kGreeDisplayTempOff LITERAL1 -kGreeDisplayTempOutside LITERAL1 -kGreeDisplayTempSet LITERAL1 -kGreeDry LITERAL1 -kGreeFan LITERAL1 -kGreeFanAuto LITERAL1 -kGreeFanMax LITERAL1 -kGreeFanMed LITERAL1 -kGreeFanMin LITERAL1 -kGreeHdrMark LITERAL1 -kGreeHdrSpace LITERAL1 -kGreeHeat LITERAL1 -kGreeMaxTempC LITERAL1 -kGreeMaxTempF LITERAL1 -kGreeMinTempC LITERAL1 -kGreeMinTempF LITERAL1 -kGreeMsgSpace LITERAL1 -kGreeOneSpace LITERAL1 -kGreeStateLength LITERAL1 -kGreeSwingAuto LITERAL1 -kGreeSwingDown LITERAL1 -kGreeSwingDownAuto LITERAL1 -kGreeSwingLastPos LITERAL1 -kGreeSwingMiddle LITERAL1 -kGreeSwingMiddleAuto LITERAL1 -kGreeSwingMiddleDown LITERAL1 -kGreeSwingMiddleUp LITERAL1 -kGreeSwingUp LITERAL1 -kGreeSwingUpAuto LITERAL1 -kGreeTimerMax LITERAL1 -kGreeZeroSpace LITERAL1 -kHaierACBits LITERAL1 -kHaierACStateLength LITERAL1 -kHaierACYRW02Bits LITERAL1 -kHaierACYRW02StateLength LITERAL1 -kHaierAcAuto LITERAL1 -kHaierAcBitMark LITERAL1 -kHaierAcCmdFan LITERAL1 -kHaierAcCmdHealth LITERAL1 -kHaierAcCmdMode LITERAL1 -kHaierAcCmdOff LITERAL1 -kHaierAcCmdOn LITERAL1 -kHaierAcCmdSleep LITERAL1 -kHaierAcCmdSwing LITERAL1 -kHaierAcCmdTempDown LITERAL1 -kHaierAcCmdTempUp LITERAL1 -kHaierAcCmdTimerCancel LITERAL1 -kHaierAcCmdTimerSet LITERAL1 -kHaierAcCool LITERAL1 -kHaierAcDefTemp LITERAL1 -kHaierAcDefaultRepeat LITERAL1 -kHaierAcDry LITERAL1 -kHaierAcFan LITERAL1 -kHaierAcFanAuto LITERAL1 -kHaierAcFanHigh LITERAL1 -kHaierAcFanLow LITERAL1 -kHaierAcFanMed LITERAL1 -kHaierAcHdr LITERAL1 -kHaierAcHdrGap LITERAL1 -kHaierAcHeat LITERAL1 -kHaierAcMaxTemp LITERAL1 -kHaierAcMaxTime LITERAL1 -kHaierAcMinGap LITERAL1 -kHaierAcMinTemp LITERAL1 -kHaierAcOneSpace LITERAL1 -kHaierAcPrefix LITERAL1 -kHaierAcSleepBit LITERAL1 -kHaierAcSwingChg LITERAL1 -kHaierAcSwingDown LITERAL1 -kHaierAcSwingOff LITERAL1 -kHaierAcSwingUp LITERAL1 -kHaierAcYrw02Auto LITERAL1 -kHaierAcYrw02ButtonFan LITERAL1 -kHaierAcYrw02ButtonHealth LITERAL1 -kHaierAcYrw02ButtonMode LITERAL1 -kHaierAcYrw02ButtonPower LITERAL1 -kHaierAcYrw02ButtonSleep LITERAL1 -kHaierAcYrw02ButtonSwing LITERAL1 -kHaierAcYrw02ButtonTempDown LITERAL1 -kHaierAcYrw02ButtonTempUp LITERAL1 -kHaierAcYrw02ButtonTurbo LITERAL1 -kHaierAcYrw02Cool LITERAL1 -kHaierAcYrw02DefaultRepeat LITERAL1 -kHaierAcYrw02Dry LITERAL1 -kHaierAcYrw02Fan LITERAL1 -kHaierAcYrw02FanAuto LITERAL1 -kHaierAcYrw02FanHigh LITERAL1 -kHaierAcYrw02FanLow LITERAL1 -kHaierAcYrw02FanMed LITERAL1 -kHaierAcYrw02Heat LITERAL1 -kHaierAcYrw02Prefix LITERAL1 -kHaierAcYrw02SwingAuto LITERAL1 -kHaierAcYrw02SwingBottom LITERAL1 -kHaierAcYrw02SwingDown LITERAL1 -kHaierAcYrw02SwingMiddle LITERAL1 -kHaierAcYrw02SwingOff LITERAL1 -kHaierAcYrw02SwingTop LITERAL1 -kHaierAcYrw02TurboHigh LITERAL1 -kHaierAcYrw02TurboLow LITERAL1 -kHaierAcYrw02TurboOff LITERAL1 -kHaierAcZeroSpace LITERAL1 -kHeader LITERAL1 -kHealthStr LITERAL1 -kHeat LITERAL1 -kHeatStr LITERAL1 -kHiStr LITERAL1 -kHigh LITERAL1 -kHighNibble LITERAL1 -kHighStr LITERAL1 -kHighest LITERAL1 -kHighestStr LITERAL1 -kHitachiAc1Auto LITERAL1 -kHitachiAc1Bits LITERAL1 -kHitachiAc1ChecksumStartByte LITERAL1 -kHitachiAc1Cool LITERAL1 -kHitachiAc1Dry LITERAL1 -kHitachiAc1Fan LITERAL1 -kHitachiAc1FanAuto LITERAL1 -kHitachiAc1FanByte LITERAL1 -kHitachiAc1FanHigh LITERAL1 -kHitachiAc1FanLow LITERAL1 -kHitachiAc1FanMed LITERAL1 -kHitachiAc1FanOffset LITERAL1 -kHitachiAc1FanSize LITERAL1 -kHitachiAc1HdrMark LITERAL1 -kHitachiAc1HdrSpace LITERAL1 -kHitachiAc1Heat LITERAL1 -kHitachiAc1ModeByte LITERAL1 -kHitachiAc1ModeOffset LITERAL1 -kHitachiAc1ModeSize LITERAL1 -kHitachiAc1ModelByte LITERAL1 -kHitachiAc1ModelOffset LITERAL1 -kHitachiAc1ModelSize LITERAL1 -kHitachiAc1Model_A LITERAL1 -kHitachiAc1Model_B LITERAL1 -kHitachiAc1OffTimerHighByte LITERAL1 -kHitachiAc1OffTimerLowByte LITERAL1 -kHitachiAc1OnTimerHighByte LITERAL1 -kHitachiAc1OnTimerLowByte LITERAL1 -kHitachiAc1PowerByte LITERAL1 -kHitachiAc1PowerOffset LITERAL1 -kHitachiAc1PowerToggleOffset LITERAL1 -kHitachiAc1Sleep1 LITERAL1 -kHitachiAc1Sleep2 LITERAL1 -kHitachiAc1Sleep3 LITERAL1 -kHitachiAc1Sleep4 LITERAL1 -kHitachiAc1SleepByte LITERAL1 -kHitachiAc1SleepOff LITERAL1 -kHitachiAc1SleepOffset LITERAL1 -kHitachiAc1SleepSize LITERAL1 -kHitachiAc1StateLength LITERAL1 -kHitachiAc1SwingByte LITERAL1 -kHitachiAc1SwingHOffset LITERAL1 -kHitachiAc1SwingToggleOffset LITERAL1 -kHitachiAc1SwingVOffset LITERAL1 -kHitachiAc1TempAuto LITERAL1 -kHitachiAc1TempByte LITERAL1 -kHitachiAc1TempDelta LITERAL1 -kHitachiAc1TempOffset LITERAL1 -kHitachiAc1TempSize LITERAL1 -kHitachiAc1TimerSize LITERAL1 -kHitachiAc2Bits LITERAL1 -kHitachiAc2StateLength LITERAL1 -kHitachiAc344Bits LITERAL1 -kHitachiAc344ButtonFan LITERAL1 -kHitachiAc344ButtonPowerMode LITERAL1 -kHitachiAc344ButtonSwingH LITERAL1 -kHitachiAc344ButtonSwingV LITERAL1 -kHitachiAc344ButtonTempDown LITERAL1 -kHitachiAc344ButtonTempUp LITERAL1 -kHitachiAc344Cool LITERAL1 -kHitachiAc344Dry LITERAL1 -kHitachiAc344Fan LITERAL1 -kHitachiAc344FanAuto LITERAL1 -kHitachiAc344FanHigh LITERAL1 -kHitachiAc344FanLow LITERAL1 -kHitachiAc344FanMax LITERAL1 -kHitachiAc344FanMedium LITERAL1 -kHitachiAc344FanMin LITERAL1 -kHitachiAc344Heat LITERAL1 -kHitachiAc344MaxTemp LITERAL1 -kHitachiAc344MinTemp LITERAL1 -kHitachiAc344StateLength LITERAL1 -kHitachiAc344SwingHAuto LITERAL1 -kHitachiAc344SwingHByte LITERAL1 -kHitachiAc344SwingHLeft LITERAL1 -kHitachiAc344SwingHLeftMax LITERAL1 -kHitachiAc344SwingHMiddle LITERAL1 -kHitachiAc344SwingHOffset LITERAL1 -kHitachiAc344SwingHRight LITERAL1 -kHitachiAc344SwingHRightMax LITERAL1 -kHitachiAc344SwingHSize LITERAL1 -kHitachiAc344SwingVByte LITERAL1 -kHitachiAc344SwingVOffset LITERAL1 -kHitachiAc3BitMark LITERAL1 -kHitachiAc3Bits LITERAL1 -kHitachiAc3HdrMark LITERAL1 -kHitachiAc3HdrSpace LITERAL1 -kHitachiAc3MinBits LITERAL1 -kHitachiAc3MinStateLength LITERAL1 -kHitachiAc3OneSpace LITERAL1 -kHitachiAc3StateLength LITERAL1 -kHitachiAc3ZeroSpace LITERAL1 -kHitachiAc424BitMark LITERAL1 -kHitachiAc424Bits LITERAL1 -kHitachiAc424ButtonByte LITERAL1 -kHitachiAc424ButtonFan LITERAL1 -kHitachiAc424ButtonPowerMode LITERAL1 -kHitachiAc424ButtonSwingH LITERAL1 -kHitachiAc424ButtonSwingV LITERAL1 -kHitachiAc424ButtonTempDown LITERAL1 -kHitachiAc424ButtonTempUp LITERAL1 -kHitachiAc424Cool LITERAL1 -kHitachiAc424Dry LITERAL1 -kHitachiAc424Fan LITERAL1 -kHitachiAc424FanAuto LITERAL1 -kHitachiAc424FanByte LITERAL1 -kHitachiAc424FanHigh LITERAL1 -kHitachiAc424FanLow LITERAL1 -kHitachiAc424FanMax LITERAL1 -kHitachiAc424FanMaxDry LITERAL1 -kHitachiAc424FanMedium LITERAL1 -kHitachiAc424FanMin LITERAL1 -kHitachiAc424FanTemp LITERAL1 -kHitachiAc424HdrMark LITERAL1 -kHitachiAc424HdrSpace LITERAL1 -kHitachiAc424Heat LITERAL1 -kHitachiAc424LdrMark LITERAL1 -kHitachiAc424LdrSpace LITERAL1 -kHitachiAc424MaxTemp LITERAL1 -kHitachiAc424MinTemp LITERAL1 -kHitachiAc424ModeByte LITERAL1 -kHitachiAc424OneSpace LITERAL1 -kHitachiAc424PowerByte LITERAL1 -kHitachiAc424PowerOff LITERAL1 -kHitachiAc424PowerOn LITERAL1 -kHitachiAc424StateLength LITERAL1 -kHitachiAc424TempByte LITERAL1 -kHitachiAc424TempOffset LITERAL1 -kHitachiAc424TempSize LITERAL1 -kHitachiAc424ZeroSpace LITERAL1 -kHitachiAcAuto LITERAL1 -kHitachiAcAutoTemp LITERAL1 -kHitachiAcBitMark LITERAL1 -kHitachiAcBits LITERAL1 -kHitachiAcCool LITERAL1 -kHitachiAcDefaultRepeat LITERAL1 -kHitachiAcDry LITERAL1 -kHitachiAcFan LITERAL1 -kHitachiAcFanAuto LITERAL1 -kHitachiAcFanHigh LITERAL1 -kHitachiAcFanLow LITERAL1 -kHitachiAcFanMed LITERAL1 -kHitachiAcFreq LITERAL1 -kHitachiAcHdrMark LITERAL1 -kHitachiAcHdrSpace LITERAL1 -kHitachiAcHeat LITERAL1 -kHitachiAcMaxTemp LITERAL1 -kHitachiAcMinGap LITERAL1 -kHitachiAcMinTemp LITERAL1 -kHitachiAcOneSpace LITERAL1 -kHitachiAcPowerOffset LITERAL1 -kHitachiAcStateLength LITERAL1 -kHitachiAcSwingOffset LITERAL1 -kHitachiAcZeroSpace LITERAL1 -kHoldStr LITERAL1 -kHourStr LITERAL1 -kHoursStr LITERAL1 -kHumidStr LITERAL1 -kIFeelStr LITERAL1 -kIdleState LITERAL1 -kInaxBitMark LITERAL1 -kInaxBits LITERAL1 -kInaxHdrMark LITERAL1 -kInaxHdrSpace LITERAL1 -kInaxMinGap LITERAL1 -kInaxMinRepeat LITERAL1 -kInaxOneSpace LITERAL1 -kInaxTick LITERAL1 -kInaxZeroSpace LITERAL1 -kInsideStr LITERAL1 -kIonStr LITERAL1 -kJvcBitMark LITERAL1 -kJvcBitMarkTicks LITERAL1 -kJvcBits LITERAL1 -kJvcHdrMark LITERAL1 -kJvcHdrMarkTicks LITERAL1 -kJvcHdrSpace LITERAL1 -kJvcHdrSpaceTicks LITERAL1 -kJvcMinGap LITERAL1 -kJvcMinGapTicks LITERAL1 -kJvcOneSpace LITERAL1 -kJvcOneSpaceTicks LITERAL1 -kJvcRptLength LITERAL1 -kJvcRptLengthTicks LITERAL1 -kJvcTick LITERAL1 -kJvcZeroSpace LITERAL1 -kJvcZeroSpaceTicks LITERAL1 -kKelvinatorAuto LITERAL1 -kKelvinatorAutoTemp LITERAL1 -kKelvinatorBasicFanMax LITERAL1 -kKelvinatorBasicFanSize LITERAL1 -kKelvinatorBitMark LITERAL1 -kKelvinatorBitMarkTicks LITERAL1 -kKelvinatorBits LITERAL1 -kKelvinatorChecksumStart LITERAL1 -kKelvinatorCmdFooter LITERAL1 -kKelvinatorCmdFooterBits LITERAL1 -kKelvinatorCool LITERAL1 -kKelvinatorDefaultRepeat LITERAL1 -kKelvinatorDry LITERAL1 -kKelvinatorFan LITERAL1 -kKelvinatorFanAuto LITERAL1 -kKelvinatorFanMax LITERAL1 -kKelvinatorFanMin LITERAL1 -kKelvinatorFanOffset LITERAL1 -kKelvinatorFanSize LITERAL1 -kKelvinatorGapSpace LITERAL1 -kKelvinatorGapSpaceTicks LITERAL1 -kKelvinatorHdrMark LITERAL1 -kKelvinatorHdrMarkTicks LITERAL1 -kKelvinatorHdrSpace LITERAL1 -kKelvinatorHdrSpaceTicks LITERAL1 -kKelvinatorHeat LITERAL1 -kKelvinatorIonFilterOffset LITERAL1 -kKelvinatorLightOffset LITERAL1 -kKelvinatorMaxTemp LITERAL1 -kKelvinatorMinTemp LITERAL1 -kKelvinatorModeOffset LITERAL1 -kKelvinatorOneSpace LITERAL1 -kKelvinatorOneSpaceTicks LITERAL1 -kKelvinatorPowerOffset LITERAL1 -kKelvinatorQuietOffset LITERAL1 -kKelvinatorStateLength LITERAL1 -kKelvinatorTick LITERAL1 -kKelvinatorTurboOffset LITERAL1 -kKelvinatorVentSwingHOffset LITERAL1 -kKelvinatorVentSwingOffset LITERAL1 -kKelvinatorVentSwingVOffset LITERAL1 -kKelvinatorXfanOffset LITERAL1 -kKelvinatorZeroSpace LITERAL1 -kKelvinatorZeroSpaceTicks LITERAL1 -kLasertagBits LITERAL1 -kLasertagDelta LITERAL1 -kLasertagExcess LITERAL1 -kLasertagMinGap LITERAL1 -kLasertagMinRepeat LITERAL1 -kLasertagMinSamples LITERAL1 -kLasertagTick LITERAL1 -kLasertagTolerance LITERAL1 -kLastDecodeType LITERAL1 -kLastFanspeedEnum LITERAL1 -kLastOpmodeEnum LITERAL1 -kLastStr LITERAL1 -kLastSwinghEnum LITERAL1 -kLastSwingvEnum LITERAL1 -kLeft LITERAL1 -kLeftMax LITERAL1 -kLeftMaxStr LITERAL1 -kLeftStr LITERAL1 -kLegoPfBitMark LITERAL1 -kLegoPfBits LITERAL1 -kLegoPfHdrSpace LITERAL1 -kLegoPfMinCommandLength LITERAL1 -kLegoPfMinRepeat LITERAL1 -kLegoPfOneSpace LITERAL1 -kLegoPfZeroSpace LITERAL1 -kLg2BitMark LITERAL1 -kLg2BitMarkTicks LITERAL1 -kLg2HdrMark LITERAL1 -kLg2HdrMarkTicks LITERAL1 -kLg2HdrSpace LITERAL1 -kLg2HdrSpaceTicks LITERAL1 -kLg32Bits LITERAL1 -kLg32HdrMark LITERAL1 -kLg32HdrMarkTicks LITERAL1 -kLg32HdrSpace LITERAL1 -kLg32HdrSpaceTicks LITERAL1 -kLg32RptHdrMark LITERAL1 -kLg32RptHdrMarkTicks LITERAL1 -kLgAcAuto LITERAL1 -kLgAcChecksumOffset LITERAL1 -kLgAcChecksumSize LITERAL1 -kLgAcCool LITERAL1 -kLgAcDry LITERAL1 -kLgAcFan LITERAL1 -kLgAcFanAuto LITERAL1 -kLgAcFanHigh LITERAL1 -kLgAcFanLow LITERAL1 -kLgAcFanLowest LITERAL1 -kLgAcFanMedium LITERAL1 -kLgAcFanOffset LITERAL1 -kLgAcFanSize LITERAL1 -kLgAcHeat LITERAL1 -kLgAcMaxTemp LITERAL1 -kLgAcMinTemp LITERAL1 -kLgAcModeOffset LITERAL1 -kLgAcModeSize LITERAL1 -kLgAcOffCommand LITERAL1 -kLgAcPowerOff LITERAL1 -kLgAcPowerOffset LITERAL1 -kLgAcPowerOn LITERAL1 -kLgAcPowerSize LITERAL1 -kLgAcSignature LITERAL1 -kLgAcSignatureOffset LITERAL1 -kLgAcSignatureSize LITERAL1 -kLgAcTempAdjust LITERAL1 -kLgAcTempOffset LITERAL1 -kLgAcTempSize LITERAL1 -kLgBitMark LITERAL1 -kLgBitMarkTicks LITERAL1 -kLgBits LITERAL1 -kLgDefaultRepeat LITERAL1 -kLgHdrMark LITERAL1 -kLgHdrMarkTicks LITERAL1 -kLgHdrSpace LITERAL1 -kLgHdrSpaceTicks LITERAL1 -kLgMinGap LITERAL1 -kLgMinGapTicks LITERAL1 -kLgMinMessageLength LITERAL1 -kLgMinMessageLengthTicks LITERAL1 -kLgOneSpace LITERAL1 -kLgOneSpaceTicks LITERAL1 -kLgRptSpace LITERAL1 -kLgRptSpaceTicks LITERAL1 -kLgTick LITERAL1 -kLgZeroSpace LITERAL1 -kLgZeroSpaceTicks LITERAL1 -kLightStr LITERAL1 -kLightToggleStr LITERAL1 -kLoStr LITERAL1 -kLoudStr LITERAL1 -kLow LITERAL1 -kLowNibble LITERAL1 -kLowStr LITERAL1 -kLowerStr LITERAL1 -kLowest LITERAL1 -kLowestStr LITERAL1 -kLutronBits LITERAL1 -kLutronDelta LITERAL1 -kLutronGap LITERAL1 -kLutronTick LITERAL1 -kMWMDelta LITERAL1 -kMWMExcess LITERAL1 -kMWMMaxWidth LITERAL1 -kMWMMinGap LITERAL1 -kMWMMinSamples LITERAL1 -kMWMTick LITERAL1 -kMWMTolerance LITERAL1 -kMagiQuestGap LITERAL1 -kMagiQuestMarkOne LITERAL1 -kMagiQuestMarkZero LITERAL1 -kMagiQuestOneRatio LITERAL1 -kMagiQuestSpaceOne LITERAL1 -kMagiQuestSpaceZero LITERAL1 -kMagiQuestTotalUsec LITERAL1 -kMagiQuestZeroRatio LITERAL1 -kMagiquestBits LITERAL1 -kManualStr LITERAL1 -kMark LITERAL1 -kMarkExcess LITERAL1 -kMarkState LITERAL1 -kMax LITERAL1 -kMaxAccurateUsecDelay LITERAL1 -kMaxLeftStr LITERAL1 -kMaxRightStr LITERAL1 -kMaxStr LITERAL1 -kMaxTimeoutMs LITERAL1 -kMaximumStr LITERAL1 -kMedStr LITERAL1 -kMedium LITERAL1 -kMediumStr LITERAL1 -kMetzAddressBits LITERAL1 -kMetzBitMark LITERAL1 -kMetzBits LITERAL1 -kMetzCommandBits LITERAL1 -kMetzFreq LITERAL1 -kMetzHdrMark LITERAL1 -kMetzHdrSpace LITERAL1 -kMetzMinRepeat LITERAL1 -kMetzOneSpace LITERAL1 -kMetzZeroSpace LITERAL1 -kMidStr LITERAL1 -kMiddle LITERAL1 -kMiddleStr LITERAL1 -kMidea24Bits LITERAL1 -kMidea24MinGap LITERAL1 -kMidea24MinRepeat LITERAL1 -kMideaACAuto LITERAL1 -kMideaACCool LITERAL1 -kMideaACDry LITERAL1 -kMideaACFan LITERAL1 -kMideaACFanAuto LITERAL1 -kMideaACFanHigh LITERAL1 -kMideaACFanLow LITERAL1 -kMideaACFanMed LITERAL1 -kMideaACHeat LITERAL1 -kMideaACMaxTempC LITERAL1 -kMideaACMaxTempF LITERAL1 -kMideaACMinTempC LITERAL1 -kMideaACMinTempF LITERAL1 -kMideaACToggleEcono LITERAL1 -kMideaACToggleSwingV LITERAL1 -kMideaBitMark LITERAL1 -kMideaBitMarkTicks LITERAL1 -kMideaBits LITERAL1 -kMideaHdrMark LITERAL1 -kMideaHdrMarkTicks LITERAL1 -kMideaHdrSpace LITERAL1 -kMideaHdrSpaceTicks LITERAL1 -kMideaMinGap LITERAL1 -kMideaMinGapTicks LITERAL1 -kMideaMinRepeat LITERAL1 -kMideaOneSpace LITERAL1 -kMideaOneSpaceTicks LITERAL1 -kMideaTick LITERAL1 -kMideaTolerance LITERAL1 -kMideaZeroSpace LITERAL1 -kMideaZeroSpaceTicks LITERAL1 -kMin LITERAL1 -kMinStr LITERAL1 -kMinimumStr LITERAL1 -kMinuteStr LITERAL1 -kMinutesStr LITERAL1 -kMitsubishi112Auto LITERAL1 -kMitsubishi112BitMark LITERAL1 -kMitsubishi112Bits LITERAL1 -kMitsubishi112Cool LITERAL1 -kMitsubishi112Dry LITERAL1 -kMitsubishi112FanByte LITERAL1 -kMitsubishi112FanLow LITERAL1 -kMitsubishi112FanMax LITERAL1 -kMitsubishi112FanMed LITERAL1 -kMitsubishi112FanMin LITERAL1 -kMitsubishi112FanOffset LITERAL1 -kMitsubishi112FanQuiet LITERAL1 -kMitsubishi112FanSize LITERAL1 -kMitsubishi112Gap LITERAL1 -kMitsubishi112HdrMark LITERAL1 -kMitsubishi112HdrMarkTolerance LITERAL1 -kMitsubishi112HdrSpace LITERAL1 -kMitsubishi112Heat LITERAL1 -kMitsubishi112MaxTemp LITERAL1 -kMitsubishi112MinRepeat LITERAL1 -kMitsubishi112MinTemp LITERAL1 -kMitsubishi112ModeByte LITERAL1 -kMitsubishi112ModeOffset LITERAL1 -kMitsubishi112OneSpace LITERAL1 -kMitsubishi112PowerByte LITERAL1 -kMitsubishi112PowerOffset LITERAL1 -kMitsubishi112StateLength LITERAL1 -kMitsubishi112SwingHAuto LITERAL1 -kMitsubishi112SwingHByte LITERAL1 -kMitsubishi112SwingHLeft LITERAL1 -kMitsubishi112SwingHLeftMax LITERAL1 -kMitsubishi112SwingHMiddle LITERAL1 -kMitsubishi112SwingHOffset LITERAL1 -kMitsubishi112SwingHRight LITERAL1 -kMitsubishi112SwingHRightMax LITERAL1 -kMitsubishi112SwingHSize LITERAL1 -kMitsubishi112SwingHWide LITERAL1 -kMitsubishi112SwingVAuto LITERAL1 -kMitsubishi112SwingVByte LITERAL1 -kMitsubishi112SwingVHigh LITERAL1 -kMitsubishi112SwingVHighest LITERAL1 -kMitsubishi112SwingVLow LITERAL1 -kMitsubishi112SwingVLowest LITERAL1 -kMitsubishi112SwingVMiddle LITERAL1 -kMitsubishi112SwingVOffset LITERAL1 -kMitsubishi112SwingVSize LITERAL1 -kMitsubishi112TempByte LITERAL1 -kMitsubishi112TempSize LITERAL1 -kMitsubishi112ZeroSpace LITERAL1 -kMitsubishi136Auto LITERAL1 -kMitsubishi136BitMark LITERAL1 -kMitsubishi136Bits LITERAL1 -kMitsubishi136Cool LITERAL1 -kMitsubishi136Dry LITERAL1 -kMitsubishi136Fan LITERAL1 -kMitsubishi136FanByte LITERAL1 -kMitsubishi136FanLow LITERAL1 -kMitsubishi136FanMax LITERAL1 -kMitsubishi136FanMed LITERAL1 -kMitsubishi136FanMin LITERAL1 -kMitsubishi136FanOffset LITERAL1 -kMitsubishi136FanQuiet LITERAL1 -kMitsubishi136FanSize LITERAL1 -kMitsubishi136Gap LITERAL1 -kMitsubishi136HdrMark LITERAL1 -kMitsubishi136HdrSpace LITERAL1 -kMitsubishi136Heat LITERAL1 -kMitsubishi136MaxTemp LITERAL1 -kMitsubishi136MinRepeat LITERAL1 -kMitsubishi136MinTemp LITERAL1 -kMitsubishi136ModeByte LITERAL1 -kMitsubishi136ModeOffset LITERAL1 -kMitsubishi136OneSpace LITERAL1 -kMitsubishi136PowerBit LITERAL1 -kMitsubishi136PowerByte LITERAL1 -kMitsubishi136PowerOffset LITERAL1 -kMitsubishi136StateLength LITERAL1 -kMitsubishi136SwingVAuto LITERAL1 -kMitsubishi136SwingVByte LITERAL1 -kMitsubishi136SwingVHigh LITERAL1 -kMitsubishi136SwingVHighest LITERAL1 -kMitsubishi136SwingVLow LITERAL1 -kMitsubishi136SwingVLowest LITERAL1 -kMitsubishi136TempByte LITERAL1 -kMitsubishi136ZeroSpace LITERAL1 -kMitsubishi2BitMark LITERAL1 -kMitsubishi2HdrMark LITERAL1 -kMitsubishi2HdrSpace LITERAL1 -kMitsubishi2MinGap LITERAL1 -kMitsubishi2OneSpace LITERAL1 -kMitsubishi2ZeroSpace LITERAL1 -kMitsubishiACBits LITERAL1 -kMitsubishiACMinRepeat LITERAL1 -kMitsubishiACStateLength LITERAL1 -kMitsubishiAcAuto LITERAL1 -kMitsubishiAcBitMark LITERAL1 -kMitsubishiAcCool LITERAL1 -kMitsubishiAcDry LITERAL1 -kMitsubishiAcExtraTolerance LITERAL1 -kMitsubishiAcFanAuto LITERAL1 -kMitsubishiAcFanAutoOffset LITERAL1 -kMitsubishiAcFanMax LITERAL1 -kMitsubishiAcFanOffset LITERAL1 -kMitsubishiAcFanQuiet LITERAL1 -kMitsubishiAcFanRealMax LITERAL1 -kMitsubishiAcFanSilent LITERAL1 -kMitsubishiAcFanSize LITERAL1 -kMitsubishiAcHdrMark LITERAL1 -kMitsubishiAcHdrSpace LITERAL1 -kMitsubishiAcHeat LITERAL1 -kMitsubishiAcMaxTemp LITERAL1 -kMitsubishiAcMinTemp LITERAL1 -kMitsubishiAcModeOffset LITERAL1 -kMitsubishiAcNoTimer LITERAL1 -kMitsubishiAcOneSpace LITERAL1 -kMitsubishiAcPower LITERAL1 -kMitsubishiAcPowerOffset LITERAL1 -kMitsubishiAcRptMark LITERAL1 -kMitsubishiAcRptSpace LITERAL1 -kMitsubishiAcStartStopTimer LITERAL1 -kMitsubishiAcStartTimer LITERAL1 -kMitsubishiAcStopTimer LITERAL1 -kMitsubishiAcVaneAuto LITERAL1 -kMitsubishiAcVaneAutoMove LITERAL1 -kMitsubishiAcVaneBitOffset LITERAL1 -kMitsubishiAcVaneOffset LITERAL1 -kMitsubishiAcVaneSize LITERAL1 -kMitsubishiAcWideVaneAuto LITERAL1 -kMitsubishiAcZeroSpace LITERAL1 -kMitsubishiBitMark LITERAL1 -kMitsubishiBitMarkTicks LITERAL1 -kMitsubishiBits LITERAL1 -kMitsubishiHeavy152Bits LITERAL1 -kMitsubishiHeavy152FanAuto LITERAL1 -kMitsubishiHeavy152FanEcono LITERAL1 -kMitsubishiHeavy152FanHigh LITERAL1 -kMitsubishiHeavy152FanLow LITERAL1 -kMitsubishiHeavy152FanMax LITERAL1 -kMitsubishiHeavy152FanMed LITERAL1 -kMitsubishiHeavy152FanTurbo LITERAL1 -kMitsubishiHeavy152MinRepeat LITERAL1 -kMitsubishiHeavy152StateLength LITERAL1 -kMitsubishiHeavy152SwingHAuto LITERAL1 -kMitsubishiHeavy152SwingHLeft LITERAL1 -kMitsubishiHeavy152SwingHLeftMax LITERAL1 -kMitsubishiHeavy152SwingHLeftRight LITERAL1 -kMitsubishiHeavy152SwingHMiddle LITERAL1 -kMitsubishiHeavy152SwingHOff LITERAL1 -kMitsubishiHeavy152SwingHRight LITERAL1 -kMitsubishiHeavy152SwingHRightLeft LITERAL1 -kMitsubishiHeavy152SwingHRightMax LITERAL1 -kMitsubishiHeavy152SwingVAuto LITERAL1 -kMitsubishiHeavy152SwingVHigh LITERAL1 -kMitsubishiHeavy152SwingVHighest LITERAL1 -kMitsubishiHeavy152SwingVLow LITERAL1 -kMitsubishiHeavy152SwingVLowest LITERAL1 -kMitsubishiHeavy152SwingVMiddle LITERAL1 -kMitsubishiHeavy152SwingVOff LITERAL1 -kMitsubishiHeavy152SwingVOffset LITERAL1 -kMitsubishiHeavy152SwingVSize LITERAL1 -kMitsubishiHeavy3DMask LITERAL1 -kMitsubishiHeavy88Bits LITERAL1 -kMitsubishiHeavy88CleanOffset LITERAL1 -kMitsubishiHeavy88FanAuto LITERAL1 -kMitsubishiHeavy88FanEcono LITERAL1 -kMitsubishiHeavy88FanHigh LITERAL1 -kMitsubishiHeavy88FanLow LITERAL1 -kMitsubishiHeavy88FanMed LITERAL1 -kMitsubishiHeavy88FanOffset LITERAL1 -kMitsubishiHeavy88FanSize LITERAL1 -kMitsubishiHeavy88FanTurbo LITERAL1 -kMitsubishiHeavy88MinRepeat LITERAL1 -kMitsubishiHeavy88StateLength LITERAL1 -kMitsubishiHeavy88SwingH3D LITERAL1 -kMitsubishiHeavy88SwingHAuto LITERAL1 -kMitsubishiHeavy88SwingHLeft LITERAL1 -kMitsubishiHeavy88SwingHLeftMax LITERAL1 -kMitsubishiHeavy88SwingHLeftRight LITERAL1 -kMitsubishiHeavy88SwingHMiddle LITERAL1 -kMitsubishiHeavy88SwingHOff LITERAL1 -kMitsubishiHeavy88SwingHOffset1 LITERAL1 -kMitsubishiHeavy88SwingHOffset2 LITERAL1 -kMitsubishiHeavy88SwingHRight LITERAL1 -kMitsubishiHeavy88SwingHRightLeft LITERAL1 -kMitsubishiHeavy88SwingHRightMax LITERAL1 -kMitsubishiHeavy88SwingHSize LITERAL1 -kMitsubishiHeavy88SwingVAuto LITERAL1 -kMitsubishiHeavy88SwingVByte5Offset LITERAL1 -kMitsubishiHeavy88SwingVByte5Size LITERAL1 -kMitsubishiHeavy88SwingVByte7Offset LITERAL1 -kMitsubishiHeavy88SwingVByte7Size LITERAL1 -kMitsubishiHeavy88SwingVHigh LITERAL1 -kMitsubishiHeavy88SwingVHighest LITERAL1 -kMitsubishiHeavy88SwingVLow LITERAL1 -kMitsubishiHeavy88SwingVLowest LITERAL1 -kMitsubishiHeavy88SwingVMiddle LITERAL1 -kMitsubishiHeavy88SwingVOff LITERAL1 -kMitsubishiHeavyAuto LITERAL1 -kMitsubishiHeavyBitMark LITERAL1 -kMitsubishiHeavyCleanOffset LITERAL1 -kMitsubishiHeavyCool LITERAL1 -kMitsubishiHeavyDry LITERAL1 -kMitsubishiHeavyFan LITERAL1 -kMitsubishiHeavyFilterOffset LITERAL1 -kMitsubishiHeavyGap LITERAL1 -kMitsubishiHeavyHdrMark LITERAL1 -kMitsubishiHeavyHdrSpace LITERAL1 -kMitsubishiHeavyHeat LITERAL1 -kMitsubishiHeavyMaxTemp LITERAL1 -kMitsubishiHeavyMinTemp LITERAL1 -kMitsubishiHeavyModeOffset LITERAL1 -kMitsubishiHeavyNightOffset LITERAL1 -kMitsubishiHeavyOneSpace LITERAL1 -kMitsubishiHeavyPowerOffset LITERAL1 -kMitsubishiHeavySigLength LITERAL1 -kMitsubishiHeavySilentOffset LITERAL1 -kMitsubishiHeavyZeroSpace LITERAL1 -kMitsubishiHeavyZjsSig LITERAL1 -kMitsubishiHeavyZmsSig LITERAL1 -kMitsubishiMinCommandLength LITERAL1 -kMitsubishiMinCommandLengthTicks LITERAL1 -kMitsubishiMinGap LITERAL1 -kMitsubishiMinGapTicks LITERAL1 -kMitsubishiMinRepeat LITERAL1 -kMitsubishiOneSpace LITERAL1 -kMitsubishiOneSpaceTicks LITERAL1 -kMitsubishiTick LITERAL1 -kMitsubishiZeroSpace LITERAL1 -kMitsubishiZeroSpaceTicks LITERAL1 -kModeBitsSize LITERAL1 -kModeStr LITERAL1 -kModelStr LITERAL1 -kMouldStr LITERAL1 -kMoveStr LITERAL1 -kMultibracketsBits LITERAL1 -kMultibracketsDefaultRepeat LITERAL1 -kMultibracketsFooterSpace LITERAL1 -kMultibracketsFreq LITERAL1 -kMultibracketsHdrMark LITERAL1 -kMultibracketsTick LITERAL1 -kMultibracketsTolerance LITERAL1 -kNAStr LITERAL1 -kNECBits LITERAL1 -kNecBitMark LITERAL1 -kNecBitMarkTicks LITERAL1 -kNecHdrMark LITERAL1 -kNecHdrMarkTicks LITERAL1 -kNecHdrSpace LITERAL1 -kNecHdrSpaceTicks LITERAL1 -kNecMinCommandLength LITERAL1 -kNecMinCommandLengthTicks LITERAL1 -kNecMinGap LITERAL1 -kNecMinGapTicks LITERAL1 -kNecOneSpace LITERAL1 -kNecOneSpaceTicks LITERAL1 -kNecRptLength LITERAL1 -kNecRptSpace LITERAL1 -kNecRptSpaceTicks LITERAL1 -kNecTick LITERAL1 -kNecZeroSpace LITERAL1 -kNecZeroSpaceTicks LITERAL1 -kNeoclima8CHeatOffset LITERAL1 -kNeoclimaAuto LITERAL1 -kNeoclimaBitMark LITERAL1 -kNeoclimaBits LITERAL1 -kNeoclimaButton8CHeat LITERAL1 -kNeoclimaButtonAirFlow LITERAL1 -kNeoclimaButtonEye LITERAL1 -kNeoclimaButtonFanSpeed LITERAL1 -kNeoclimaButtonFollow LITERAL1 -kNeoclimaButtonFresh LITERAL1 -kNeoclimaButtonHold LITERAL1 -kNeoclimaButtonIon LITERAL1 -kNeoclimaButtonLight LITERAL1 -kNeoclimaButtonMode LITERAL1 -kNeoclimaButtonOffset LITERAL1 -kNeoclimaButtonPower LITERAL1 -kNeoclimaButtonSize LITERAL1 -kNeoclimaButtonSleep LITERAL1 -kNeoclimaButtonSwing LITERAL1 -kNeoclimaButtonTempDown LITERAL1 -kNeoclimaButtonTempUp LITERAL1 -kNeoclimaButtonTurbo LITERAL1 -kNeoclimaCool LITERAL1 -kNeoclimaDry LITERAL1 -kNeoclimaEyeOffset LITERAL1 -kNeoclimaFan LITERAL1 -kNeoclimaFanAuto LITERAL1 -kNeoclimaFanHigh LITERAL1 -kNeoclimaFanLow LITERAL1 -kNeoclimaFanMed LITERAL1 -kNeoclimaFanOffest LITERAL1 -kNeoclimaFanSize LITERAL1 -kNeoclimaFollowMe LITERAL1 -kNeoclimaFreshOffset LITERAL1 -kNeoclimaHdrMark LITERAL1 -kNeoclimaHdrSpace LITERAL1 -kNeoclimaHeat LITERAL1 -kNeoclimaHoldOffset LITERAL1 -kNeoclimaIonOffset LITERAL1 -kNeoclimaLightOffset LITERAL1 -kNeoclimaMaxTemp LITERAL1 -kNeoclimaMinGap LITERAL1 -kNeoclimaMinRepeat LITERAL1 -kNeoclimaMinTemp LITERAL1 -kNeoclimaModeOffset LITERAL1 -kNeoclimaOneSpace LITERAL1 -kNeoclimaPowerOffset LITERAL1 -kNeoclimaSleepOffset LITERAL1 -kNeoclimaStateLength LITERAL1 -kNeoclimaSwingHOffset LITERAL1 -kNeoclimaSwingVOff LITERAL1 -kNeoclimaSwingVOffset LITERAL1 -kNeoclimaSwingVOn LITERAL1 -kNeoclimaSwingVSize LITERAL1 -kNeoclimaTempOffset LITERAL1 -kNeoclimaTempSize LITERAL1 -kNeoclimaTurboOffset LITERAL1 -kNeoclimaZeroSpace LITERAL1 -kNibbleSize LITERAL1 -kNightStr LITERAL1 -kNikaiBitMark LITERAL1 -kNikaiBitMarkTicks LITERAL1 -kNikaiBits LITERAL1 -kNikaiHdrMark LITERAL1 -kNikaiHdrMarkTicks LITERAL1 -kNikaiHdrSpace LITERAL1 -kNikaiHdrSpaceTicks LITERAL1 -kNikaiMinGap LITERAL1 -kNikaiMinGapTicks LITERAL1 -kNikaiOneSpace LITERAL1 -kNikaiOneSpaceTicks LITERAL1 -kNikaiTick LITERAL1 -kNikaiZeroSpace LITERAL1 -kNikaiZeroSpaceTicks LITERAL1 -kNoRepeat LITERAL1 -kNoStr LITERAL1 -kNowStr LITERAL1 -kOff LITERAL1 -kOffStr LITERAL1 -kOffTimerStr LITERAL1 -kOnStr LITERAL1 -kOnTimerStr LITERAL1 -kOutsideQuietStr LITERAL1 -kOutsideStr LITERAL1 -kPanasonicAcAuto LITERAL1 -kPanasonicAcBits LITERAL1 -kPanasonicAcChecksumInit LITERAL1 -kPanasonicAcCool LITERAL1 -kPanasonicAcDefaultRepeat LITERAL1 -kPanasonicAcDry LITERAL1 -kPanasonicAcExcess LITERAL1 -kPanasonicAcFan LITERAL1 -kPanasonicAcFanAuto LITERAL1 -kPanasonicAcFanDelta LITERAL1 -kPanasonicAcFanMax LITERAL1 -kPanasonicAcFanMed LITERAL1 -kPanasonicAcFanMin LITERAL1 -kPanasonicAcFanModeTemp LITERAL1 -kPanasonicAcHeat LITERAL1 -kPanasonicAcIonFilterByte LITERAL1 -kPanasonicAcIonFilterOffset LITERAL1 -kPanasonicAcMaxTemp LITERAL1 -kPanasonicAcMessageGap LITERAL1 -kPanasonicAcMinTemp LITERAL1 -kPanasonicAcOffTimerOffset LITERAL1 -kPanasonicAcOnTimerOffset LITERAL1 -kPanasonicAcPowerOffset LITERAL1 -kPanasonicAcPowerfulCkpOffset LITERAL1 -kPanasonicAcPowerfulOffset LITERAL1 -kPanasonicAcQuietCkpOffset LITERAL1 -kPanasonicAcQuietOffset LITERAL1 -kPanasonicAcSection1Length LITERAL1 -kPanasonicAcSectionGap LITERAL1 -kPanasonicAcShortBits LITERAL1 -kPanasonicAcStateLength LITERAL1 -kPanasonicAcStateShortLength LITERAL1 -kPanasonicAcSwingHAuto LITERAL1 -kPanasonicAcSwingHFullLeft LITERAL1 -kPanasonicAcSwingHFullRight LITERAL1 -kPanasonicAcSwingHLeft LITERAL1 -kPanasonicAcSwingHMiddle LITERAL1 -kPanasonicAcSwingHRight LITERAL1 -kPanasonicAcSwingVAuto LITERAL1 -kPanasonicAcSwingVHigh LITERAL1 -kPanasonicAcSwingVHighest LITERAL1 -kPanasonicAcSwingVLow LITERAL1 -kPanasonicAcSwingVLowest LITERAL1 -kPanasonicAcSwingVMiddle LITERAL1 -kPanasonicAcTempOffset LITERAL1 -kPanasonicAcTempSize LITERAL1 -kPanasonicAcTimeMax LITERAL1 -kPanasonicAcTimeOverflowSize LITERAL1 -kPanasonicAcTimeSize LITERAL1 -kPanasonicAcTimeSpecial LITERAL1 -kPanasonicAcTolerance LITERAL1 -kPanasonicBitMark LITERAL1 -kPanasonicBitMarkTicks LITERAL1 -kPanasonicBits LITERAL1 -kPanasonicCkp LITERAL1 -kPanasonicDke LITERAL1 -kPanasonicEndGap LITERAL1 -kPanasonicFreq LITERAL1 -kPanasonicHdrMark LITERAL1 -kPanasonicHdrMarkTicks LITERAL1 -kPanasonicHdrSpace LITERAL1 -kPanasonicHdrSpaceTicks LITERAL1 -kPanasonicJke LITERAL1 -kPanasonicKnownGoodState LITERAL1 -kPanasonicLke LITERAL1 -kPanasonicManufacturer LITERAL1 -kPanasonicMinCommandLength LITERAL1 -kPanasonicMinCommandLengthTicks LITERAL1 -kPanasonicMinGap LITERAL1 -kPanasonicMinGapTicks LITERAL1 -kPanasonicNke LITERAL1 -kPanasonicOneSpace LITERAL1 -kPanasonicOneSpaceTicks LITERAL1 -kPanasonicRkr LITERAL1 -kPanasonicTick LITERAL1 -kPanasonicUnknown LITERAL1 -kPanasonicZeroSpace LITERAL1 -kPanasonicZeroSpaceTicks LITERAL1 -kPeriodOffset LITERAL1 -kPioneerBitMark LITERAL1 -kPioneerBits LITERAL1 -kPioneerHdrMark LITERAL1 -kPioneerHdrSpace LITERAL1 -kPioneerMinCommandLength LITERAL1 -kPioneerMinGap LITERAL1 -kPioneerOneSpace LITERAL1 -kPioneerTick LITERAL1 -kPioneerZeroSpace LITERAL1 -kPowerButtonStr LITERAL1 -kPowerStr LITERAL1 -kPowerToggleStr LITERAL1 -kPowerfulStr LITERAL1 -kPreviousPowerStr LITERAL1 -kProntoDataOffset LITERAL1 -kProntoFreqFactor LITERAL1 -kProntoFreqOffset LITERAL1 -kProntoMinLength LITERAL1 -kProntoSeq1LenOffset LITERAL1 -kProntoSeq2LenOffset LITERAL1 -kProntoTypeOffset LITERAL1 -kProtocolStr LITERAL1 -kPurifyStr LITERAL1 -kQuietStr LITERAL1 -kRC5Bits LITERAL1 -kRC5RawBits LITERAL1 -kRC5XBits LITERAL1 -kRC6Mode0Bits LITERAL1 -kRC6_36Bits LITERAL1 -kRCMMBits LITERAL1 -kRawBuf LITERAL1 -kRawTick LITERAL1 -kRc5MinCommandLength LITERAL1 -kRc5MinGap LITERAL1 -kRc5SamplesMin LITERAL1 -kRc5T1 LITERAL1 -kRc5ToggleMask LITERAL1 -kRc6HdrMark LITERAL1 -kRc6HdrMarkTicks LITERAL1 -kRc6HdrSpace LITERAL1 -kRc6HdrSpaceTicks LITERAL1 -kRc6RptLength LITERAL1 -kRc6RptLengthTicks LITERAL1 -kRc6Tick LITERAL1 -kRc6ToggleMask LITERAL1 -kRc6_36ToggleMask LITERAL1 -kRcmmBitMark LITERAL1 -kRcmmBitMarkTicks LITERAL1 -kRcmmBitSpace0 LITERAL1 -kRcmmBitSpace0Ticks LITERAL1 -kRcmmBitSpace1 LITERAL1 -kRcmmBitSpace1Ticks LITERAL1 -kRcmmBitSpace2 LITERAL1 -kRcmmBitSpace2Ticks LITERAL1 -kRcmmBitSpace3 LITERAL1 -kRcmmBitSpace3Ticks LITERAL1 -kRcmmExcess LITERAL1 -kRcmmHdrMark LITERAL1 -kRcmmHdrMarkTicks LITERAL1 -kRcmmHdrSpace LITERAL1 -kRcmmHdrSpaceTicks LITERAL1 -kRcmmMinGap LITERAL1 -kRcmmMinGapTicks LITERAL1 -kRcmmRptLength LITERAL1 -kRcmmRptLengthTicks LITERAL1 -kRcmmTick LITERAL1 -kRcmmTolerance LITERAL1 -kRcz01ChannelMask LITERAL1 -kRcz01CommandLevel1 LITERAL1 -kRcz01CommandLevel2 LITERAL1 -kRcz01CommandLevel3 LITERAL1 -kRcz01CommandLevel4 LITERAL1 -kRcz01CommandLevelDown LITERAL1 -kRcz01CommandLevelUp LITERAL1 -kRcz01CommandMask LITERAL1 -kRcz01CommandNightLight LITERAL1 -kRcz01CommandOff LITERAL1 -kRcz01CommandOn LITERAL1 -kRcz01CommandSwitchChannel LITERAL1 -kRcz01CommandTimmer30 LITERAL1 -kRcz01CommandTimmer60 LITERAL1 -kRcz01Signature LITERAL1 -kRcz01SignatureMask LITERAL1 -kRepeat LITERAL1 -kRepeatStr LITERAL1 -kRight LITERAL1 -kRightMax LITERAL1 -kRightMaxStr LITERAL1 -kRightStr LITERAL1 -kRoomStr LITERAL1 -kSamsung36BitMark LITERAL1 -kSamsung36Bits LITERAL1 -kSamsung36HdrMark LITERAL1 -kSamsung36HdrSpace LITERAL1 -kSamsung36OneSpace LITERAL1 -kSamsung36ZeroSpace LITERAL1 -kSamsungAcAuto LITERAL1 -kSamsungAcAutoTemp LITERAL1 -kSamsungAcBeepOffset LITERAL1 -kSamsungAcBitMark LITERAL1 -kSamsungAcBits LITERAL1 -kSamsungAcBreezeOffset LITERAL1 -kSamsungAcBreezeOn LITERAL1 -kSamsungAcBreezeSize LITERAL1 -kSamsungAcClean10Offset LITERAL1 -kSamsungAcClean11Offset LITERAL1 -kSamsungAcCool LITERAL1 -kSamsungAcDefaultRepeat LITERAL1 -kSamsungAcDisplayOffset LITERAL1 -kSamsungAcDry LITERAL1 -kSamsungAcExtendedBits LITERAL1 -kSamsungAcExtendedStateLength LITERAL1 -kSamsungAcFan LITERAL1 -kSamsungAcFanAuto LITERAL1 -kSamsungAcFanAuto2 LITERAL1 -kSamsungAcFanHigh LITERAL1 -kSamsungAcFanLow LITERAL1 -kSamsungAcFanMed LITERAL1 -kSamsungAcFanOffest LITERAL1 -kSamsungAcFanSize LITERAL1 -kSamsungAcFanTurbo LITERAL1 -kSamsungAcHdrMark LITERAL1 -kSamsungAcHdrSpace LITERAL1 -kSamsungAcHeat LITERAL1 -kSamsungAcIonOffset LITERAL1 -kSamsungAcMaxTemp LITERAL1 -kSamsungAcMinTemp LITERAL1 -kSamsungAcModeOffset LITERAL1 -kSamsungAcOneSpace LITERAL1 -kSamsungAcPower1Offset LITERAL1 -kSamsungAcPower6Offset LITERAL1 -kSamsungAcPower6Size LITERAL1 -kSamsungAcPowerSection LITERAL1 -kSamsungAcPowerful10Offset LITERAL1 -kSamsungAcPowerful10On LITERAL1 -kSamsungAcPowerful10Size LITERAL1 -kSamsungAcPowerfulMask8 LITERAL1 -kSamsungAcQuiet1Offset LITERAL1 -kSamsungAcQuiet5Offset LITERAL1 -kSamsungAcSectionGap LITERAL1 -kSamsungAcSectionLength LITERAL1 -kSamsungAcSectionMark LITERAL1 -kSamsungAcSectionSpace LITERAL1 -kSamsungAcSections LITERAL1 -kSamsungAcStateLength LITERAL1 -kSamsungAcSwingMove LITERAL1 -kSamsungAcSwingOffset LITERAL1 -kSamsungAcSwingSize LITERAL1 -kSamsungAcSwingStop LITERAL1 -kSamsungAcZeroSpace LITERAL1 -kSamsungBitMark LITERAL1 -kSamsungBitMarkTicks LITERAL1 -kSamsungBits LITERAL1 -kSamsungHdrMark LITERAL1 -kSamsungHdrMarkTicks LITERAL1 -kSamsungHdrSpace LITERAL1 -kSamsungHdrSpaceTicks LITERAL1 -kSamsungMinGap LITERAL1 -kSamsungMinGapTicks LITERAL1 -kSamsungMinMessageLength LITERAL1 -kSamsungMinMessageLengthTicks LITERAL1 -kSamsungOneSpace LITERAL1 -kSamsungOneSpaceTicks LITERAL1 -kSamsungRptSpace LITERAL1 -kSamsungRptSpaceTicks LITERAL1 -kSamsungTick LITERAL1 -kSamsungZeroSpace LITERAL1 -kSamsungZeroSpaceTicks LITERAL1 -kSanyoAcAuto LITERAL1 -kSanyoAcBeepBit LITERAL1 -kSanyoAcBitMark LITERAL1 -kSanyoAcBits LITERAL1 -kSanyoAcCool LITERAL1 -kSanyoAcDry LITERAL1 -kSanyoAcFanAuto LITERAL1 -kSanyoAcFanHigh LITERAL1 -kSanyoAcFanLow LITERAL1 -kSanyoAcFanMedium LITERAL1 -kSanyoAcFanOffset LITERAL1 -kSanyoAcFanSize LITERAL1 -kSanyoAcFreq LITERAL1 -kSanyoAcGap LITERAL1 -kSanyoAcHdrMark LITERAL1 -kSanyoAcHdrSpace LITERAL1 -kSanyoAcHeat LITERAL1 -kSanyoAcHourMax LITERAL1 -kSanyoAcModeByte LITERAL1 -kSanyoAcModeOffset LITERAL1 -kSanyoAcModeSize LITERAL1 -kSanyoAcOffHourByte LITERAL1 -kSanyoAcOffHourOffset LITERAL1 -kSanyoAcOffHourSize LITERAL1 -kSanyoAcOffTimerEnableBit LITERAL1 -kSanyoAcOneSpace LITERAL1 -kSanyoAcPowerByte LITERAL1 -kSanyoAcPowerOff LITERAL1 -kSanyoAcPowerOffset LITERAL1 -kSanyoAcPowerOn LITERAL1 -kSanyoAcPowerSize LITERAL1 -kSanyoAcSensorBit LITERAL1 -kSanyoAcSensorByte LITERAL1 -kSanyoAcSleepBit LITERAL1 -kSanyoAcSleepByte LITERAL1 -kSanyoAcStateLength LITERAL1 -kSanyoAcSwingVAuto LITERAL1 -kSanyoAcSwingVHigh LITERAL1 -kSanyoAcSwingVHighest LITERAL1 -kSanyoAcSwingVLow LITERAL1 -kSanyoAcSwingVLowerMiddle LITERAL1 -kSanyoAcSwingVLowest LITERAL1 -kSanyoAcSwingVOffset LITERAL1 -kSanyoAcSwingVSize LITERAL1 -kSanyoAcSwingVUpperMiddle LITERAL1 -kSanyoAcTempByte LITERAL1 -kSanyoAcTempDelta LITERAL1 -kSanyoAcTempMax LITERAL1 -kSanyoAcTempMin LITERAL1 -kSanyoAcTempOffset LITERAL1 -kSanyoAcTempSize LITERAL1 -kSanyoAcZeroSpace LITERAL1 -kSanyoLC7461AddressBits LITERAL1 -kSanyoLC7461Bits LITERAL1 -kSanyoLC7461CommandBits LITERAL1 -kSanyoLc7461AddressMask LITERAL1 -kSanyoLc7461BitMark LITERAL1 -kSanyoLc7461CommandMask LITERAL1 -kSanyoLc7461HdrMark LITERAL1 -kSanyoLc7461HdrSpace LITERAL1 -kSanyoLc7461MinCommandLength LITERAL1 -kSanyoLc7461MinGap LITERAL1 -kSanyoLc7461OneSpace LITERAL1 -kSanyoLc7461ZeroSpace LITERAL1 -kSanyoSA8650BBits LITERAL1 -kSanyoSa8650bDoubleSpaceUsecs LITERAL1 -kSanyoSa8650bHdrMark LITERAL1 -kSanyoSa8650bHdrSpace LITERAL1 -kSanyoSa8650bOneMark LITERAL1 -kSanyoSa8650bRptLength LITERAL1 -kSanyoSa8650bZeroMark LITERAL1 -kSaveStr LITERAL1 -kSecondStr LITERAL1 -kSecondsStr LITERAL1 -kSensorStr LITERAL1 -kSensorTempStr LITERAL1 -kSetStr LITERAL1 -kSharpAcAuto LITERAL1 -kSharpAcBitCleanOffset LITERAL1 -kSharpAcBitIonOffset LITERAL1 -kSharpAcBitMark LITERAL1 -kSharpAcBitTimerEnabled LITERAL1 -kSharpAcBitTimerType LITERAL1 -kSharpAcBits LITERAL1 -kSharpAcByteClean LITERAL1 -kSharpAcByteFan LITERAL1 -kSharpAcByteIon LITERAL1 -kSharpAcByteMode LITERAL1 -kSharpAcBytePowerSpecial LITERAL1 -kSharpAcByteSpecial LITERAL1 -kSharpAcByteSwing LITERAL1 -kSharpAcByteTemp LITERAL1 -kSharpAcByteTimer LITERAL1 -kSharpAcCool LITERAL1 -kSharpAcDefaultRepeat LITERAL1 -kSharpAcDry LITERAL1 -kSharpAcFanAuto LITERAL1 -kSharpAcFanHigh LITERAL1 -kSharpAcFanMax LITERAL1 -kSharpAcFanMed LITERAL1 -kSharpAcFanMin LITERAL1 -kSharpAcFanOffset LITERAL1 -kSharpAcFanSize LITERAL1 -kSharpAcGap LITERAL1 -kSharpAcHdrMark LITERAL1 -kSharpAcHdrSpace LITERAL1 -kSharpAcHeat LITERAL1 -kSharpAcMaxTemp LITERAL1 -kSharpAcMinTemp LITERAL1 -kSharpAcModeSize LITERAL1 -kSharpAcOffTimerType LITERAL1 -kSharpAcOnTimerType LITERAL1 -kSharpAcOneSpace LITERAL1 -kSharpAcPowerOff LITERAL1 -kSharpAcPowerOn LITERAL1 -kSharpAcPowerOnFromOff LITERAL1 -kSharpAcPowerSetSpecialOff LITERAL1 -kSharpAcPowerSetSpecialOffset LITERAL1 -kSharpAcPowerSetSpecialOn LITERAL1 -kSharpAcPowerSpecialSize LITERAL1 -kSharpAcPowerTimerSetting LITERAL1 -kSharpAcPowerUnknown LITERAL1 -kSharpAcSpecialFan LITERAL1 -kSharpAcSpecialPower LITERAL1 -kSharpAcSpecialSwing LITERAL1 -kSharpAcSpecialTempEcono LITERAL1 -kSharpAcSpecialTimer LITERAL1 -kSharpAcSpecialTimerHalfHour LITERAL1 -kSharpAcSpecialTurbo LITERAL1 -kSharpAcStateLength LITERAL1 -kSharpAcSwingNoToggle LITERAL1 -kSharpAcSwingOffset LITERAL1 -kSharpAcSwingSize LITERAL1 -kSharpAcSwingToggle LITERAL1 -kSharpAcTimerHoursMax LITERAL1 -kSharpAcTimerHoursOff LITERAL1 -kSharpAcTimerHoursOffset LITERAL1 -kSharpAcTimerHoursSize LITERAL1 -kSharpAcTimerIncrement LITERAL1 -kSharpAcZeroSpace LITERAL1 -kSharpAddressBits LITERAL1 -kSharpAddressMask LITERAL1 -kSharpBitMark LITERAL1 -kSharpBitMarkTicks LITERAL1 -kSharpBits LITERAL1 -kSharpCommandBits LITERAL1 -kSharpCommandMask LITERAL1 -kSharpGap LITERAL1 -kSharpGapTicks LITERAL1 -kSharpOneSpace LITERAL1 -kSharpOneSpaceTicks LITERAL1 -kSharpTick LITERAL1 -kSharpToggleMask LITERAL1 -kSharpZeroSpace LITERAL1 -kSharpZeroSpaceTicks LITERAL1 -kSherwoodBits LITERAL1 -kSherwoodMinRepeat LITERAL1 -kSilentStr LITERAL1 -kSingleRepeat LITERAL1 -kSleepStr LITERAL1 -kSleepTimerStr LITERAL1 -kSlowStr LITERAL1 -kSony12Bits LITERAL1 -kSony15Bits LITERAL1 -kSony20Bits LITERAL1 -kSonyAltFreq LITERAL1 -kSonyHdrMark LITERAL1 -kSonyHdrMarkTicks LITERAL1 -kSonyMinBits LITERAL1 -kSonyMinGap LITERAL1 -kSonyMinGapTicks LITERAL1 -kSonyMinRepeat LITERAL1 -kSonyOneMark LITERAL1 -kSonyOneMarkTicks LITERAL1 -kSonyRptLength LITERAL1 -kSonyRptLengthTicks LITERAL1 -kSonySpace LITERAL1 -kSonySpaceTicks LITERAL1 -kSonyStdFreq LITERAL1 -kSonyTick LITERAL1 -kSonyZeroMark LITERAL1 -kSonyZeroMarkTicks LITERAL1 -kSpace LITERAL1 -kSpaceLBraceStr LITERAL1 -kSpaceState LITERAL1 -kStartOffset LITERAL1 -kStartStr LITERAL1 -kStateSizeMax LITERAL1 -kStepStr LITERAL1 -kStopState LITERAL1 -kStopStr LITERAL1 -kSuperStr LITERAL1 -kSwingHStr LITERAL1 -kSwingStr LITERAL1 -kSwingVModeStr LITERAL1 -kSwingVStr LITERAL1 -kSwingVToggleStr LITERAL1 -kSymphonyBits LITERAL1 -kSymphonyDefaultRepeat LITERAL1 -kSymphonyFooterGap LITERAL1 -kSymphonyOneMark LITERAL1 -kSymphonyOneSpace LITERAL1 -kSymphonyZeroMark LITERAL1 -kSymphonyZeroSpace LITERAL1 -kTcl112AcAuto LITERAL1 -kTcl112AcBitEconoOffset LITERAL1 -kTcl112AcBitHealthOffset LITERAL1 -kTcl112AcBitLightOffset LITERAL1 -kTcl112AcBitMark LITERAL1 -kTcl112AcBitSwingHOffset LITERAL1 -kTcl112AcBitTurboOffset LITERAL1 -kTcl112AcBits LITERAL1 -kTcl112AcCool LITERAL1 -kTcl112AcDefaultRepeat LITERAL1 -kTcl112AcDry LITERAL1 -kTcl112AcFan LITERAL1 -kTcl112AcFanAuto LITERAL1 -kTcl112AcFanHigh LITERAL1 -kTcl112AcFanLow LITERAL1 -kTcl112AcFanMed LITERAL1 -kTcl112AcFanSize LITERAL1 -kTcl112AcGap LITERAL1 -kTcl112AcHalfDegreeOffset LITERAL1 -kTcl112AcHdrMark LITERAL1 -kTcl112AcHdrMarkTolerance LITERAL1 -kTcl112AcHdrSpace LITERAL1 -kTcl112AcHeat LITERAL1 -kTcl112AcModeSize LITERAL1 -kTcl112AcOneSpace LITERAL1 -kTcl112AcPowerOffset LITERAL1 -kTcl112AcStateLength LITERAL1 -kTcl112AcSwingVOff LITERAL1 -kTcl112AcSwingVOffset LITERAL1 -kTcl112AcSwingVOn LITERAL1 -kTcl112AcSwingVSize LITERAL1 -kTcl112AcTempMax LITERAL1 -kTcl112AcTempMin LITERAL1 -kTcl112AcTolerance LITERAL1 -kTcl112AcZeroSpace LITERAL1 -kTecoAuto LITERAL1 -kTecoBitMark LITERAL1 -kTecoBits LITERAL1 -kTecoCool LITERAL1 -kTecoDefaultRepeat LITERAL1 -kTecoDry LITERAL1 -kTecoFan LITERAL1 -kTecoFanAuto LITERAL1 -kTecoFanHigh LITERAL1 -kTecoFanLow LITERAL1 -kTecoFanMed LITERAL1 -kTecoFanOffset LITERAL1 -kTecoFanSize LITERAL1 -kTecoGap LITERAL1 -kTecoHdrMark LITERAL1 -kTecoHdrSpace LITERAL1 -kTecoHeat LITERAL1 -kTecoHumidOffset LITERAL1 -kTecoLightOffset LITERAL1 -kTecoMaxTemp LITERAL1 -kTecoMinTemp LITERAL1 -kTecoModeOffset LITERAL1 -kTecoOneSpace LITERAL1 -kTecoPowerOffset LITERAL1 -kTecoReset LITERAL1 -kTecoSaveOffset LITERAL1 -kTecoSleepOffset LITERAL1 -kTecoSwingOffset LITERAL1 -kTecoTempOffset LITERAL1 -kTecoTempSize LITERAL1 -kTecoTimerHalfHourOffset LITERAL1 -kTecoTimerOnOffset LITERAL1 -kTecoTimerTensHoursOffset LITERAL1 -kTecoTimerTensHoursSize LITERAL1 -kTecoTimerUnitHoursOffset LITERAL1 -kTecoTimerUnitHoursSize LITERAL1 -kTecoZeroSpace LITERAL1 -kTempDownStr LITERAL1 -kTempStr LITERAL1 -kTempUpStr LITERAL1 -kThreeLetterDayOfWeekStr LITERAL1 -kTimeoutMs LITERAL1 -kTimerStr LITERAL1 -kToggleStr LITERAL1 -kTolerance LITERAL1 -kTopStr LITERAL1 -kToshibaACBits LITERAL1 -kToshibaACBitsLong LITERAL1 -kToshibaACBitsShort LITERAL1 -kToshibaACMinRepeat LITERAL1 -kToshibaACStateLength LITERAL1 -kToshibaACStateLengthLong LITERAL1 -kToshibaACStateLengthShort LITERAL1 -kToshibaAcAuto LITERAL1 -kToshibaAcBitMark LITERAL1 -kToshibaAcCool LITERAL1 -kToshibaAcDry LITERAL1 -kToshibaAcEcoTurboOffset LITERAL1 -kToshibaAcEcoTurboSize LITERAL1 -kToshibaAcEconoOn LITERAL1 -kToshibaAcFan LITERAL1 -kToshibaAcFanAuto LITERAL1 -kToshibaAcFanMax LITERAL1 -kToshibaAcFanMed LITERAL1 -kToshibaAcFanMin LITERAL1 -kToshibaAcFanOffset LITERAL1 -kToshibaAcFanSize LITERAL1 -kToshibaAcHdrMark LITERAL1 -kToshibaAcHdrSpace LITERAL1 -kToshibaAcHeat LITERAL1 -kToshibaAcInvertedLength LITERAL1 -kToshibaAcLengthByte LITERAL1 -kToshibaAcLongMsgBit LITERAL1 -kToshibaAcMaxTemp LITERAL1 -kToshibaAcMinGap LITERAL1 -kToshibaAcMinLength LITERAL1 -kToshibaAcMinTemp LITERAL1 -kToshibaAcModeOffset LITERAL1 -kToshibaAcModeSize LITERAL1 -kToshibaAcOff LITERAL1 -kToshibaAcOneSpace LITERAL1 -kToshibaAcShortMsgBit LITERAL1 -kToshibaAcSwingOff LITERAL1 -kToshibaAcSwingOffset LITERAL1 -kToshibaAcSwingOn LITERAL1 -kToshibaAcSwingSize LITERAL1 -kToshibaAcSwingStep LITERAL1 -kToshibaAcTempOffset LITERAL1 -kToshibaAcTempSize LITERAL1 -kToshibaAcTurboOn LITERAL1 -kToshibaAcZeroSpace LITERAL1 -kTrotecAuto LITERAL1 -kTrotecBitMark LITERAL1 -kTrotecBits LITERAL1 -kTrotecCool LITERAL1 -kTrotecDefTemp LITERAL1 -kTrotecDefaultRepeat LITERAL1 -kTrotecDry LITERAL1 -kTrotecFan LITERAL1 -kTrotecFanHigh LITERAL1 -kTrotecFanLow LITERAL1 -kTrotecFanMed LITERAL1 -kTrotecFanOffset LITERAL1 -kTrotecFanSize LITERAL1 -kTrotecGap LITERAL1 -kTrotecGapEnd LITERAL1 -kTrotecHdrMark LITERAL1 -kTrotecHdrSpace LITERAL1 -kTrotecIntro1 LITERAL1 -kTrotecIntro2 LITERAL1 -kTrotecMaxTemp LITERAL1 -kTrotecMaxTimer LITERAL1 -kTrotecMinTemp LITERAL1 -kTrotecModeOffset LITERAL1 -kTrotecModeSize LITERAL1 -kTrotecOneSpace LITERAL1 -kTrotecPowerBitOffset LITERAL1 -kTrotecSleepBitOffset LITERAL1 -kTrotecStateLength LITERAL1 -kTrotecTempOffset LITERAL1 -kTrotecTempSize LITERAL1 -kTrotecTimerBitOffset LITERAL1 -kTrotecZeroSpace LITERAL1 -kTrueStr LITERAL1 -kTurboStr LITERAL1 -kUnknownStr LITERAL1 -kUnknownThreshold LITERAL1 -kUpStr LITERAL1 -kUpperStr LITERAL1 -kUseDefTol LITERAL1 -kVestelAcAuto LITERAL1 -kVestelAcBitMark LITERAL1 -kVestelAcBits LITERAL1 -kVestelAcChecksumOffset LITERAL1 -kVestelAcChecksumSize LITERAL1 -kVestelAcCool LITERAL1 -kVestelAcDry LITERAL1 -kVestelAcFan LITERAL1 -kVestelAcFanAuto LITERAL1 -kVestelAcFanAutoCool LITERAL1 -kVestelAcFanAutoHot LITERAL1 -kVestelAcFanHigh LITERAL1 -kVestelAcFanLow LITERAL1 -kVestelAcFanMed LITERAL1 -kVestelAcFanOffset LITERAL1 -kVestelAcFanSize LITERAL1 -kVestelAcHdrMark LITERAL1 -kVestelAcHdrSpace LITERAL1 -kVestelAcHeat LITERAL1 -kVestelAcHourOffset LITERAL1 -kVestelAcHourSize LITERAL1 -kVestelAcIon LITERAL1 -kVestelAcIonOffset LITERAL1 -kVestelAcMaxTemp LITERAL1 -kVestelAcMinTempC LITERAL1 -kVestelAcMinTempH LITERAL1 -kVestelAcMinuteOffset LITERAL1 -kVestelAcMinuteSize LITERAL1 -kVestelAcModeOffset LITERAL1 -kVestelAcNormal LITERAL1 -kVestelAcOffTimeOffset LITERAL1 -kVestelAcOffTimerFlagOffset LITERAL1 -kVestelAcOnTimeOffset LITERAL1 -kVestelAcOnTimerFlagOffset LITERAL1 -kVestelAcOneSpace LITERAL1 -kVestelAcPowerOffset LITERAL1 -kVestelAcPowerSize LITERAL1 -kVestelAcSleep LITERAL1 -kVestelAcStateDefault LITERAL1 -kVestelAcSwing LITERAL1 -kVestelAcSwingOffset LITERAL1 -kVestelAcTempOffset LITERAL1 -kVestelAcTimeStateDefault LITERAL1 -kVestelAcTimerFlagOffset LITERAL1 -kVestelAcTimerHourSize LITERAL1 -kVestelAcTimerMinsSize LITERAL1 -kVestelAcTimerSize LITERAL1 -kVestelAcTolerance LITERAL1 -kVestelAcTurbo LITERAL1 -kVestelAcTurboSleepOffset LITERAL1 -kVestelAcZeroSpace LITERAL1 -kVoltas122LZF LITERAL1 -kVoltasBitMark LITERAL1 -kVoltasBits LITERAL1 -kVoltasCool LITERAL1 -kVoltasDry LITERAL1 -kVoltasDryTemp LITERAL1 -kVoltasFan LITERAL1 -kVoltasFanAuto LITERAL1 -kVoltasFanHigh LITERAL1 -kVoltasFanLow LITERAL1 -kVoltasFanMed LITERAL1 -kVoltasFreq LITERAL1 -kVoltasHeat LITERAL1 -kVoltasMaxTemp LITERAL1 -kVoltasMinTemp LITERAL1 -kVoltasOneSpace LITERAL1 -kVoltasStateLength LITERAL1 -kVoltasSwingHChange LITERAL1 -kVoltasSwingHNoChange LITERAL1 -kVoltasUnknown LITERAL1 -kVoltasZeroSpace LITERAL1 -kWallStr LITERAL1 -kWeeklyTimerStr LITERAL1 -kWhirlpoolAcAltTempOffset LITERAL1 -kWhirlpoolAcAltTempPos LITERAL1 -kWhirlpoolAcAuto LITERAL1 -kWhirlpoolAcAutoTemp LITERAL1 -kWhirlpoolAcBitMark LITERAL1 -kWhirlpoolAcBits LITERAL1 -kWhirlpoolAcChecksumByte1 LITERAL1 -kWhirlpoolAcChecksumByte2 LITERAL1 -kWhirlpoolAcClockPos LITERAL1 -kWhirlpoolAcCommand6thSense LITERAL1 -kWhirlpoolAcCommandFanSpeed LITERAL1 -kWhirlpoolAcCommandIFeel LITERAL1 -kWhirlpoolAcCommandLight LITERAL1 -kWhirlpoolAcCommandMode LITERAL1 -kWhirlpoolAcCommandOffTimer LITERAL1 -kWhirlpoolAcCommandOnTimer LITERAL1 -kWhirlpoolAcCommandPos LITERAL1 -kWhirlpoolAcCommandPower LITERAL1 -kWhirlpoolAcCommandSleep LITERAL1 -kWhirlpoolAcCommandSuper LITERAL1 -kWhirlpoolAcCommandSwing LITERAL1 -kWhirlpoolAcCommandTemp LITERAL1 -kWhirlpoolAcCool LITERAL1 -kWhirlpoolAcDefaultRepeat LITERAL1 -kWhirlpoolAcDry LITERAL1 -kWhirlpoolAcFan LITERAL1 -kWhirlpoolAcFanAuto LITERAL1 -kWhirlpoolAcFanHigh LITERAL1 -kWhirlpoolAcFanLow LITERAL1 -kWhirlpoolAcFanMedium LITERAL1 -kWhirlpoolAcFanOffset LITERAL1 -kWhirlpoolAcFanPos LITERAL1 -kWhirlpoolAcFanSize LITERAL1 -kWhirlpoolAcGap LITERAL1 -kWhirlpoolAcHdrMark LITERAL1 -kWhirlpoolAcHdrSpace LITERAL1 -kWhirlpoolAcHeat LITERAL1 -kWhirlpoolAcHourOffset LITERAL1 -kWhirlpoolAcHourSize LITERAL1 -kWhirlpoolAcLightOffset LITERAL1 -kWhirlpoolAcMaxTemp LITERAL1 -kWhirlpoolAcMinGap LITERAL1 -kWhirlpoolAcMinTemp LITERAL1 -kWhirlpoolAcMinuteOffset LITERAL1 -kWhirlpoolAcMinuteSize LITERAL1 -kWhirlpoolAcModeOffset LITERAL1 -kWhirlpoolAcModePos LITERAL1 -kWhirlpoolAcOffTimerPos LITERAL1 -kWhirlpoolAcOnTimerPos LITERAL1 -kWhirlpoolAcOneSpace LITERAL1 -kWhirlpoolAcPowerToggleOffset LITERAL1 -kWhirlpoolAcPowerTogglePos LITERAL1 -kWhirlpoolAcSections LITERAL1 -kWhirlpoolAcSleepOffset LITERAL1 -kWhirlpoolAcSleepPos LITERAL1 -kWhirlpoolAcStateLength LITERAL1 -kWhirlpoolAcSuperMask LITERAL1 -kWhirlpoolAcSuperPos LITERAL1 -kWhirlpoolAcSwing1Offset LITERAL1 -kWhirlpoolAcSwing2Offset LITERAL1 -kWhirlpoolAcTempPos LITERAL1 -kWhirlpoolAcTimerEnableOffset LITERAL1 -kWhirlpoolAcZeroSpace LITERAL1 -kWhynterBitMark LITERAL1 -kWhynterBitMarkTicks LITERAL1 -kWhynterBits LITERAL1 -kWhynterHdrMark LITERAL1 -kWhynterHdrMarkTicks LITERAL1 -kWhynterHdrSpace LITERAL1 -kWhynterHdrSpaceTicks LITERAL1 -kWhynterMinCommandLength LITERAL1 -kWhynterMinCommandLengthTicks LITERAL1 -kWhynterMinGap LITERAL1 -kWhynterMinGapTicks LITERAL1 -kWhynterOneSpace LITERAL1 -kWhynterOneSpaceTicks LITERAL1 -kWhynterTick LITERAL1 -kWhynterZeroSpace LITERAL1 -kWhynterZeroSpaceTicks LITERAL1 -kWide LITERAL1 -kWideStr LITERAL1 -kWifiStr LITERAL1 -kXFanStr LITERAL1 -kYesStr LITERAL1 -kZepealBits LITERAL1 -kZepealCommandOffOn LITERAL1 -kZepealCommandOffTimer LITERAL1 -kZepealCommandOnTimer LITERAL1 -kZepealCommandRhythm LITERAL1 -kZepealCommandSpeed LITERAL1 -kZepealFooterMark LITERAL1 -kZepealGap LITERAL1 -kZepealHdrMark LITERAL1 -kZepealHdrSpace LITERAL1 -kZepealMinRepeat LITERAL1 -kZepealOneMark LITERAL1 -kZepealOneSpace LITERAL1 -kZepealSignature LITERAL1 -kZepealTolerance LITERAL1 -kZepealZeroMark LITERAL1 -kZepealZeroSpace LITERAL1 -kZoneFollowStr LITERAL1 diff --git a/lib/IRremoteESP8266-2.7.10/library.json b/lib/IRremoteESP8266-2.7.10/library.json deleted file mode 100644 index d66b9c8a3..000000000 --- a/lib/IRremoteESP8266-2.7.10/library.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "IRremoteESP8266", - "version": "2.7.10", - "keywords": "infrared, ir, remote, esp8266, esp32", - "description": "Send and receive infrared signals with multiple protocols (ESP8266/ESP32)", - "repository": - { - "type": "git", - "url": "https://github.com/crankyoldgit/IRremoteESP8266.git" - }, - "authors": [ - { - "name": "David Conran", - "url": "https://plus.google.com/+davidconran", - "maintainer": true - }, - { - "name": "Mark Szabo", - "url": "http://nomartini-noparty.blogspot.com/", - "maintainer": true - }, - { - "name": "Sebastien Warin", - "url": "http://sebastien.warin.fr", - "maintainer": true - }, - { - "name": "Ken Shirriff", - "email": "zetoslab@gmail.com" - }, - { - "name": "Roi Dayan", - "url": "https://github.com/roidayan/", - "maintainer": true - }, - { - "name": "Massimiliano Pinto", - "url": "https://github.com/pintomax/", - "maintainer": true - }, - { - "name": "Christian Nilsson", - "url": "https://github.com/NiKiZe", - "maintainer": true - } - ], - "frameworks": "arduino", - "platforms": ["espressif8266", "espressif32"] -} diff --git a/lib/IRremoteESP8266-2.7.10/library.properties b/lib/IRremoteESP8266-2.7.10/library.properties deleted file mode 100644 index 80b9fec95..000000000 --- a/lib/IRremoteESP8266-2.7.10/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=IRremoteESP8266 -version=2.7.10 -author=David Conran, Sebastien Warin, Mark Szabo, Ken Shirriff -maintainer=David Conran, Mark Szabo, Sebastien Warin, Roi Dayan, Massimiliano Pinto, Christian Nilsson -sentence=Send and receive infrared signals with multiple protocols (ESP8266/ESP32) -paragraph=This library enables you to send and receive infra-red signals on an ESP8266 or an ESP32. -category=Device Control -url=https://github.com/crankyoldgit/IRremoteESP8266 -architectures=esp8266,esp32 diff --git a/lib/IRremoteESP8266-2.7.10/platformio.ini b/lib/IRremoteESP8266-2.7.10/platformio.ini deleted file mode 100644 index 76c2f3b40..000000000 --- a/lib/IRremoteESP8266-2.7.10/platformio.ini +++ /dev/null @@ -1,22 +0,0 @@ -[platformio] -# Default to building IRrecvDumpV2 if not in a specific example directory. -src_dir = examples/IRrecvDumpV2 - -[env] -lib_extra_dirs = . -lib_ldf_mode = deep+ -lib_ignore = examples -framework = arduino -platform = espressif8266 -build_flags = ; -D_IR_LOCALE_=en-AU -monitor_speed = 115200 - -[env:nodemcuv2] -board = nodemcuv2 - -[env:d1_mini] -board = d1_mini - -[env:esp32dev] -platform = espressif32 -board = esp32dev diff --git a/lib/IRremoteESP8266-2.7.10/pylintrc b/lib/IRremoteESP8266-2.7.10/pylintrc deleted file mode 100644 index 987c6abf9..000000000 --- a/lib/IRremoteESP8266-2.7.10/pylintrc +++ /dev/null @@ -1,12 +0,0 @@ -[REPORTS] - -# Tells whether to display a full report or only the messages -reports=no - -[FORMAT] - -# Maximum number of characters on a single line. -max-line-length=80 - -# String used as indentation unit. -indent-string=' ' diff --git a/lib/IRremoteESP8266-2.7.10/src/ir_Delonghi.h b/lib/IRremoteESP8266-2.7.10/src/ir_Delonghi.h deleted file mode 100644 index da3a6f618..000000000 --- a/lib/IRremoteESP8266-2.7.10/src/ir_Delonghi.h +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright 2020 David Conran - -/// @file -/// @brief Delonghi A/C -/// @note Kudos to TheMaxxz For the breakdown and mapping of the bit values. -/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1096 - -// Supports: -// Brand: Delonghi, Model: PAC A95 - -#ifndef IR_DELONGHI_H_ -#define IR_DELONGHI_H_ - -#define __STDC_LIMIT_MACROS -#include -#ifndef UNIT_TEST -#include -#endif -#include "IRremoteESP8266.h" -#include "IRsend.h" -#ifdef UNIT_TEST -#include "IRsend_test.h" -#endif - -/* State bit map: - -+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+------+ -| FIXED HEADER | TEMPERATURE | FAN |F or C| -+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+------+ - 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 - -+--+--+--+--+-----+-----+ -|ON| MODE |Boost|Sleep| -+--+--+--+--+-----+-----+ -16 17 18 19 20 21 - -+--+--+------------+--+--+--+--+--+--+--+--+--+--+--+--+--+ -| 0| 0|Timer Enable| ON TIME HOUR | 0 0| ON TIME MIN | -+--+--+------------+--+--+--+--+--+--+--+--+--+--+--+--+--+ - 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 - -+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ -| 0 0| OFF TIMER | CHECKSUM | -+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ - 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 - -*/ - -// Constants -const uint8_t kDelonghiAcTempOffset = 8; -const uint8_t kDelonghiAcTempSize = 5; -const uint8_t kDelonghiAcTempMinC = 18; // Deg C -const uint8_t kDelonghiAcTempMaxC = 32; // Deg C -const uint8_t kDelonghiAcTempMinF = 64; // Deg F -const uint8_t kDelonghiAcTempMaxF = 90; // Deg F -const uint8_t kDelonghiAcTempAutoDryMode = 0; -const uint8_t kDelonghiAcTempFanMode = 0b00110; -const uint8_t kDelonghiAcFanOffset = kDelonghiAcTempOffset + - kDelonghiAcTempSize; // 13 -const uint8_t kDelonghiAcFanSize = 2; -const uint8_t kDelonghiAcFanAuto = 0b00; -const uint8_t kDelonghiAcFanHigh = 0b01; -const uint8_t kDelonghiAcFanMedium = 0b10; -const uint8_t kDelonghiAcFanLow = 0b11; -const uint8_t kDelonghiAcTempUnitBit = kDelonghiAcFanOffset + - kDelonghiAcFanSize; // 15 (1 = Celsius, 0 = Fahrenheit) -const uint8_t kDelonghiAcPowerBit = kDelonghiAcTempUnitBit + 1; // 16 -const uint8_t kDelonghiAcModeOffset = kDelonghiAcPowerBit + 1; // 17 -const uint8_t kDelonghiAcModeSize = 3; -const uint8_t kDelonghiAcCool = 0b000; -const uint8_t kDelonghiAcDry = 0b001; -const uint8_t kDelonghiAcFan = 0b010; -const uint8_t kDelonghiAcAuto = 0b100; -const uint8_t kDelonghiAcBoostBit = kDelonghiAcModeOffset + - kDelonghiAcModeSize; // 20 (Aka Turbo) -const uint8_t kDelonghiAcSleepBit = kDelonghiAcBoostBit + 1; // 21 -// Two zero bits -const uint8_t kDelonghiAcOnTimerEnableBit = kDelonghiAcSleepBit + 3; // 24 -const uint8_t kDelonghiAcHoursSize = 5; // Max 23 hrs -const uint8_t kDelonghiAcMinsSize = 6; // Max 59 mins -const uint16_t kDelonghiAcTimerMax = 23 * 60 + 59; -const uint8_t kDelonghiAcOnTimerHoursOffset = kDelonghiAcOnTimerEnableBit + - 1; // 25 -const uint8_t kDelonghiAcOnTimerMinsOffset = kDelonghiAcOnTimerHoursOffset + - kDelonghiAcHoursSize + 2; // 32 (inc another two zero bits) -// Two zero bits -const uint8_t kDelonghiAcOffTimerEnableBit = kDelonghiAcOnTimerMinsOffset + - kDelonghiAcMinsSize + 2; // 40 -const uint8_t kDelonghiAcOffTimerHoursOffset = kDelonghiAcOffTimerEnableBit + - 1; // 41 -const uint8_t kDelonghiAcOffTimerMinsOffset = kDelonghiAcOffTimerHoursOffset + - kDelonghiAcHoursSize + 2; // 48 (inc another two zero bits) -// Two zero bits -const uint8_t kDelonghiAcChecksumOffset = kDelonghiAcOffTimerMinsOffset + - kDelonghiAcMinsSize + 2; // 56 -const uint8_t kDelonghiAcChecksumSize = 8; - - -// Classes - -/// Class for handling detailed Delonghi A/C messages. -class IRDelonghiAc { - public: - explicit IRDelonghiAc(const uint16_t pin, const bool inverted = false, - const bool use_modulation = true); - void stateReset(); -#if SEND_DELONGHI_AC - void send(const uint16_t repeat = kDelonghiAcDefaultRepeat); - /// Run the calibration to calculate uSec timing offsets for this platform. - /// @return The uSec timing offset needed per modulation of the IR Led. - /// @note This will produce a 65ms IR signal pulse at 38kHz. - /// Only ever needs to be run once per object instantiation, if at all. - int8_t calibrate(void) { return _irsend.calibrate(); } -#endif // SEND_DELONGHI_AC - void begin(); - static uint8_t calcChecksum(const uint64_t state); - static bool validChecksum(const uint64_t state); - void setPower(const bool on); - bool getPower(); - void on(); - void off(); - void setTempUnit(const bool celsius); - bool getTempUnit(void); - void setTemp(const uint8_t temp, const bool fahrenheit = false, - const bool force = false); - uint8_t getTemp(); - void setFan(const uint8_t speed); - uint8_t getFan(); - void setMode(const uint8_t mode); - uint8_t getMode(); - void setBoost(const bool on); // Aka Turbo - bool getBoost(); // Aka Turbo - void setSleep(const bool on); - bool getSleep(); - void setOnTimerEnabled(const bool on); - bool getOnTimerEnabled(void); - void setOnTimer(const uint16_t nr_of_mins); - uint16_t getOnTimer(void); - void setOffTimerEnabled(const bool on); - bool getOffTimerEnabled(void); - void setOffTimer(const uint16_t nr_of_mins); - uint16_t getOffTimer(void); - uint64_t getRaw(); - void setRaw(const uint64_t state); - uint8_t convertMode(const stdAc::opmode_t mode); - uint8_t convertFan(const stdAc::fanspeed_t speed); - static stdAc::opmode_t toCommonMode(const uint8_t mode); - static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed); - stdAc::state_t toCommon(void); - String toString(); -#ifndef UNIT_TEST - - private: - IRsend _irsend; ///< instance of the IR send class -#else - /// @cond IGNORE - IRsendTest _irsend; ///< instance of the testing IR send class - /// @endcond -#endif - uint64_t remote_state; ///< The state of the IR remote. - uint8_t _saved_temp; ///< The previously user requested temp value. - uint8_t _saved_temp_units; ///< The previously user requested temp units. - void checksum(void); -}; -#endif // IR_DELONGHI_H_ diff --git a/lib/IRremoteESP8266-2.7.10/.github/CONTRIBUTING.md b/lib/IRremoteESP8266-2.7.11/.github/CONTRIBUTING.md similarity index 100% rename from lib/IRremoteESP8266-2.7.10/.github/CONTRIBUTING.md rename to lib/IRremoteESP8266-2.7.11/.github/CONTRIBUTING.md diff --git a/lib/IRremoteESP8266-2.7.10/.github/Contributors.md b/lib/IRremoteESP8266-2.7.11/.github/Contributors.md similarity index 96% rename from lib/IRremoteESP8266-2.7.10/.github/Contributors.md rename to lib/IRremoteESP8266-2.7.11/.github/Contributors.md index 43b681bc4..811bfea84 100644 --- a/lib/IRremoteESP8266-2.7.10/.github/Contributors.md +++ b/lib/IRremoteESP8266-2.7.11/.github/Contributors.md @@ -17,6 +17,7 @@ - [Motea Marius](https://github.com/mariusmotea) - [Mark Kuchel](https://github.com/kuchel77) - [Christian Nilsson](https://github.com/NiKiZe) +- [Zhongxian Li](https://github.com/siriuslzx) All contributors can be found on the [contributors site](https://github.com/crankyoldgit/IRremoteESP8266/graphs/contributors). diff --git a/lib/IRremoteESP8266-2.7.10/.github/issue_template.md b/lib/IRremoteESP8266-2.7.11/.github/issue_template.md similarity index 82% rename from lib/IRremoteESP8266-2.7.10/.github/issue_template.md rename to lib/IRremoteESP8266-2.7.11/.github/issue_template.md index d9b80dab6..f0ecf1fba 100644 --- a/lib/IRremoteESP8266-2.7.10/.github/issue_template.md +++ b/lib/IRremoteESP8266-2.7.11/.github/issue_template.md @@ -23,6 +23,11 @@ e.g. #### Output of raw data from IRrecvDumpV2.ino (if applicable) _Include some raw dumps of what the device saw._ +### What brand/model IR demodulator are you using? +_Brand/Model code_ or _None_ + +_If VS1838b: That is likely your problem. Please buy a better one & try again. Reporting a capture or decode issue when you use one of these is effectively wasting our & your time. See the [FAQ](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Frequently-Asked-Questions#Help_Im_getting_very_inconsistent_results_when_capturing_an_IR_message_using_a_VS1838b_IR_demodulator)_ + ### Steps to reproduce the behavior _What can we do to (pref. reliably) repeat what is happening?_ diff --git a/lib/IRremoteESP8266-2.7.10/docs/README.md b/lib/IRremoteESP8266-2.7.11/docs/README.md similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/README.md rename to lib/IRremoteESP8266-2.7.11/docs/README.md diff --git a/lib/IRremoteESP8266-2.7.10/docs/README_fr.md b/lib/IRremoteESP8266-2.7.11/docs/README_fr.md similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/README_fr.md rename to lib/IRremoteESP8266-2.7.11/docs/README_fr.md diff --git a/lib/IRremoteESP8266-2.7.10/docs/_config.yml b/lib/IRremoteESP8266-2.7.11/docs/_config.yml similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/_config.yml rename to lib/IRremoteESP8266-2.7.11/docs/_config.yml diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/IRac_8cpp.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/IRac_8cpp.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/IRac_8cpp.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/IRac_8cpp.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/IRac_8h.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/IRac_8h.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/IRac_8h.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/IRac_8h.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/IRac_8h_source.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/IRac_8h_source.html similarity index 87% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/IRac_8h_source.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/IRac_8h_source.html index 25336b9b2..a7b1ad1a7 100644 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/IRac_8h_source.html +++ b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/IRac_8h_source.html @@ -103,578 +103,599 @@ $(function() {
32 #include "ir_Sanyo.h"
33 #include "ir_Sharp.h"
34 #include "ir_Tcl.h"
-
35 #include "ir_Teco.h"
-
36 #include "ir_Toshiba.h"
-
37 #include "ir_Trotec.h"
-
38 #include "ir_Vestel.h"
-
39 #include "ir_Voltas.h"
-
40 #include "ir_Whirlpool.h"
-
41 
-
42 // Constants
-
43 const int8_t kGpioUnused = -1;
-
44 
-
45 // Class
-
47 class IRac {
-
48  public:
-
49  explicit IRac(const uint16_t pin, const bool inverted = false,
-
50  const bool use_modulation = true);
-
51  static bool isProtocolSupported(const decode_type_t protocol);
-
52  static void initState(stdAc::state_t *state,
-
53  const decode_type_t vendor, const int16_t model,
-
54  const bool power, const stdAc::opmode_t mode,
-
55  const float degrees, const bool celsius,
-
56  const stdAc::fanspeed_t fan,
-
57  const stdAc::swingv_t swingv,
-
58  const stdAc::swingh_t swingh,
-
59  const bool quiet, const bool turbo, const bool econo,
-
60  const bool light, const bool filter, const bool clean,
-
61  const bool beep, const int16_t sleep,
-
62  const int16_t clock);
-
63  static void initState(stdAc::state_t *state);
-
64  void markAsSent(void);
-
65  bool sendAc(void);
-
66  bool sendAc(const stdAc::state_t desired, const stdAc::state_t *prev = NULL);
-
67  bool sendAc(const decode_type_t vendor, const int16_t model,
-
68  const bool power, const stdAc::opmode_t mode, const float degrees,
-
69  const bool celsius, const stdAc::fanspeed_t fan,
-
70  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
71  const bool quiet, const bool turbo, const bool econo,
-
72  const bool light, const bool filter, const bool clean,
-
73  const bool beep, const int16_t sleep = -1,
-
74  const int16_t clock = -1);
-
75  static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b);
-
76  static bool strToBool(const char *str, const bool def = false);
-
77  static int16_t strToModel(const char *str, const int16_t def = -1);
- -
79  const char *str, const stdAc::opmode_t def = stdAc::opmode_t::kAuto);
- -
81  const char *str,
- - -
84  const char *str, const stdAc::swingv_t def = stdAc::swingv_t::kOff);
- -
86  const char *str, const stdAc::swingh_t def = stdAc::swingh_t::kOff);
-
87  static String boolToString(const bool value);
-
88  static String opmodeToString(const stdAc::opmode_t mode);
-
89  static String fanspeedToString(const stdAc::fanspeed_t speed);
-
90  static String swingvToString(const stdAc::swingv_t swingv);
-
91  static String swinghToString(const stdAc::swingh_t swingh);
- - -
94  bool hasStateChanged(void);
- -
96 #ifndef UNIT_TEST
-
97 
-
98  private:
-
99 #endif
-
100  uint16_t _pin;
-
101  bool _inverted;
-
102  bool _modulation;
- -
104 #if SEND_AIRWELL
-
105  void airwell(IRAirwellAc *ac,
-
106  const bool on, const stdAc::opmode_t mode, const float degrees,
-
107  const stdAc::fanspeed_t fan);
-
108 #endif // SEND_AIRWELL
-
109 #if SEND_AMCOR
-
110  void amcor(IRAmcorAc *ac,
-
111  const bool on, const stdAc::opmode_t mode, const float degrees,
-
112  const stdAc::fanspeed_t fan);
-
113 #endif // SEND_AMCOR
-
114 #if SEND_ARGO
-
115  void argo(IRArgoAC *ac,
-
116  const bool on, const stdAc::opmode_t mode, const float degrees,
-
117  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
118  const bool turbo, const int16_t sleep = -1);
-
119 #endif // SEND_ARGO
-
120 #if SEND_CARRIER_AC64
-
121 void carrier64(IRCarrierAc64 *ac,
-
122  const bool on, const stdAc::opmode_t mode,
-
123  const float degrees, const stdAc::fanspeed_t fan,
-
124  const stdAc::swingv_t swingv, const int16_t sleep = -1);
-
125 #endif // SEND_CARRIER_AC64
-
126 #if SEND_COOLIX
-
127  void coolix(IRCoolixAC *ac,
-
128  const bool on, const stdAc::opmode_t mode, const float degrees,
-
129  const stdAc::fanspeed_t fan,
-
130  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
131  const bool turbo, const bool light, const bool clean,
-
132  const int16_t sleep = -1);
-
133 #endif // SEND_COOLIX
-
134 #if SEND_CORONA_AC
-
135  void corona(IRCoronaAc *ac,
-
136  const bool on, const stdAc::opmode_t mode,
-
137  const float degrees, const stdAc::fanspeed_t fan,
-
138  const stdAc::swingv_t swingv, const bool econo);
-
139 #endif // SEND_CORONA_AC
-
140 #if SEND_DAIKIN
-
141  void daikin(IRDaikinESP *ac,
-
142  const bool on, const stdAc::opmode_t mode, const float degrees,
-
143  const stdAc::fanspeed_t fan,
-
144  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
145  const bool quiet, const bool turbo, const bool econo,
-
146  const bool clean);
-
147 #endif // SEND_DAIKIN
-
148 #if SEND_DAIKIN128
-
149  void daikin128(IRDaikin128 *ac,
-
150  const bool on, const stdAc::opmode_t mode,
-
151  const float degrees, const stdAc::fanspeed_t fan,
-
152  const stdAc::swingv_t swingv,
-
153  const bool quiet, const bool turbo, const bool light,
-
154  const bool econo, const int16_t sleep = -1,
-
155  const int16_t clock = -1);
-
156 #endif // SEND_DAIKIN128
-
157 #if SEND_DAIKIN152
-
158  void daikin152(IRDaikin152 *ac,
-
159  const bool on, const stdAc::opmode_t mode,
-
160  const float degrees, const stdAc::fanspeed_t fan,
-
161  const stdAc::swingv_t swingv,
-
162  const bool quiet, const bool turbo, const bool econo);
-
163 #endif // SEND_DAIKIN152
-
164 #if SEND_DAIKIN160
-
165  void daikin160(IRDaikin160 *ac,
-
166  const bool on, const stdAc::opmode_t mode,
-
167  const float degrees, const stdAc::fanspeed_t fan,
-
168  const stdAc::swingv_t swingv);
-
169 #endif // SEND_DAIKIN160
-
170 #if SEND_DAIKIN176
-
171  void daikin176(IRDaikin176 *ac,
-
172  const bool on, const stdAc::opmode_t mode,
-
173  const float degrees, const stdAc::fanspeed_t fan,
-
174  const stdAc::swingh_t swingh);
-
175 #endif // SEND_DAIKIN176
-
176 #if SEND_DAIKIN2
-
177  void daikin2(IRDaikin2 *ac,
-
178  const bool on, const stdAc::opmode_t mode,
-
179  const float degrees, const stdAc::fanspeed_t fan,
-
180  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
181  const bool quiet, const bool turbo, const bool light,
-
182  const bool econo, const bool filter, const bool clean,
-
183  const bool beep, const int16_t sleep = -1,
-
184  const int16_t clock = -1);
-
185 #endif // SEND_DAIKIN2
-
186 #if SEND_DAIKIN216
-
187 void daikin216(IRDaikin216 *ac,
-
188  const bool on, const stdAc::opmode_t mode,
-
189  const float degrees, const stdAc::fanspeed_t fan,
-
190  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
191  const bool quiet, const bool turbo);
-
192 #endif // SEND_DAIKIN216
-
193 #if SEND_DAIKIN64
-
194  void daikin64(IRDaikin64 *ac,
-
195  const bool on, const stdAc::opmode_t mode,
-
196  const float degrees, const stdAc::fanspeed_t fan,
-
197  const stdAc::swingv_t swingv,
-
198  const bool quiet, const bool turbo,
-
199  const int16_t sleep = -1, const int16_t clock = -1);
-
200 #endif // SEND_DAIKIN64
-
201 #if SEND_DELONGHI_AC
-
202  void delonghiac(IRDelonghiAc *ac,
-
203  const bool on, const stdAc::opmode_t mode, const bool celsius,
-
204  const float degrees, const stdAc::fanspeed_t fan,
-
205  const bool turbo, const int16_t sleep = -1);
-
206 #endif // SEND_DELONGHI_AC
-
207 #if SEND_ELECTRA_AC
-
208 void electra(IRElectraAc *ac,
-
209  const bool on, const stdAc::opmode_t mode,
-
210  const float degrees, const stdAc::fanspeed_t fan,
-
211  const stdAc::swingv_t swingv,
-
212  const stdAc::swingh_t swingh, const bool turbo,
-
213  const bool lighttoggle, const bool clean);
-
214 #endif // SEND_ELECTRA_AC
-
215 #if SEND_FUJITSU_AC
-
216  void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model,
-
217  const bool on, const stdAc::opmode_t mode, const float degrees,
-
218  const stdAc::fanspeed_t fan,
-
219  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
220  const bool quiet, const bool turbo, const bool econo,
-
221  const bool filter, const bool clean);
-
222 #endif // SEND_FUJITSU_AC
-
223 #if SEND_GOODWEATHER
-
224  void goodweather(IRGoodweatherAc *ac,
-
225  const bool on, const stdAc::opmode_t mode,
-
226  const float degrees,
-
227  const stdAc::fanspeed_t fan,
-
228  const stdAc::swingv_t swingv,
-
229  const bool turbo, const bool light,
-
230  const int16_t sleep = -1);
-
231 #endif // SEND_GOODWEATHER
-
232 #if SEND_GREE
-
233  void gree(IRGreeAC *ac, const gree_ac_remote_model_t model,
-
234  const bool on, const stdAc::opmode_t mode, const bool celsius,
-
235  const float degrees, const stdAc::fanspeed_t fan,
-
236  const stdAc::swingv_t swingv, const bool turbo, const bool light,
-
237  const bool clean, const int16_t sleep = -1);
-
238 #endif // SEND_GREE
-
239 #if SEND_HAIER_AC
-
240  void haier(IRHaierAC *ac,
-
241  const bool on, const stdAc::opmode_t mode, const float degrees,
-
242  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
243  const bool filter, const int16_t sleep = -1,
-
244  const int16_t clock = -1);
-
245 #endif // SEND_HAIER_AC
-
246 #if SEND_HAIER_AC_YRW02
-
247  void haierYrwo2(IRHaierACYRW02 *ac,
-
248  const bool on, const stdAc::opmode_t mode,
-
249  const float degrees, const stdAc::fanspeed_t fan,
-
250  const stdAc::swingv_t swingv,
-
251  const bool turbo, const bool filter,
-
252  const int16_t sleep = -1);
-
253 #endif // SEND_HAIER_AC_YRW02
-
254 #if SEND_HITACHI_AC
-
255  void hitachi(IRHitachiAc *ac,
-
256  const bool on, const stdAc::opmode_t mode,
-
257  const float degrees, const stdAc::fanspeed_t fan,
-
258  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
-
259 #endif // SEND_HITACHI_AC
-
260 #if SEND_HITACHI_AC1
-
261  void hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model,
-
262  const bool on, const bool power_toggle,
-
263  const stdAc::opmode_t mode,
-
264  const float degrees, const stdAc::fanspeed_t fan,
-
265  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
266  const bool swing_toggle, const int16_t sleep = -1);
-
267 #endif // SEND_HITACHI_AC1
-
268 #if SEND_HITACHI_AC344
-
269  void hitachi344(IRHitachiAc344 *ac,
-
270  const bool on, const stdAc::opmode_t mode,
-
271  const float degrees, const stdAc::fanspeed_t fan,
-
272  const stdAc::swingv_t swingv,
-
273  const stdAc::swingh_t swingh);
-
274 #endif // SEND_HITACHI_AC344
-
275 #if SEND_HITACHI_AC424
-
276  void hitachi424(IRHitachiAc424 *ac,
-
277  const bool on, const stdAc::opmode_t mode,
-
278  const float degrees, const stdAc::fanspeed_t fan,
-
279  const stdAc::swingv_t swingv);
-
280 #endif // SEND_HITACHI_AC424
-
281 #if SEND_KELVINATOR
-
282  void kelvinator(IRKelvinatorAC *ac,
-
283  const bool on, const stdAc::opmode_t mode,
-
284  const float degrees, const stdAc::fanspeed_t fan,
-
285  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
286  const bool quiet, const bool turbo, const bool light,
-
287  const bool filter, const bool clean);
-
288 #endif // SEND_KELVINATOR
-
289 #if SEND_LG
-
290  void lg(IRLgAc *ac, const lg_ac_remote_model_t model,
-
291  const bool on, const stdAc::opmode_t mode,
-
292  const float degrees, const stdAc::fanspeed_t fan);
-
293 #endif // SEND_LG
-
294 #if SEND_MIDEA
-
295  void midea(IRMideaAC *ac,
-
296  const bool on, const stdAc::opmode_t mode, const bool celsius,
-
297  const float degrees, const stdAc::fanspeed_t fan,
-
298  const stdAc::swingv_t swingv, const bool econo,
-
299  const int16_t sleep = -1);
-
300 #endif // SEND_MIDEA
-
301 #if SEND_MITSUBISHI_AC
-
302  void mitsubishi(IRMitsubishiAC *ac,
-
303  const bool on, const stdAc::opmode_t mode,
-
304  const float degrees,
-
305  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
306  const stdAc::swingh_t swingh,
-
307  const bool quiet, const int16_t clock = -1);
-
308 #endif // SEND_MITSUBISHI_AC
-
309 #if SEND_MITSUBISHI112
- -
311  const bool on, const stdAc::opmode_t mode,
-
312  const float degrees, const stdAc::fanspeed_t fan,
-
313  const stdAc::swingv_t swingv,
-
314  const stdAc::swingh_t swingh,
-
315  const bool quiet);
-
316 #endif // SEND_MITSUBISHI112
-
317 #if SEND_MITSUBISHI136
- -
319  const bool on, const stdAc::opmode_t mode,
-
320  const float degrees, const stdAc::fanspeed_t fan,
-
321  const stdAc::swingv_t swingv, const bool quiet);
-
322 #endif // SEND_MITSUBISHI136
-
323 #if SEND_MITSUBISHIHEAVY
- -
325  const bool on, const stdAc::opmode_t mode,
-
326  const float degrees, const stdAc::fanspeed_t fan,
-
327  const stdAc::swingv_t swingv,
-
328  const stdAc::swingh_t swingh,
-
329  const bool turbo, const bool econo, const bool clean);
- -
331  const bool on, const stdAc::opmode_t mode,
-
332  const float degrees, const stdAc::fanspeed_t fan,
-
333  const stdAc::swingv_t swingv,
-
334  const stdAc::swingh_t swingh,
-
335  const bool quiet, const bool turbo, const bool econo,
-
336  const bool filter, const bool clean,
-
337  const int16_t sleep = -1);
-
338 #endif // SEND_MITSUBISHIHEAVY
-
339 #if SEND_NEOCLIMA
-
340  void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode,
-
341  const float degrees, const stdAc::fanspeed_t fan,
-
342  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
343  const bool turbo, const bool light, const bool filter,
-
344  const int16_t sleep = -1);
-
345 #endif // SEND_NEOCLIMA
-
346 #if SEND_PANASONIC_AC
- -
348  const bool on, const stdAc::opmode_t mode, const float degrees,
-
349  const stdAc::fanspeed_t fan,
-
350  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
351  const bool quiet, const bool turbo, const bool filter,
-
352  const int16_t clock = -1);
-
353 #endif // SEND_PANASONIC_AC
-
354 #if SEND_SAMSUNG_AC
-
355  void samsung(IRSamsungAc *ac,
-
356  const bool on, const stdAc::opmode_t mode, const float degrees,
-
357  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
358  const bool quiet, const bool turbo, const bool light,
-
359  const bool filter, const bool clean,
-
360  const bool beep, const bool prevpower = true,
-
361  const bool forcepower = true);
-
362 #endif // SEND_SAMSUNG_AC
-
363 #if SEND_SANYO_AC
-
364  void sanyo(IRSanyoAc *ac,
-
365  const bool on, const stdAc::opmode_t mode, const float degrees,
-
366  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
367  const bool beep, const int16_t sleep = -1);
-
368 #endif // SEND_SANYO_AC
-
369 #if SEND_SHARP_AC
-
370  void sharp(IRSharpAc *ac,
-
371  const bool on, const bool prev_power, const stdAc::opmode_t mode,
-
372  const float degrees, const stdAc::fanspeed_t fan,
-
373  const stdAc::swingv_t swingv, const bool turbo, const bool filter,
-
374  const bool clean);
-
375 #endif // SEND_SHARP_AC
-
376 #if SEND_TCL112AC
-
377  void tcl112(IRTcl112Ac *ac,
-
378  const bool on, const stdAc::opmode_t mode, const float degrees,
-
379  const stdAc::fanspeed_t fan,
-
380  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
381  const bool turbo, const bool light, const bool econo,
-
382  const bool filter);
-
383 #endif // SEND_TCL112AC
-
384 #if SEND_TECO
-
385  void teco(IRTecoAc *ac,
-
386  const bool on, const stdAc::opmode_t mode, const float degrees,
-
387  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
388  const bool light, const int16_t sleep = -1);
-
389 #endif // SEND_TECO
-
390 #if SEND_TOSHIBA_AC
-
391  void toshiba(IRToshibaAC *ac,
-
392  const bool on, const stdAc::opmode_t mode, const float degrees,
-
393  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
394  const bool turbo, const bool econo);
-
395 #endif // SEND_TOSHIBA_AC
-
396 #if SEND_TROTEC
-
397  void trotec(IRTrotecESP *ac,
-
398  const bool on, const stdAc::opmode_t mode, const float degrees,
-
399  const stdAc::fanspeed_t fan, const int16_t sleep = -1);
-
400 #endif // SEND_TROTEC
-
401 #if SEND_VESTEL_AC
-
402  void vestel(IRVestelAc *ac,
-
403  const bool on, const stdAc::opmode_t mode, const float degrees,
-
404  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
405  const bool turbo, const bool filter,
-
406  const int16_t sleep = -1, const int16_t clock = -1,
-
407  const bool sendNormal = true);
-
408 #endif // SEND_VESTEL_AC
-
409 #if SEND_VOLTAS
-
410  void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model,
-
411  const bool on, const stdAc::opmode_t mode,
-
412  const float degrees, const stdAc::fanspeed_t fan,
-
413  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
414  const bool turbo, const bool econo, const bool light,
-
415  const int16_t sleep = -1);
-
416 #endif // SEND_VOLTAS
-
417 #if SEND_WHIRLPOOL_AC
- -
419  const bool on, const stdAc::opmode_t mode, const float degrees,
-
420  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
421  const bool turbo, const bool light,
-
422  const int16_t sleep = -1, const int16_t clock = -1);
-
423 #endif // SEND_WHIRLPOOL_AC
-
424 static stdAc::state_t cleanState(const stdAc::state_t state);
-
425 static stdAc::state_t handleToggles(const stdAc::state_t desired,
-
426  const stdAc::state_t *prev = NULL);
-
427 }; // IRac class
-
428 
-
430 namespace IRAcUtils {
-
431  String resultAcToString(const decode_results * const results);
-
432  bool decodeToState(const decode_results *decode, stdAc::state_t *result,
-
433  const stdAc::state_t *prev = NULL);
-
434 } // namespace IRAcUtils
-
435 #endif // IRAC_H_
+
35 #include "ir_Technibel.h"
+
36 #include "ir_Teco.h"
+
37 #include "ir_Toshiba.h"
+
38 #include "ir_Transcold.h"
+
39 #include "ir_Trotec.h"
+
40 #include "ir_Vestel.h"
+
41 #include "ir_Voltas.h"
+
42 #include "ir_Whirlpool.h"
+
43 
+
44 // Constants
+
45 const int8_t kGpioUnused = -1;
+
46 
+
47 // Class
+
49 class IRac {
+
50  public:
+
51  explicit IRac(const uint16_t pin, const bool inverted = false,
+
52  const bool use_modulation = true);
+
53  static bool isProtocolSupported(const decode_type_t protocol);
+
54  static void initState(stdAc::state_t *state,
+
55  const decode_type_t vendor, const int16_t model,
+
56  const bool power, const stdAc::opmode_t mode,
+
57  const float degrees, const bool celsius,
+
58  const stdAc::fanspeed_t fan,
+
59  const stdAc::swingv_t swingv,
+
60  const stdAc::swingh_t swingh,
+
61  const bool quiet, const bool turbo, const bool econo,
+
62  const bool light, const bool filter, const bool clean,
+
63  const bool beep, const int16_t sleep,
+
64  const int16_t clock);
+
65  static void initState(stdAc::state_t *state);
+
66  void markAsSent(void);
+
67  bool sendAc(void);
+
68  bool sendAc(const stdAc::state_t desired, const stdAc::state_t *prev = NULL);
+
69  bool sendAc(const decode_type_t vendor, const int16_t model,
+
70  const bool power, const stdAc::opmode_t mode, const float degrees,
+
71  const bool celsius, const stdAc::fanspeed_t fan,
+
72  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
73  const bool quiet, const bool turbo, const bool econo,
+
74  const bool light, const bool filter, const bool clean,
+
75  const bool beep, const int16_t sleep = -1,
+
76  const int16_t clock = -1);
+
77  static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b);
+
78  static bool strToBool(const char *str, const bool def = false);
+
79  static int16_t strToModel(const char *str, const int16_t def = -1);
+ +
81  const char *str, const stdAc::opmode_t def = stdAc::opmode_t::kAuto);
+ +
83  const char *str,
+ + +
86  const char *str, const stdAc::swingv_t def = stdAc::swingv_t::kOff);
+ +
88  const char *str, const stdAc::swingh_t def = stdAc::swingh_t::kOff);
+
89  static String boolToString(const bool value);
+
90  static String opmodeToString(const stdAc::opmode_t mode);
+
91  static String fanspeedToString(const stdAc::fanspeed_t speed);
+
92  static String swingvToString(const stdAc::swingv_t swingv);
+
93  static String swinghToString(const stdAc::swingh_t swingh);
+ + +
96  bool hasStateChanged(void);
+ +
98 #ifndef UNIT_TEST
+
99 
+
100  private:
+
101 #endif
+
102  uint16_t _pin;
+
103  bool _inverted;
+
104  bool _modulation;
+ +
106 #if SEND_AIRWELL
+
107  void airwell(IRAirwellAc *ac,
+
108  const bool on, const stdAc::opmode_t mode, const float degrees,
+
109  const stdAc::fanspeed_t fan);
+
110 #endif // SEND_AIRWELL
+
111 #if SEND_AMCOR
+
112  void amcor(IRAmcorAc *ac,
+
113  const bool on, const stdAc::opmode_t mode, const float degrees,
+
114  const stdAc::fanspeed_t fan);
+
115 #endif // SEND_AMCOR
+
116 #if SEND_ARGO
+
117  void argo(IRArgoAC *ac,
+
118  const bool on, const stdAc::opmode_t mode, const float degrees,
+
119  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
120  const bool turbo, const int16_t sleep = -1);
+
121 #endif // SEND_ARGO
+
122 #if SEND_CARRIER_AC64
+
123 void carrier64(IRCarrierAc64 *ac,
+
124  const bool on, const stdAc::opmode_t mode,
+
125  const float degrees, const stdAc::fanspeed_t fan,
+
126  const stdAc::swingv_t swingv, const int16_t sleep = -1);
+
127 #endif // SEND_CARRIER_AC64
+
128 #if SEND_COOLIX
+
129  void coolix(IRCoolixAC *ac,
+
130  const bool on, const stdAc::opmode_t mode, const float degrees,
+
131  const stdAc::fanspeed_t fan,
+
132  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
133  const bool turbo, const bool light, const bool clean,
+
134  const int16_t sleep = -1);
+
135 #endif // SEND_COOLIX
+
136 #if SEND_CORONA_AC
+
137  void corona(IRCoronaAc *ac,
+
138  const bool on, const stdAc::opmode_t mode,
+
139  const float degrees, const stdAc::fanspeed_t fan,
+
140  const stdAc::swingv_t swingv, const bool econo);
+
141 #endif // SEND_CORONA_AC
+
142 #if SEND_DAIKIN
+
143  void daikin(IRDaikinESP *ac,
+
144  const bool on, const stdAc::opmode_t mode, const float degrees,
+
145  const stdAc::fanspeed_t fan,
+
146  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
147  const bool quiet, const bool turbo, const bool econo,
+
148  const bool clean);
+
149 #endif // SEND_DAIKIN
+
150 #if SEND_DAIKIN128
+
151  void daikin128(IRDaikin128 *ac,
+
152  const bool on, const stdAc::opmode_t mode,
+
153  const float degrees, const stdAc::fanspeed_t fan,
+
154  const stdAc::swingv_t swingv,
+
155  const bool quiet, const bool turbo, const bool light,
+
156  const bool econo, const int16_t sleep = -1,
+
157  const int16_t clock = -1);
+
158 #endif // SEND_DAIKIN128
+
159 #if SEND_DAIKIN152
+
160  void daikin152(IRDaikin152 *ac,
+
161  const bool on, const stdAc::opmode_t mode,
+
162  const float degrees, const stdAc::fanspeed_t fan,
+
163  const stdAc::swingv_t swingv,
+
164  const bool quiet, const bool turbo, const bool econo);
+
165 #endif // SEND_DAIKIN152
+
166 #if SEND_DAIKIN160
+
167  void daikin160(IRDaikin160 *ac,
+
168  const bool on, const stdAc::opmode_t mode,
+
169  const float degrees, const stdAc::fanspeed_t fan,
+
170  const stdAc::swingv_t swingv);
+
171 #endif // SEND_DAIKIN160
+
172 #if SEND_DAIKIN176
+
173  void daikin176(IRDaikin176 *ac,
+
174  const bool on, const stdAc::opmode_t mode,
+
175  const float degrees, const stdAc::fanspeed_t fan,
+
176  const stdAc::swingh_t swingh);
+
177 #endif // SEND_DAIKIN176
+
178 #if SEND_DAIKIN2
+
179  void daikin2(IRDaikin2 *ac,
+
180  const bool on, const stdAc::opmode_t mode,
+
181  const float degrees, const stdAc::fanspeed_t fan,
+
182  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
183  const bool quiet, const bool turbo, const bool light,
+
184  const bool econo, const bool filter, const bool clean,
+
185  const bool beep, const int16_t sleep = -1,
+
186  const int16_t clock = -1);
+
187 #endif // SEND_DAIKIN2
+
188 #if SEND_DAIKIN216
+
189 void daikin216(IRDaikin216 *ac,
+
190  const bool on, const stdAc::opmode_t mode,
+
191  const float degrees, const stdAc::fanspeed_t fan,
+
192  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
193  const bool quiet, const bool turbo);
+
194 #endif // SEND_DAIKIN216
+
195 #if SEND_DAIKIN64
+
196  void daikin64(IRDaikin64 *ac,
+
197  const bool on, const stdAc::opmode_t mode,
+
198  const float degrees, const stdAc::fanspeed_t fan,
+
199  const stdAc::swingv_t swingv,
+
200  const bool quiet, const bool turbo,
+
201  const int16_t sleep = -1, const int16_t clock = -1);
+
202 #endif // SEND_DAIKIN64
+
203 #if SEND_DELONGHI_AC
+
204  void delonghiac(IRDelonghiAc *ac,
+
205  const bool on, const stdAc::opmode_t mode, const bool celsius,
+
206  const float degrees, const stdAc::fanspeed_t fan,
+
207  const bool turbo, const int16_t sleep = -1);
+
208 #endif // SEND_DELONGHI_AC
+
209 #if SEND_ELECTRA_AC
+
210 void electra(IRElectraAc *ac,
+
211  const bool on, const stdAc::opmode_t mode,
+
212  const float degrees, const stdAc::fanspeed_t fan,
+
213  const stdAc::swingv_t swingv,
+
214  const stdAc::swingh_t swingh, const bool turbo,
+
215  const bool lighttoggle, const bool clean);
+
216 #endif // SEND_ELECTRA_AC
+
217 #if SEND_FUJITSU_AC
+
218  void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model,
+
219  const bool on, const stdAc::opmode_t mode, const float degrees,
+
220  const stdAc::fanspeed_t fan,
+
221  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
222  const bool quiet, const bool turbo, const bool econo,
+
223  const bool filter, const bool clean, const int16_t sleep = -1);
+
224 #endif // SEND_FUJITSU_AC
+
225 #if SEND_GOODWEATHER
+
226  void goodweather(IRGoodweatherAc *ac,
+
227  const bool on, const stdAc::opmode_t mode,
+
228  const float degrees,
+
229  const stdAc::fanspeed_t fan,
+
230  const stdAc::swingv_t swingv,
+
231  const bool turbo, const bool light,
+
232  const int16_t sleep = -1);
+
233 #endif // SEND_GOODWEATHER
+
234 #if SEND_GREE
+
235  void gree(IRGreeAC *ac, const gree_ac_remote_model_t model,
+
236  const bool on, const stdAc::opmode_t mode, const bool celsius,
+
237  const float degrees, const stdAc::fanspeed_t fan,
+
238  const stdAc::swingv_t swingv, const bool turbo, const bool light,
+
239  const bool clean, const int16_t sleep = -1);
+
240 #endif // SEND_GREE
+
241 #if SEND_HAIER_AC
+
242  void haier(IRHaierAC *ac,
+
243  const bool on, const stdAc::opmode_t mode, const float degrees,
+
244  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
245  const bool filter, const int16_t sleep = -1,
+
246  const int16_t clock = -1);
+
247 #endif // SEND_HAIER_AC
+
248 #if SEND_HAIER_AC_YRW02
+
249  void haierYrwo2(IRHaierACYRW02 *ac,
+
250  const bool on, const stdAc::opmode_t mode,
+
251  const float degrees, const stdAc::fanspeed_t fan,
+
252  const stdAc::swingv_t swingv,
+
253  const bool turbo, const bool filter,
+
254  const int16_t sleep = -1);
+
255 #endif // SEND_HAIER_AC_YRW02
+
256 #if SEND_HITACHI_AC
+
257  void hitachi(IRHitachiAc *ac,
+
258  const bool on, const stdAc::opmode_t mode,
+
259  const float degrees, const stdAc::fanspeed_t fan,
+
260  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
+
261 #endif // SEND_HITACHI_AC
+
262 #if SEND_HITACHI_AC1
+
263  void hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model,
+
264  const bool on, const bool power_toggle,
+
265  const stdAc::opmode_t mode,
+
266  const float degrees, const stdAc::fanspeed_t fan,
+
267  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
268  const bool swing_toggle, const int16_t sleep = -1);
+
269 #endif // SEND_HITACHI_AC1
+
270 #if SEND_HITACHI_AC344
+
271  void hitachi344(IRHitachiAc344 *ac,
+
272  const bool on, const stdAc::opmode_t mode,
+
273  const float degrees, const stdAc::fanspeed_t fan,
+
274  const stdAc::swingv_t swingv,
+
275  const stdAc::swingh_t swingh);
+
276 #endif // SEND_HITACHI_AC344
+
277 #if SEND_HITACHI_AC424
+
278  void hitachi424(IRHitachiAc424 *ac,
+
279  const bool on, const stdAc::opmode_t mode,
+
280  const float degrees, const stdAc::fanspeed_t fan,
+
281  const stdAc::swingv_t swingv);
+
282 #endif // SEND_HITACHI_AC424
+
283 #if SEND_KELVINATOR
+
284  void kelvinator(IRKelvinatorAC *ac,
+
285  const bool on, const stdAc::opmode_t mode,
+
286  const float degrees, const stdAc::fanspeed_t fan,
+
287  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
288  const bool quiet, const bool turbo, const bool light,
+
289  const bool filter, const bool clean);
+
290 #endif // SEND_KELVINATOR
+
291 #if SEND_LG
+
292  void lg(IRLgAc *ac, const lg_ac_remote_model_t model,
+
293  const bool on, const stdAc::opmode_t mode,
+
294  const float degrees, const stdAc::fanspeed_t fan);
+
295 #endif // SEND_LG
+
296 #if SEND_MIDEA
+
297  void midea(IRMideaAC *ac,
+
298  const bool on, const stdAc::opmode_t mode, const bool celsius,
+
299  const float degrees, const stdAc::fanspeed_t fan,
+
300  const stdAc::swingv_t swingv, const bool econo,
+
301  const int16_t sleep = -1);
+
302 #endif // SEND_MIDEA
+
303 #if SEND_MITSUBISHI_AC
+
304  void mitsubishi(IRMitsubishiAC *ac,
+
305  const bool on, const stdAc::opmode_t mode,
+
306  const float degrees,
+
307  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
308  const stdAc::swingh_t swingh,
+
309  const bool quiet, const int16_t clock = -1);
+
310 #endif // SEND_MITSUBISHI_AC
+
311 #if SEND_MITSUBISHI112
+ +
313  const bool on, const stdAc::opmode_t mode,
+
314  const float degrees, const stdAc::fanspeed_t fan,
+
315  const stdAc::swingv_t swingv,
+
316  const stdAc::swingh_t swingh,
+
317  const bool quiet);
+
318 #endif // SEND_MITSUBISHI112
+
319 #if SEND_MITSUBISHI136
+ +
321  const bool on, const stdAc::opmode_t mode,
+
322  const float degrees, const stdAc::fanspeed_t fan,
+
323  const stdAc::swingv_t swingv, const bool quiet);
+
324 #endif // SEND_MITSUBISHI136
+
325 #if SEND_MITSUBISHIHEAVY
+ +
327  const bool on, const stdAc::opmode_t mode,
+
328  const float degrees, const stdAc::fanspeed_t fan,
+
329  const stdAc::swingv_t swingv,
+
330  const stdAc::swingh_t swingh,
+
331  const bool turbo, const bool econo, const bool clean);
+ +
333  const bool on, const stdAc::opmode_t mode,
+
334  const float degrees, const stdAc::fanspeed_t fan,
+
335  const stdAc::swingv_t swingv,
+
336  const stdAc::swingh_t swingh,
+
337  const bool quiet, const bool turbo, const bool econo,
+
338  const bool filter, const bool clean,
+
339  const int16_t sleep = -1);
+
340 #endif // SEND_MITSUBISHIHEAVY
+
341 #if SEND_NEOCLIMA
+
342  void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode,
+
343  const bool celsius, const float degrees,
+
344  const stdAc::fanspeed_t fan,
+
345  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
346  const bool turbo, const bool econo, const bool light,
+
347  const bool filter, const int16_t sleep = -1);
+
348 #endif // SEND_NEOCLIMA
+
349 #if SEND_PANASONIC_AC
+ +
351  const bool on, const stdAc::opmode_t mode, const float degrees,
+
352  const stdAc::fanspeed_t fan,
+
353  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
354  const bool quiet, const bool turbo, const bool filter,
+
355  const int16_t clock = -1);
+
356 #endif // SEND_PANASONIC_AC
+
357 #if SEND_SAMSUNG_AC
+
358  void samsung(IRSamsungAc *ac,
+
359  const bool on, const stdAc::opmode_t mode, const float degrees,
+
360  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
361  const bool quiet, const bool turbo, const bool light,
+
362  const bool filter, const bool clean,
+
363  const bool beep, const bool prevpower = true,
+
364  const bool forcepower = true);
+
365 #endif // SEND_SAMSUNG_AC
+
366 #if SEND_SANYO_AC
+
367  void sanyo(IRSanyoAc *ac,
+
368  const bool on, const stdAc::opmode_t mode, const float degrees,
+
369  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
370  const bool beep, const int16_t sleep = -1);
+
371 #endif // SEND_SANYO_AC
+
372 #if SEND_SHARP_AC
+
373  void sharp(IRSharpAc *ac,
+
374  const bool on, const bool prev_power, const stdAc::opmode_t mode,
+
375  const float degrees, const stdAc::fanspeed_t fan,
+
376  const stdAc::swingv_t swingv, const bool turbo, const bool filter,
+
377  const bool clean);
+
378 #endif // SEND_SHARP_AC
+
379 #if SEND_TCL112AC
+
380  void tcl112(IRTcl112Ac *ac,
+
381  const bool on, const stdAc::opmode_t mode, const float degrees,
+
382  const stdAc::fanspeed_t fan,
+
383  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
384  const bool turbo, const bool light, const bool econo,
+
385  const bool filter);
+
386 #endif // SEND_TCL112AC
+
387 #if SEND_TECHNIBEL_AC
+
388  void technibel(IRTechnibelAc *ac,
+
389  const bool on, const stdAc::opmode_t mode, const bool celsius,
+
390  const float degrees, const stdAc::fanspeed_t fan,
+
391  const stdAc::swingv_t swingv, const int16_t sleep = -1);
+
392 #endif // SEND_TECHNIBEL_AC
+
393 #if SEND_TECO
+
394  void teco(IRTecoAc *ac,
+
395  const bool on, const stdAc::opmode_t mode, const float degrees,
+
396  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
397  const bool light, const int16_t sleep = -1);
+
398 #endif // SEND_TECO
+
399 #if SEND_TOSHIBA_AC
+
400  void toshiba(IRToshibaAC *ac,
+
401  const bool on, const stdAc::opmode_t mode, const float degrees,
+
402  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
403  const bool turbo, const bool econo);
+
404 #endif // SEND_TOSHIBA_AC
+
405 #if SEND_TROTEC
+
406  void trotec(IRTrotecESP *ac,
+
407  const bool on, const stdAc::opmode_t mode, const float degrees,
+
408  const stdAc::fanspeed_t fan, const int16_t sleep = -1);
+
409 #endif // SEND_TROTEC
+
410 #if SEND_VESTEL_AC
+
411  void vestel(IRVestelAc *ac,
+
412  const bool on, const stdAc::opmode_t mode, const float degrees,
+
413  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
414  const bool turbo, const bool filter,
+
415  const int16_t sleep = -1, const int16_t clock = -1,
+
416  const bool sendNormal = true);
+
417 #endif // SEND_VESTEL_AC
+
418 #if SEND_VOLTAS
+
419  void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model,
+
420  const bool on, const stdAc::opmode_t mode,
+
421  const float degrees, const stdAc::fanspeed_t fan,
+
422  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
423  const bool turbo, const bool econo, const bool light,
+
424  const int16_t sleep = -1);
+
425 #endif // SEND_VOLTAS
+
426 #if SEND_WHIRLPOOL_AC
+ +
428  const bool on, const stdAc::opmode_t mode, const float degrees,
+
429  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
430  const bool turbo, const bool light,
+
431  const int16_t sleep = -1, const int16_t clock = -1);
+
432 #endif // SEND_WHIRLPOOL_AC
+
433 #if SEND_TRANSCOLD
+
434  void transcold(IRTranscoldAc *ac,
+
435  const bool on, const stdAc::opmode_t mode, const float degrees,
+
436  const stdAc::fanspeed_t fan,
+
437  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
+
438 #endif // SEND_TRANSCOLD
+
439 static stdAc::state_t cleanState(const stdAc::state_t state);
+
440 static stdAc::state_t handleToggles(const stdAc::state_t desired,
+
441  const stdAc::state_t *prev = NULL);
+
442 }; // IRac class
+
443 
+
445 namespace IRAcUtils {
+
446  String resultAcToString(const decode_results * const results);
+
447  bool decodeToState(const decode_results *decode, stdAc::state_t *result,
+
448  const stdAc::state_t *prev = NULL);
+
449 } // namespace IRAcUtils
+
450 #endif // IRAC_H_
+ + + +

◆ setOffSleepTimer()

+ +
+
+ + + + + +
+ + + + + + + + +
void IRFujitsuAC::setOffSleepTimer (const uint16_t nr_mins)
+
+private
+
+ +

Set the Off/Sleep Timer time for the A/C.

+
Parameters
+ + +
[in]nr_minsNr. of minutes to set the timer to. 0 means disabled.
+
+
+ +
+
+ +

◆ setOffTimer()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::setOffTimer (const uint16_t nr_mins)
+
+ +

Set the Off Timer time for the A/C.

+
Parameters
+ + +
[in]nr_minsNr. of minutes to set the timer to. 0 means disabled.
+
+
+ +
+
+ +

◆ setOnTimer()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::setOnTimer (const uint16_t nr_mins)
+
+ +

Set the On Timer setting of the A/C.

+
Parameters
+ + +
[in]nr_minsNr. of minutes to set the timer to. 0 means disabled.
+
+
+
@@ -1076,6 +1273,32 @@ Private Attributes
Returns
true, if successful; Otherwise false. (i.e. size check)
+ + + +

◆ setSleepTimer()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::setSleepTimer (const uint16_t nr_mins)
+
+ +

Set the Sleep Timer time for the A/C.

+
Parameters
+ + +
[in]nr_minsNr. of minutes to set the timer to. 0 means disabled.
+
+
+
@@ -1129,6 +1352,32 @@ Private Attributes + + + +

◆ setTimerType()

+ +
+
+ + + + + + + + +
void IRFujitsuAC::setTimerType (const uint8_t timertype)
+
+ +

Set the Timer type of the A/C message.

+
Parameters
+ + +
[in]timertypeThe kind of timer to use for the message.
+
+
+
@@ -1556,6 +1805,50 @@ Private Attributes
+
+ + +

◆ _offtimer

+ +
+
+ + + + + +
+ + + + +
uint16_t IRFujitsuAC::_offtimer
+
+private
+
+ +
+
+ +

◆ _ontimer

+ +
+
+ + + + + +
+ + + + +
uint16_t IRFujitsuAC::_ontimer
+
+private
+
+
@@ -1666,6 +1959,28 @@ Private Attributes
+
+ + +

◆ _timertype

+ +
+
+ + + + + +
+ + + + +
uint8_t IRFujitsuAC::_timertype
+
+private
+
+
diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRFujitsuAC__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRFujitsuAC__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRFujitsuAC__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRFujitsuAC__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRFujitsuAC__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRFujitsuAC__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRFujitsuAC__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRFujitsuAC__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGoodweatherAc-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGoodweatherAc-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGoodweatherAc.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGoodweatherAc.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGreeAC-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGreeAC-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGreeAC-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGreeAC-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGreeAC.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGreeAC.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGreeAC.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGreeAC.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGreeAC__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGreeAC__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGreeAC__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGreeAC__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGreeAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGreeAC__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGreeAC__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGreeAC__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGreeAC__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGreeAC__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRGreeAC__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGreeAC__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierAC-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierAC-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierAC-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierAC-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierAC.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierAC.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierAC.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierAC.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierACYRW02-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierACYRW02-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierACYRW02-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierACYRW02-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierACYRW02.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierACYRW02.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierACYRW02.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierACYRW02.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierAC__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierAC__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierAC__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierAC__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierAC__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierAC__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierAC__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierAC__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierAC__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHaierAC__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierAC__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc1-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc1-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc1.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc1.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc1__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc1__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc1__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc1__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc3-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc3-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc3-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc3-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc3.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc3.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc3.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc3.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344__inherit__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__inherit__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344__inherit__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__inherit__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc3__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc3__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc3__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc3__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc3__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc3__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc3__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc3__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424__inherit__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__inherit__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424__inherit__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__inherit__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRHitachiAc__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRKelvinatorAC-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRKelvinatorAC-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRKelvinatorAC.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRKelvinatorAC.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRLgAc-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRLgAc-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRLgAc.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRLgAc.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRLgAc__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRLgAc__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRLgAc__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRLgAc__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRLgAc__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRLgAc__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMideaAC-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMideaAC-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMideaAC-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMideaAC-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMideaAC.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMideaAC.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMideaAC.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMideaAC.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMideaAC__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMideaAC__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMideaAC__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMideaAC__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMideaAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMideaAC__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMideaAC__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMideaAC__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMideaAC__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMideaAC__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMideaAC__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMideaAC__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi112-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi112-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi112-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi112-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi112.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi112.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi112.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi112.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi112__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi112__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi112__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi112__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi112__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi112__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi112__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi112__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi136-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi136-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi136-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi136-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi136.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi136.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi136.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi136.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi136__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi136__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi136__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi136__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi136__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi136__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishi136__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishi136__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiAC-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiAC-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiAC-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiAC-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiAC.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiAC.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiAC.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiAC.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy152Ac-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy152Ac-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy152Ac-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy152Ac-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5 b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5 similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5 rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5 diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png similarity index 100% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png diff --git a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRNeoclimaAc-members.html b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRNeoclimaAc-members.html similarity index 70% rename from lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRNeoclimaAc-members.html rename to lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRNeoclimaAc-members.html index 1b550bc73..620331bac 100644 --- a/lib/IRremoteESP8266-2.7.10/docs/doxygen/html/classIRNeoclimaAc-members.html +++ b/lib/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRNeoclimaAc-members.html @@ -77,20 +77,22 @@ $(function() { convertMode(const stdAc::opmode_t mode)IRNeoclimaAc get8CHeat(void)IRNeoclimaAc getButton(void)IRNeoclimaAc - getEye(void)IRNeoclimaAc - getFan(void)IRNeoclimaAc - getFollow(void)IRNeoclimaAc - getFresh(void)IRNeoclimaAc - getHold(void)IRNeoclimaAc - getIon(void)IRNeoclimaAc - getLight(void)IRNeoclimaAc - getMode(void)IRNeoclimaAc - getPower(void)IRNeoclimaAc - getRaw(void)IRNeoclimaAc - getSleep(void)IRNeoclimaAc - getSwingH(void)IRNeoclimaAc - getSwingV(void)IRNeoclimaAc - getTemp(void)IRNeoclimaAc + getEcono(void)IRNeoclimaAc + getEye(void)IRNeoclimaAc + getFan(void)IRNeoclimaAc + getFollow(void)IRNeoclimaAc + getFresh(void)IRNeoclimaAc + getHold(void)IRNeoclimaAc + getIon(void)IRNeoclimaAc + getLight(void)IRNeoclimaAc + getMode(void)IRNeoclimaAc + getPower(void)IRNeoclimaAc + getRaw(void)IRNeoclimaAc + getSleep(void)IRNeoclimaAc + getSwingH(void)IRNeoclimaAc + getSwingV(void)IRNeoclimaAc + getTemp(void)IRNeoclimaAc + getTempUnits(void)IRNeoclimaAc getTurbo(void)IRNeoclimaAc IRNeoclimaAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRNeoclimaAcexplicit off(void)IRNeoclimaAc @@ -99,26 +101,27 @@ $(function() { send(const uint16_t repeat=kNeoclimaMinRepeat)IRNeoclimaAc set8CHeat(const bool on)IRNeoclimaAc setButton(const uint8_t button)IRNeoclimaAc - setEye(const bool on)IRNeoclimaAc - setFan(const uint8_t speed)IRNeoclimaAc - setFresh(const bool on)IRNeoclimaAc - setHold(const bool on)IRNeoclimaAc - setIon(const bool on)IRNeoclimaAc - setLight(const bool on)IRNeoclimaAc - setMode(const uint8_t mode)IRNeoclimaAc - setPower(const bool on)IRNeoclimaAc - setRaw(const uint8_t new_code[], const uint16_t length=kNeoclimaStateLength)IRNeoclimaAc - setSleep(const bool on)IRNeoclimaAc - setSwingH(const bool on)IRNeoclimaAc - setSwingV(const bool on)IRNeoclimaAc - setTemp(const uint8_t temp)IRNeoclimaAc - setTurbo(const bool on)IRNeoclimaAc - stateReset(void)IRNeoclimaAc - toCommon(void)IRNeoclimaAc - toCommonFanSpeed(const uint8_t speed)IRNeoclimaAcstatic - toCommonMode(const uint8_t mode)IRNeoclimaAcstatic - toString(void)IRNeoclimaAc - validChecksum(const uint8_t state[], const uint16_t length=kNeoclimaStateLength)IRNeoclimaAcstatic + setEcono(const bool on)IRNeoclimaAc + setEye(const bool on)IRNeoclimaAc + setFan(const uint8_t speed)IRNeoclimaAc + setFresh(const bool on)IRNeoclimaAc + setHold(const bool on)IRNeoclimaAc + setIon(const bool on)IRNeoclimaAc + setLight(const bool on)IRNeoclimaAc + setMode(const uint8_t mode)IRNeoclimaAc + setPower(const bool on)IRNeoclimaAc + setRaw(const uint8_t new_code[], const uint16_t length=kNeoclimaStateLength)IRNeoclimaAc + setSleep(const bool on)IRNeoclimaAc + setSwingH(const bool on)IRNeoclimaAc + setSwingV(const bool on)IRNeoclimaAc + setTemp(const uint8_t temp, const bool celsius=true)IRNeoclimaAc + setTurbo(const bool on)IRNeoclimaAc + stateReset(void)IRNeoclimaAc + toCommon(void)IRNeoclimaAc + toCommonFanSpeed(const uint8_t speed)IRNeoclimaAcstatic + toCommonMode(const uint8_t mode)IRNeoclimaAcstatic + toString(void)IRNeoclimaAc + validChecksum(const uint8_t state[], const uint16_t length=kNeoclimaStateLength)IRNeoclimaAcstatic
T=m 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

aCu52zzthPCWBg4)q()Klj#Y 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�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ٛ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

0n;eUN*P` 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

b(T_GOMJ7Lw8=u#>X8dWF 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�ZL7 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