diff --git a/README.md b/README.md
index 5498e3fd9..c9c7de7d6 100644
--- a/README.md
+++ b/README.md
@@ -9,8 +9,8 @@
This library enables you to **send _and_ receive** infra-red signals on an [ESP8266](https://github.com/esp8266/Arduino) or an
[ESP32](https://github.com/espressif/arduino-esp32) using the [Arduino framework](https://www.arduino.cc/) using common 940nm IR LEDs and common IR receiver modules. e.g. TSOP{17,22,24,36,38,44,48}* demodulators etc.
-## v2.7.16 Now Available
-Version 2.7.16 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes.
+## v2.7.17 Now Available
+Version 2.7.17 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes.
#### Upgrading from pre-v2.0
Usage of the library has been slightly changed in v2.0. You will need to change your usage to work with v2.0 and beyond. You can read more about the changes required on our [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page.
diff --git a/README_de.md b/README_de.md
index adf6363d5..5dec1e89a 100644
--- a/README_de.md
+++ b/README_de.md
@@ -9,8 +9,8 @@
Diese Programmbibliothek ermöglicht das **Senden _und_ Empfangen** von Infrarotsignalen mit [ESP8266](https://github.com/esp8266/Arduino)- und
[ESP32](https://github.com/espressif/arduino-esp32)-Mikrocontrollern mithilfe des [Arduino-Frameworks](https://www.arduino.cc/) und handelsüblichen 940nm Infrarot-LEDs undIR-Empfängermodulen, wie zum Beispiel TSOP{17,22,24,36,38,44,48}*-Demodulatoren.
-## v2.7.16 jetzt verfügbar
-Version 2.7.16 der Bibliothek ist nun [verfügbar](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Die [Versionshinweise](ReleaseNotes.md) enthalten alle wichtigen Neuerungen.
+## v2.7.17 jetzt verfügbar
+Version 2.7.17 der Bibliothek ist nun [verfügbar](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Die [Versionshinweise](ReleaseNotes.md) enthalten alle wichtigen Neuerungen.
#### Hinweis für Nutzer von Versionen vor v2.0
Die Benutzung der Bibliothek hat sich mit Version 2.0 leicht geändert. Einige Anpassungen im aufrufenden Code werden nötig sein, um mit Version ab 2.0 korrekt zu funktionieren. Mehr zu den Anpassungen finden sich auf unserer [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0)-Seite.
diff --git a/README_fr.md b/README_fr.md
index 58c06eb9d..1cbb62cfb 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -9,8 +9,8 @@
Cette librairie vous permetra de **recevoir et d'envoyer des signaux** infrarouge sur le protocole [ESP8266](https://github.com/esp8266/Arduino) ou sur le protocole
[ESP32](https://github.com/espressif/arduino-esp32) en utilisant le [Arduino framework](https://www.arduino.cc/) qui utilise la norme 940nm IR LEDs et le module basique de reception d'onde IR. Exemple : TSOP{17,22,24,36,38,44,48}* modules etc.
-## v2.7.16 disponible
-Version 2.7.16 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants.
+## v2.7.17 disponible
+Version 2.7.17 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants.
#### mise à jour depuis pre-v2.0
L'utilisation de la librairie à un peu changer depuis la version in v2.0. Si vous voulez l'utiliser vous devrez changer votre utilisation aussi. Vous pouvez vous renseigner sur les précondition d'utilisation ici : [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page.
diff --git a/ReleaseNotes.md b/ReleaseNotes.md
index 451df9ced..7f4a255aa 100644
--- a/ReleaseNotes.md
+++ b/ReleaseNotes.md
@@ -1,5 +1,19 @@
# Release Notes
+## _v2.7.17 (20210418)_
+**[News]**
+- The library now supports 100 IR protocols! \o/
+
+**[Bug Fixes]**
+- Fix `IRAcUtils::decodeToState()` for different length Samsung msgs (#1447 #1448)
+
+**[Features]**
+- Fujitsu: Add support for `ARREW4E` model. (#1455 #1456)
+- Experimental detailed support for Truma A/Cs. (#1440 #1449)
+
+**[Misc]**
+- Fix Arduino library linter issues. (#1451 #1452 #1453 #1460)
+
## _v2.7.16 (20210324)_
**[Features]**
diff --git a/SupportedProtocols.md b/SupportedProtocols.md
index eb16650fc..f150f8b4d 100644
--- a/SupportedProtocols.md
+++ b/SupportedProtocols.md
@@ -1,6 +1,6 @@
+ Last generated: Sat 17 Apr 2021 22:14:32 +0000 --->
# IR Protocols supported by this library
| Protocol | Brand | Model | A/C Model | Detailed A/C Support |
@@ -28,8 +28,8 @@
| [EliteScreens](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_EliteScreens.cpp) | **Elite Screens** | CineTension2 / CineTension3 series
Home2 / Home3 series
Spectrum series
VMAX Plus4 series
VMAX2 / VMAX2 Plus series
ZSP-IR-B / ZSP-IR-W remote | | - |
| [EliteScreens](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_EliteScreens.cpp) | **Lumene Screens** | Embassy | | - |
| [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 (ARRAH2E)
AR-DB1 remote (ARDB1)
AR-DL10 remote (ARDB1)
AR-RAC1E remote (ARRAH2E)
AR-RAE1E remote (ARRAH2E)
AR-RAH1U remote (ARREB1E)
AR-RAH2E remote (ARRAH2E)
AR-REB1E remote (ARREB1E)
AR-RY4 remote (ARRY4)
AST9RSGCW A/C (ARDB1)
ASTB09LBC A/C (ARRY4)
ASU12RLF A/C (ARREB1E)
ASU30C1 A/C (ARDB1)
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)** | AOHG09LLC A/C (ARRAH2E)
AR-JW2 remote (ARJW2)
AR-RCE1E remote (ARRAH2E)
ASHG09LLCA A/C (ARRAH2E) | ARDB1
ARJW2
ARRAH2E
ARREB1E
ARRY4 | Yes |
+| [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 (ARRAH2E)
AR-DB1 remote (ARDB1)
AR-DL10 remote (ARDB1)
AR-RAC1E remote (ARRAH2E)
AR-RAE1E remote (ARRAH2E)
AR-RAH1U remote (ARREB1E)
AR-RAH2E remote (ARRAH2E)
AR-REB1E remote (ARREB1E)
AR-REW4E remote (ARREW4E)
AR-RY4 remote (ARRY4)
AST9RSGCW A/C (ARDB1)
ASTB09LBC A/C (ARRY4)
ASU12RLF A/C (ARREB1E)
ASU30C1 A/C (ARDB1)
ASYG09KETA-B A/C (ARREW4E)
ASYG30LFCA A/C (ARRAH2E)
ASYG7LMCA A/C (ARREB1E) | ARDB1
ARJW2
ARRAH2E
ARREB1E
ARREW4E
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)** | AOHG09LLC A/C (ARRAH2E)
AR-JW2 remote (ARJW2)
AR-RCE1E remote (ARRAH2E)
ASHG09LLCA A/C (ARRAH2E) | ARDB1
ARJW2
ARRAH2E
ARREB1E
ARREW4E
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 |
@@ -98,6 +98,7 @@
| [Transcold](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Transcold.cpp) | **[Transcold](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Transcold.h)** | M1-F-NO-6 A/C | | 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 |
+| [Truma](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Truma.cpp) | **[Truma](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Truma.h)** | 40091-86700 remote
Aventa 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 |
@@ -205,6 +206,7 @@
- TOSHIBA_AC
- TRANSCOLD
- TROTEC
+- TRUMA
- VESTEL_AC
- VOLTAS
- WHIRLPOOL_AC
diff --git a/keywords.txt b/keywords.txt
index 34d2defb4..c0da1e286 100644
--- a/keywords.txt
+++ b/keywords.txt
@@ -67,6 +67,7 @@ IRTecoAc KEYWORD1
IRToshibaAC KEYWORD1
IRTranscoldAc KEYWORD1
IRTrotecESP KEYWORD1
+IRTrumaAc KEYWORD1
IRVestelAc KEYWORD1
IRVoltas KEYWORD1
IRWhirlpoolAc KEYWORD1
@@ -260,6 +261,7 @@ decodeToState KEYWORD2
decodeToshibaAC KEYWORD2
decodeTranscold KEYWORD2
decodeTrotec KEYWORD2
+decodeTruma KEYWORD2
decodeVestelAc KEYWORD2
decodeVoltas KEYWORD2
decodeWhirlpoolAC KEYWORD2
@@ -301,6 +303,7 @@ fanspeedToString KEYWORD2
fixChecksum KEYWORD2
fixup KEYWORD2
fujitsu KEYWORD2
+get10CHeat KEYWORD2
get3D KEYWORD2
get8CHeat KEYWORD2
getBeep KEYWORD2
@@ -309,6 +312,7 @@ getBoost KEYWORD2
getBreeze KEYWORD2
getBufSize KEYWORD2
getButton KEYWORD2
+getCelsius KEYWORD2
getClean KEYWORD2
getClock KEYWORD2
getCmd KEYWORD2
@@ -337,6 +341,7 @@ getHealth KEYWORD2
getHold KEYWORD2
getHumid KEYWORD2
getIFeel KEYWORD2
+getId KEYWORD2
getInternalStateLength KEYWORD2
getIon KEYWORD2
getIonFilter KEYWORD2
@@ -596,6 +601,7 @@ sendTeco KEYWORD2
sendToshibaAC KEYWORD2
sendTranscold KEYWORD2
sendTrotec KEYWORD2
+sendTruma KEYWORD2
sendVestelAc KEYWORD2
sendVoltas KEYWORD2
sendWhirlpoolAC KEYWORD2
@@ -603,6 +609,7 @@ sendWhynter KEYWORD2
sendXmp KEYWORD2
sendZepeal KEYWORD2
serialPrintUint64 KEYWORD2
+set10CHeat KEYWORD2
set3D KEYWORD2
set8CHeat KEYWORD2
setAuto KEYWORD2
@@ -612,6 +619,7 @@ setBits KEYWORD2
setBoost KEYWORD2
setBreeze KEYWORD2
setButton KEYWORD2
+setCelsius KEYWORD2
setClean KEYWORD2
setClock KEYWORD2
setCmd KEYWORD2
@@ -639,6 +647,7 @@ setHealth KEYWORD2
setHold KEYWORD2
setHumid KEYWORD2
setIFeel KEYWORD2
+setId KEYWORD2
setInvertedStates KEYWORD2
setIon KEYWORD2
setIonFilter KEYWORD2
@@ -740,6 +749,7 @@ toggleSwingVert KEYWORD2
toshiba KEYWORD2
transcold KEYWORD2
trotec KEYWORD2
+truma KEYWORD2
typeToString KEYWORD2
uint64ToString KEYWORD2
uint8ToBcd KEYWORD2
@@ -794,6 +804,7 @@ ARGO_MIN_TEMP LITERAL1
ARJW2 LITERAL1
ARRAH2E LITERAL1
ARREB1E LITERAL1
+ARREW4E LITERAL1
ARRY4 LITERAL1
CARRIER_AC LITERAL1
CARRIER_AC40 LITERAL1
@@ -910,6 +921,7 @@ DECODE_TECO LITERAL1
DECODE_TOSHIBA_AC LITERAL1
DECODE_TRANSCOLD LITERAL1
DECODE_TROTEC LITERAL1
+DECODE_TRUMA LITERAL1
DECODE_VESTEL_AC LITERAL1
DECODE_VOLTAS LITERAL1
DECODE_WHIRLPOOL_AC LITERAL1
@@ -1249,6 +1261,7 @@ SEND_TECO LITERAL1
SEND_TOSHIBA_AC LITERAL1
SEND_TRANSCOLD LITERAL1
SEND_TROTEC LITERAL1
+SEND_TRUMA LITERAL1
SEND_VESTEL_AC LITERAL1
SEND_VOLTAS LITERAL1
SEND_WHIRLPOOL_AC LITERAL1
@@ -1294,6 +1307,7 @@ TROTEC_FAN_MED LITERAL1
TROTEC_MAX_TEMP LITERAL1
TROTEC_MAX_TIMER LITERAL1
TROTEC_MIN_TEMP LITERAL1
+TRUMA LITERAL1
UNKNOWN LITERAL1
UNUSED LITERAL1
USE_IRAM_ATTR LITERAL1
@@ -1306,6 +1320,7 @@ XMP LITERAL1
YAW1F LITERAL1
YBOFB LITERAL1
ZEPEAL LITERAL1
+k10CHeatStr LITERAL1
k3DStr LITERAL1
k6thSenseStr LITERAL1
k8CHeatStr LITERAL1
@@ -1927,6 +1942,7 @@ kFujitsuAcCmdToggleSwingHoriz LITERAL1
kFujitsuAcCmdToggleSwingVert LITERAL1
kFujitsuAcCmdTurnOff LITERAL1
kFujitsuAcCmdTurnOn LITERAL1
+kFujitsuAcExtraTolerance LITERAL1
kFujitsuAcFanAuto LITERAL1
kFujitsuAcFanHigh LITERAL1
kFujitsuAcFanLow LITERAL1
@@ -1935,10 +1951,12 @@ kFujitsuAcFanQuiet LITERAL1
kFujitsuAcHdrMark LITERAL1
kFujitsuAcHdrSpace LITERAL1
kFujitsuAcMaxTemp LITERAL1
+kFujitsuAcMaxTempF LITERAL1
kFujitsuAcMinBits LITERAL1
kFujitsuAcMinGap LITERAL1
kFujitsuAcMinRepeat LITERAL1
kFujitsuAcMinTemp LITERAL1
+kFujitsuAcMinTempF LITERAL1
kFujitsuAcModeAuto LITERAL1
kFujitsuAcModeCool LITERAL1
kFujitsuAcModeDry LITERAL1
@@ -1955,6 +1973,8 @@ kFujitsuAcSwingBoth LITERAL1
kFujitsuAcSwingHoriz LITERAL1
kFujitsuAcSwingOff LITERAL1
kFujitsuAcSwingVert LITERAL1
+kFujitsuAcTempOffsetC LITERAL1
+kFujitsuAcTempOffsetF LITERAL1
kFujitsuAcTimerMax LITERAL1
kFujitsuAcZeroSpace LITERAL1
kGicableBitMark LITERAL1
@@ -2248,6 +2268,7 @@ kHourStr LITERAL1
kHoursStr LITERAL1
kHumidStr LITERAL1
kIFeelStr LITERAL1
+kIdStr LITERAL1
kIdleState LITERAL1
kInaxBitMark LITERAL1
kInaxBits LITERAL1
@@ -3364,6 +3385,27 @@ kTrotecOneSpace LITERAL1
kTrotecStateLength LITERAL1
kTrotecZeroSpace LITERAL1
kTrueStr LITERAL1
+kTrumaAuto LITERAL1
+kTrumaBits LITERAL1
+kTrumaChecksumInit LITERAL1
+kTrumaCool LITERAL1
+kTrumaDefaultState LITERAL1
+kTrumaFan LITERAL1
+kTrumaFanHigh LITERAL1
+kTrumaFanLow LITERAL1
+kTrumaFanMed LITERAL1
+kTrumaFanQuiet LITERAL1
+kTrumaFooterMark LITERAL1
+kTrumaGap LITERAL1
+kTrumaHdrMark LITERAL1
+kTrumaLdrMark LITERAL1
+kTrumaLdrSpace LITERAL1
+kTrumaMaxTemp LITERAL1
+kTrumaMinTemp LITERAL1
+kTrumaOneMark LITERAL1
+kTrumaSpace LITERAL1
+kTrumaTempOffset LITERAL1
+kTrumaZeroMark LITERAL1
kTurboStr LITERAL1
kTurboToggleStr LITERAL1
kTypeStr LITERAL1
diff --git a/library.json b/library.json
index 3511813e9..d32cdcfea 100644
--- a/library.json
+++ b/library.json
@@ -1,6 +1,6 @@
{
"name": "IRremoteESP8266",
- "version": "2.7.16",
+ "version": "2.7.17",
"keywords": "infrared, ir, remote, esp8266, esp32",
"description": "Send and receive infrared signals with multiple protocols (ESP8266/ESP32)",
"repository":
diff --git a/library.properties b/library.properties
index e05c80fbc..96561ed8b 100644
--- a/library.properties
+++ b/library.properties
@@ -1,5 +1,5 @@
name=IRremoteESP8266
-version=2.7.16
+version=2.7.17
author=David Conran, Sebastien Warin, Mark Szabo, Ken Shirriff
maintainer=David Conran, Mark Szabo, Sebastien Warin, Roi Dayan, Massimiliano Pinto, Christian Nilsson
sentence=Send and receive infrared signals with multiple protocols (ESP8266/ESP32)
diff --git a/src/IRremoteESP8266.h b/src/IRremoteESP8266.h
index 1391601de..10471eade 100644
--- a/src/IRremoteESP8266.h
+++ b/src/IRremoteESP8266.h
@@ -52,7 +52,7 @@
#endif // UNIT_TEST
// Library Version
-#define _IRREMOTEESP8266_VERSION_ "2.7.16"
+#define _IRREMOTEESP8266_VERSION_ "2.7.17"
// Set the language & locale for the library. See the `locale` dir for options.
#ifndef _IR_LOCALE_