Just like IRtext.cpp macro for flash strings, this does not make sense in the context
Fixing warnings similar to this
```
.pio/libdeps/d1_mini/IRremoteESP8266/src/IRac.cpp:3272:13: note: in expansion of macro 'STRCASECMP'
3272 | !STRCASECMP(str, kUpStr))
| ^~~~~~~~~~
.pio/libdeps/d1_mini/IRremoteESP8266/src/IRac.cpp: In static member function 'static stdAc::swingh_t IRac::strToSwingH(const char*, stdAc::swingh_t)':
.pio/libdeps/d1_mini/IRremoteESP8266/src/IRac.cpp:59:23: warning: type qualifiers ignored on cast result type [-Wignored-qualifiers]
59 | strcasecmp_P(LHS, reinterpret_cast<const char* const>(RHS))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
* As far as we can tell COOLIX48 is a subtle version of `COOLIX` but does not obey the "every second byte is inverted" verification pattern. Thus, COOLIX48 is twice the bit size of COOLIX (24 bits).
* This seems to be used by a Bosch A/C to transmite On & Off timer values.
* Update & Extend Coolix Unit tests to cover this.
* Other minor code style changes.
Fixes#1694
Seems the experimental Arduino support for the ESP32-C3 is a bit more finicky than the other environments.
Work around those issues by forcing the compiler to chose the correct `std::min()` & `std::max()` routines by casting the arguments.
Fixes#1695
* Added support for reading i-SAVE mode from a remote for Mitsubishi MSZ-FHnnVE A/C
* Added mode modes which is supported by MZS-FH series. (unknown if existing in other series):
- I-See mode
- Absense Detect mode
- Ecocool mode
- Natural Flow mode
* Add `setFilter()` & `getFilter()`.
* Add filter support for Toshiba in `IRAc` class.
* Minor code style/formating cleanup.
* Update & add unit tests for code coverage and verification.
Fixes#1692
* Add checksum verification to `decodeAirton()`.
* Add detailed support for Airton AC's via `IRAirtonAc` class.
- Power
- Temp
- Mode
- Fan Speed
- SwingV
- LED/Light/Display
- Health/Filter
- Turbo
- Econo/Eco
- Sleep
* Add `AIRTON` to `IRac` common API.
* Add unit test coverage for new changes.
H/T to @PtilopsisLeucotis for working out the checksum alg. Kudos!
Fixes#1670
## _v2.8.0 (20211119)_
**[Bug Fixes]**
- Fix compilation issue when using old 8266 Arduino Frameworks. (#1639#1640)
- Fix potential security issue with `scrape_supported_devices.py` (#1616#1619)
**[Features]**
- SAMSUNG_AC
- Change `clean` setting to a toggle. (#1676#1677)
- Highest fan speed is available without Powerful setting. (#1675#1678)
- Change `beep` setting to a toggle. (#1669#1671)
- Fix Beep for AR12TXEAAWKNEU (#1668#1669)
- Add support for Horizontal Swing & Econo (#1277#1667)
- Add support for On, Off, & Sleep Timers (#1277#1662)
- Fix power control. Clean-up code & bitmaps from Checksum changes. (#1277#1648#1650)
- HAIER_AC176/HAIER_AC_YRW02
- Add support A/B unit setting (#1672)
- Add support degree Fahrenheit (#1659)
- Add support `Lock` function (#1652)
- Implement horizontal swing feature (#1641)
- Implement Quiet setting. (#1634#1635)
- Basic support for Airton Protocol (#1670#1681)
- HAIER_AC176: Add Turbo and Quiet settings (#1634)
- Gree: Add `SwingH` & `Econo` control. (#1587#1653)
- MIRAGE
- Add experimental detailed support. (#1573#1615)
- Experimental detailed support for KKG29A-C1 remote. (#1573#1660)
- ELECTRA_AC: Add support for "IFeel" & Sensor settings. (#1644#1645)
- Add Russian translation (#1649)
- Add Swedish translation (#1627)
- Reduce flash space used. (#1633)
- Strings finally in Flash! (#1493#1614#1623)
- Add support for Rhoss Idrowall MPCV 20-30-35-40 A/C protocol (#1630)
- Make `IRAc::opmodeToString()` output nicer for humans. (#1613)
- TCL112AC/TEKNOPOINT: Add support for `GZ055BE1` model (#1486#1602)
- Support for Arris protocol. (#1598)
- SharpAc: Allow position control of SwingV (#1590#1594)
**[Misc]**
- HAIER_AC176/HAIER_AC_YRW02
- Replace some magic numbers with constants (#1679)
- Small fix `Quiet` and `Turbo` test (#1674)
- Fix `IRHaierAC176::getTemp()` return value description (#1663)
- Security Policy creation and changes. (#1616#1617#1618#1621#1680)
- IRrecvDumpV2/3: Update PlatformIO envs for missing languages (#1661)
- IRMQTTServer
- Use the correct string for Fan mode in Home Assistant. (#1610#1657)
- Move a lot of the strings/text to flash. (#1638)
- Minor code style improvements. (#1656)
- Update Supported Devices
- HAIER_AC176 (#1673)
- LG A/C (#1651#1655)
- Symphony (#1603#1605)
- Epson (#1574#1601)
- GREE (#1587#1588)
- SharpAc (#1590#1591)
- Add extra tests for LG2 protocol (#1654)
- Fix parameter expansion in several macros.
- Move some strings to `IRtext.cpp` & `locale/default.h` (#1637)
- RHOSS: Move include and defines to their correct places (#1636)
- Make makefile only build required files when running `run-%` target (#1632)
- Update Portuguese translation (#1628)
- Add possibility to run specific test case (#1625)
- Change `googletest` library ignore (#1626)
- Re-work "Fan Only" strings & matching. (#1610)
- Address `C0209` pylint warnings. (#1608)
Original `SECURITY.md` has been moved to the `gh-pages` branch so it shows up only on the web, not in the git branch itself.
Per #1618 & #1617 it was moved because only release packages may contain old details, and this way there is only one canonical location/copy etc.
Fixes#1617Fixes#1618
* [HAIER_AC176/HAIER_AC_YRW02] Add support A/B unit setting
* Add `model` parameter in `IRac::haier176()`
* Add `Model` parameter in `IRHaierAC176` state
* Add `getModel()` and `setModel()` methods
* Bump heap size for `toString()` method
* Update `toString()` and `modelToStr()` methods
* Rename `Button` from `kHaierAcYrw02ButtonCF` to `kHaierAcYrw02ButtonCFAB`
* Add new and update related tests
* Update swing functions to work with both vertical & horizontal.
* Add Econo setting control.
* Add extra bit related to sleep timer mode.
* Extend & update unit tests.
* Remove old/redundant TODOs.
* Move some internal constants to the .cpp file.
* Bump string allocation in `toString()`.
For https://github.com/crankyoldgit/IRremoteESP8266/issues/1277#issuecomment-962655308
* Add `(set|get)SwingHorizontal()` & `(set|get)Econo()` methods.
* Integrate into `IRac` class.
* Update unit tests etc.
* Fix typo in supported brand name.
For #1587
* Merge Powerful & Breeze bit settings.
* Add basics for setting and decoding On, Off, & Sleep timers in extended messages.
* Unit testing for timer functions.
* Remove optional checksum calcs from `send()` & `sendExtended()` since checksums now work fine.
* Improve logic for when an Extended Message needs to be sent.
* Add `sleep` support for SamsungAc to `IRac`.
* Change some parameters/variable names to better suiting names.
* Update supported devices.
Fixes#1277
* Remove "signature" checks, as they were flat out wrong. We were trying to use the checksum as a fixed signature. This caused some messages to fail to decode on the ESP.
* Add second location for Power setting that was missing.
- Fixes Power Off problems.
* Streamline some code.
* Clean up some code style formatting.
* Remove bad assumptions of bits that controlled settings that were actually located in the checksum bytes.
* Write a huge unit test to simulate and verify the code in Issue #1648 should do the correct thing.
Fixes#1648
Ref #1277
`Lock` used to lock buttons on IR remote to prevent unintended operations.
* Add `getLock()` and `setLock()` methods
* Increase from 4 to 5 bits button's code in `HaierAc176Protocol`
* Add `Timer` and `Lock` button's codes
* Update tests
* Add `(set|get)IFeel()`, `(set|get)SensorTemp()`, & `(set|get)SensorUpdate()` methods.
* Add and update Unit test coverage.
For #1644
Co-Authored-By: @Aculeasis
* Add detailed support for:
- Power
- Temp
- Fan speed
- Turbo
- Clock
- Sleep
- Light
- SwingV
* Unit test coverage for what we have so far.
* Update `IRac` class.
* Enforce checksum verification for the protocol.
* Update supported devices.
Fixes#1573
* Rename Swing to SwingV for vertical swing
* Add horisontal swing feature
* Update and add unit tests
* Increase heap size for `IRHaierAC::toString()`
* Try to add backward compatibility to older 8266 Arduino frameworks
* Add code comments to document why this has been done.
* Doesn't seem to be required as of 3.0.0 of the ESP8266 Arduino Framework/platform code.
- The fix doesn't seem to hurt either way. 🤷Fixes#1639
Co-authored-by: @jimmys01
* Instead of using Global Ram, move a lot of the strings to Flash, thus freeing up the more valuable ram.
* Minor code style clean-ups.
* Disable use of the Power Command topic in the discovery message when MQTT_CLIENT_HA_MODE is enabled.
* Version bump to v1.6.0.
Saves about ~3.8k of Ram for the cost of about 0.2k of extra Flash & Binary size on the ESP8266 platform.
Tested on an ESP8266 NodeMCU and d1_mini.
* Move all string literals from `IRac.cpp` to `IRtext.cpp` & locale.
* Move some string literals out of `IRutils.cpp`
- Move out some strings/reuse flash strings.
- Add missing `ARREW4E` to `strToModel()`
- Minor code style/formatting changes.
* Add `addToggleToString()` helper routine
Remove duplicate code & strings and replace with new routine.
* Add `__FlashStringHelper*` versions of some string handling methods (ESP8266 Only)
For what ever reason (probably saved `String` conversions) this reduces the Flash usage by ~5K.
e.g.
IRrecvDumpV2:
- Before:
RAM: [==== ] 35.5% (used 29072 bytes from 81920 bytes)
Flash: [==== ] 35.8% (used 373421 bytes from 1044464 bytes)
- After:
RAM: [==== ] 35.5% (used 29072 bytes from 81920 bytes)
Flash: [==== ] 35.3% (used 368397 bytes from 1044464 bytes)
H/T to @mcspr for the idea.
Confirmed working on a NodeMCU running IRrecvDumpV2.
Finally convince the compiler to store the text strings into flash.
Saves approx 2k of Global ram, for a trade-off of between ~0-0.5k of extra flash space used.
e.g. _(updated)_
* IRMQTTServer example code:
- Before:
RAM: [===== ] 54.1% (used 44344 bytes from 81920 bytes)
Flash: [===== ] 54.2% (used 566209 bytes from 1044464 bytes)
Bin file size = 570368
- After:
RAM: [===== ] 51.3% (used 41992 bytes from 81920 bytes)
Flash: [===== ] 54.2% (used 566201 bytes from 1044464 bytes)
Bin file size = 570352
* IRrecvDumpV2 example code:
- Before:
RAM: [==== ] 37.9% (used 31044 bytes from 81920 bytes)
Flash: [==== ] 35.6% (used 372025 bytes from 1044464 bytes)
Bin file size = 376176
- After:
RAM: [==== ] 35.5% (used 29072 bytes from 81920 bytes)
Flash: [==== ] 35.7% (used 372525 bytes from 1044464 bytes)
Bin file size = 376672
Fixes#1614Fixes#1493
Co-authored with @mcspr