Merge branch 'development' into teleinfo

This commit is contained in:
Charles 2020-08-10 12:37:01 +02:00
commit 611d504c3e
1579 changed files with 247688 additions and 26540 deletions

View File

@ -6,7 +6,7 @@
- [ ] The pull request is done against the latest dev branch
- [ ] Only relevant files were touched
- [ ] Only one feature/fix was added per PR.
- [ ] The code change is tested and works on core ESP8266 V.2.7.1
- [ ] The code change is tested and works on Tasmota core ESP8266 V.2.7.3.2
- [ ] The code change is tested and works on core ESP32 V.1.12.2
- [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla).

View File

@ -110,6 +110,21 @@ jobs:
- name: Run PlatformIO
run: platformio run -e tasmota-ir
tasmota-zbbridge:
runs-on: ubuntu-latest
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
tasmota-BG:
runs-on: ubuntu-latest
steps:

View File

@ -207,6 +207,28 @@ jobs:
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
@ -1482,6 +1504,7 @@ jobs:
[ ! -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/

View File

@ -29,7 +29,7 @@
| USE_HOTPLUG | - | - | - | - | - | - | - |
| | | | | | | | |
| Feature or Sensor | minimal | lite | tasmota | knx | sensors | ir | display | Remarks
| ROTARY_V1 | - | - | - | - | - | - | - |
| ROTARY_V1 | - | - | x | - | x | - | - |
| USE_SONOFF_RF | - | - | x | x | x | - | - |
| USE_RF_FLASH | - | - | x | x | x | - | - |
| USE_SONOFF_SC | - | - | x | x | x | - | - |
@ -70,10 +70,10 @@
| USE_LE01MR | - | - | - | - | - | - | - |
| USE_TELEINFO | - | - | - | - | - | - | - |
| | | | | | | | |
| USE_ADC_VCC | x | x | - | - | - | - | - |
| USE_COUNTER | - | - | x | x | x | x | x |
| USE_DS18x20 | - | - | x | x | x | x | x |
| USE_DHT | - | - | x | x | x | x | x |
| USE_ADC_VCC | x | x | - | - | - | x | - |
| USE_COUNTER | - | - | x | x | x | - | x |
| USE_DS18x20 | - | - | x | x | x | - | x |
| USE_DHT | - | - | x | x | x | - | x |
| USE_MAX31855 | - | - | - | - | x | - | - |
| USE_MAX31865 | - | - | - | - | - | - | - |
| USE_THERMOSTAT | - | - | - | - | - | - | - |
@ -148,6 +148,8 @@
| USE_NRF24 | - | - | - | - | - | - | - |
| USE_MIBLE | - | - | - | - | - | - | - |
| USE_ZIGBEE | - | - | - | - | - | - | - |
| USE_ZIGBEE_ZNP | - | - | - | - | - | - | - |
| USE_ZIGBEE_EZSP | - | - | - | - | - | - | - | Sonoff ZbBridge
| | | | | | | | |
| USE_IR_REMOTE | - | - | x | x | x | x | x |
| USE_IR_RECEIVE | - | - | x | x | x | x | x |

View File

@ -1,14 +1,14 @@
![Tasmota logo](https://github.com/arendst/Tasmota/blob/development/tools/logo/TASMOTA_FullLogo_Vector.svg)
Alternative firmware for [ESP8266](https://en.wikipedia.org/wiki/ESP8266) based devices with **easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX**.
_Written for Arduino IDE and PlatformIO._
_Written for PlatformIO with limited support for Arduino IDE._
[![GitHub version](https://img.shields.io/github/release/arendst/Tasmota.svg)](https://github.com/arendst/Tasmota/releases/latest)
[![GitHub download](https://img.shields.io/github/downloads/arendst/Tasmota/total.svg)](https://github.com/arendst/Tasmota/releases/latest)
[![License](https://img.shields.io/github/license/arendst/Tasmota.svg)](LICENSE.txt)
[![Chat](https://img.shields.io/discord/479389167382691863.svg)](https://discord.gg/Ks2Kzd4)
If you like **Tasmota**, give it a star, or fork it and contribute!
If you like **Tasmota**, give it a star, or fork it and contribute!
[![GitHub stars](https://img.shields.io/github/stars/arendst/Tasmota.svg?style=social&label=Star)](https://github.com/arendst/Tasmota/stargazers)
[![GitHub forks](https://img.shields.io/github/forks/arendst/Tasmota.svg?style=social&label=Fork)](https://github.com/arendst/Tasmota/network)
@ -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.3.x.x-blue.svg)](https://github.com/arendst/Tasmota)
[![Dev Version](https://img.shields.io/badge/development%20version-v8.4.x.x-blue.svg)](https://github.com/arendst/Tasmota)
[![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://thehackbox.org/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)

View File

@ -2,81 +2,82 @@
The following hardware modules are supported.
Module | Description
------------------|-----------------------
01 Sonoff Basic | Sonoff Basic Wifi Smart Switch
02 Sonoff RF | Sonoff RF Wifi Smart Switch with RF (434MHz) receiver
03 Sonoff SV | Sonoff SV Safe Voltage Wifi Smart Switch
04 Sonoff TH | Sonoff TH10/TH16 Wifi Smart Switch with Sensor connection
05 Sonoff Dual | Sonoff Dual Wifi Smart Switch
06 Sonoff Pow | Sonoff Pow Wifi Smart Switch with Energy Monitoring
07 Sonoff 4CH | Sonoff 4CH 4-gang Wifi Smart Switch
08 Sonoff S2X | Sonoff S20/S26 Wifi Smart Socket
09 Slampher | Sonoff Slampher Wifi Smart Light Bulb Socket with RF (434MHz) receiver
10 Sonoff Touch | Sonoff Touch Wifi Light Switch
11 Sonoff LED | Sonoff Led Wifi Led Pack (Retired)
12 1 Channel | 1 Channel Inching/Self Locking Wifi Switch 5V/12V
13 4 Channel | 4 Channel Inching/Self Locking Wifi Switch (Retired)
14 Motor C/AC | Motor Clockwise/Antoclockwise Wifi Switch (Retired)
15 ElectroDragon | Electrodragon Wifi IoT Board
16 EXS Relay(s) | Electronic Experience Store 1 or 2-gang Wifi Module
17 WiOn | WiOn Wifi Smart Socket
18 Generic | Any ESP8266/ESP8285 device like WeMos and NodeMCU
19 Sonoff Dev | Sonoff Dev Wifi Development Board
20 H801 | H801 Wifi 5 Channel LED Controller
21 Sonoff SC | Sonoff SC Wifi Environmental Monitor
22 Sonoff BN-SZ | Sonoff BN-SZ01 Wifi Ceiling Led (Retired)
23 Sonoff 4CH Pro | Sonoff 4CH Pro 4-gang Wifi Smart Switch
24 Huafan SS | HuaFan Wifi Smart Socket
25 Sonoff Bridge | Sonoff RF (434MHz) transceive to Wifi Bridge
26 Sonoff B1 | Sonoff B1 Wifi RGBWW Led Bulb
27 AiLight | Ai-Thinker RGBW Led Bulb
28 Sonoff T1 1CH | Sonoff T1 1-gang Wifi Light Switch
29 Sonoff T1 2CH | Sonoff T1 2-gang Wifi Light Switch
30 Sonoff T1 3CH | Sonoff T1 3-gang Wifi Light Switch
31 Supla Espablo | 2-gang Wifi Module
32 Witty Cloud | Witty Cloud ESP8266 Wifi Development Board
33 Yunshan Relay | ESP8266 Wifi Network Relay Module
34 MagicHome | MagicHome, Flux-light and some Arilux LC10 RGB(W) Led Controller
35 Luani HVIO | Luani ESP8266 Wifi I/O Module
36 KMC 70011 | KMC Wifi Smart Socket with Energy Monitoring
37 Arilux LC01 | Arilux AL-LC01 RGB Led Controller
38 Arilux LC11 | Arilux AL-LC11 RGBWW Led Controller
39 Sonoff Dual R2 | Sonoff Dual R2 Wifi Smart Switch
40 Arilux LC06 | Arilux AL-LC06 RGB(WW) Led Controller
41 Sonoff S31 | Sonoff S31 Wifi Smart Socket with Energy Monitoring
42 Zengge WF017 | Zengge WF017 Wifi RGB(W) Led Controller
43 Sonoff Pow R2 | Sonoff Pow R2 Wifi Smart Switch with Energy Monitoring
44 Sonoff iFan02 | Sonoff iFan02 Wifi Smart Ceiling Fan with Light
45 BlitzWolf SHP | BlitzWolf BW-SHP2, BW-SHP6, HomeCube SP1, Gosund SP111, Teckin SP22 Wifi Smart Switch with Energy Monitoring
46 Shelly 1 | Shelly 1 Open Source Wifi Relay Module
47 Shelly 2 | Shelly 2 Wifi 2-gang Relay Module with Energy Monitoring
48 Xiaomi Philips | Xiaomi Philips Wifi WW Led Bulb
49 Neo Coolcam | Neo Coolcam Wifi Smart Socket
50 ESP Switch | ESP Switch 4-gang Wifi Switch with Leds
51 OBI Socket | OBI Wifi Smart Socket
52 Teckin | Teckin SP22 Wifi Smart Switch with Energy Monitoring
53 AplicWDP303075 | Aplic WDP 303075 CSL Wifi Smart Switch with Energy Monitoring
54 TuyaMCU | Devices with an MCU using Tuya communication protocol for control
55 Gosund SP1 v23 | Gosund SP1 v2.3 Wifi Smart Switch with Energy Monitoring
56 ARMTR Dimmer | ARMtronix Wifi dimmer for Incandescent Lights and Led
57 SK03 Outdoor | SK03 Outdoor Wifi Smart Switch with Energy Monitoring
58 PS-16-DZ | PS-16-DZ Wifi dimmer for Incandescent Lights and Led
59 Teckin US | Teckin SP20 and ZooZee SA102 Wifi Smart Switch with Energy Monitoring
60 Manzoku strip | Manzoku Wifi Smart Power Strip with four Relays
61 OBI Socket 2 | OBI 2 Wifi Smart Socket
62 YTF IR Bridge | YTF Universal IR Bridge
63 Digoo DG-SP202 | Digoo DG-SP202 Dual Wifi Smart Switch with Energy Monitoring
64 KA10 | Smanergy KA10 Wifi Smart Wall Switch with Energy Monitoring
65 Luminea ZX2820 | Luminea ZX2820 Wifi Smart Switch with Energy Monitoring
66 Mi Desk Lamp | Mi Desk Lamp with rotary switch and Wifi
67 SP10 | Tuya SP10 Wifi Smart Switch with Energy Monitoring
68 WAGA CHCZ02MB | WAGA life CHCZ02MB Wifi Smart Switch with Energy Monitoring
69 SYF05 | Sunyesmart SYF05 RGBWW Wifi Led Bulb
70 Sonoff L1 | Sonoff L1 light strip
71 Sonoff iFan03 | Sonoff iFan03 Wifi Smart Ceiling Fan with Light
72 EXS Dimmer | EXS Wifi Dimmer v4
73 PWM Dimmer | Martin Jerry/acenx/Tessan/NTONPOWER SD0x PWM Dimmer Switches
74 Sonoff D1 | Sonoff D1 Wifi and RF Dimmer
Module | Description
-------------------|-----------------------
01 Sonoff Basic | Sonoff Basic Wifi Smart Switch
02 Sonoff RF | Sonoff RF Wifi Smart Switch with RF (434MHz) receiver
03 Sonoff SV | Sonoff SV Safe Voltage Wifi Smart Switch
04 Sonoff TH | Sonoff TH10/TH16 Wifi Smart Switch with Sensor connection
05 Sonoff Dual | Sonoff Dual Wifi Smart Switch
06 Sonoff Pow | Sonoff Pow Wifi Smart Switch with Energy Monitoring
07 Sonoff 4CH | Sonoff 4CH 4-gang Wifi Smart Switch
08 Sonoff S2X | Sonoff S20/S26 Wifi Smart Socket
09 Slampher | Sonoff Slampher Wifi Smart Light Bulb Socket with RF (434MHz) receiver
10 Sonoff Touch | Sonoff Touch Wifi Light Switch
11 Sonoff LED | Sonoff Led Wifi Led Pack (Retired)
12 1 Channel | 1 Channel Inching/Self Locking Wifi Switch 5V/12V
13 4 Channel | 4 Channel Inching/Self Locking Wifi Switch (Retired)
14 Motor C/AC | Motor Clockwise/Antoclockwise Wifi Switch (Retired)
15 ElectroDragon | Electrodragon Wifi IoT Board
16 EXS Relay(s) | Electronic Experience Store 1 or 2-gang Wifi Module
17 WiOn | WiOn Wifi Smart Socket
18 Generic | Any ESP8266/ESP8285 device like WeMos and NodeMCU
19 Sonoff Dev | Sonoff Dev Wifi Development Board
20 H801 | H801 Wifi 5 Channel LED Controller
21 Sonoff SC | Sonoff SC Wifi Environmental Monitor
22 Sonoff BN-SZ | Sonoff BN-SZ01 Wifi Ceiling Led (Retired)
23 Sonoff 4CH Pro | Sonoff 4CH Pro 4-gang Wifi Smart Switch
24 Huafan SS | HuaFan Wifi Smart Socket
25 Sonoff Bridge | Sonoff RF (434MHz) transceive to Wifi Bridge
26 Sonoff B1 | Sonoff B1 Wifi RGBWW Led Bulb
27 AiLight | Ai-Thinker RGBW Led Bulb
28 Sonoff T1 1CH | Sonoff T1 1-gang Wifi Light Switch
29 Sonoff T1 2CH | Sonoff T1 2-gang Wifi Light Switch
30 Sonoff T1 3CH | Sonoff T1 3-gang Wifi Light Switch
31 Supla Espablo | 2-gang Wifi Module
32 Witty Cloud | Witty Cloud ESP8266 Wifi Development Board
33 Yunshan Relay | ESP8266 Wifi Network Relay Module
34 MagicHome | MagicHome, Flux-light and some Arilux LC10 RGB(W) Led Controller
35 Luani HVIO | Luani ESP8266 Wifi I/O Module
36 KMC 70011 | KMC Wifi Smart Socket with Energy Monitoring
37 Arilux LC01 | Arilux AL-LC01 RGB Led Controller
38 Arilux LC11 | Arilux AL-LC11 RGBWW Led Controller
39 Sonoff Dual R2 | Sonoff Dual R2 Wifi Smart Switch
40 Arilux LC06 | Arilux AL-LC06 RGB(WW) Led Controller
41 Sonoff S31 | Sonoff S31 Wifi Smart Socket with Energy Monitoring
42 Zengge WF017 | Zengge WF017 Wifi RGB(W) Led Controller
43 Sonoff Pow R2 | Sonoff Pow R2 Wifi Smart Switch with Energy Monitoring
44 Sonoff iFan02 | Sonoff iFan02 Wifi Smart Ceiling Fan with Light
45 BlitzWolf SHP | BlitzWolf BW-SHP2, BW-SHP6, HomeCube SP1, Gosund SP111, Teckin SP22 Wifi Smart Switch with Energy Monitoring
46 Shelly 1 | Shelly 1 Open Source Wifi Relay Module
47 Shelly 2 | Shelly 2 Wifi 2-gang Relay Module with Energy Monitoring
48 Xiaomi Philips | Xiaomi Philips Wifi WW Led Bulb
49 Neo Coolcam | Neo Coolcam Wifi Smart Socket
50 ESP Switch | ESP Switch 4-gang Wifi Switch with Leds
51 OBI Socket | OBI Wifi Smart Socket
52 Teckin | Teckin SP22 Wifi Smart Switch with Energy Monitoring
53 AplicWDP303075 | Aplic WDP 303075 CSL Wifi Smart Switch with Energy Monitoring
54 TuyaMCU | Devices with an MCU using Tuya communication protocol for control
55 Gosund SP1 v23 | Gosund SP1 v2.3 Wifi Smart Switch with Energy Monitoring
56 ARMTR Dimmer | ARMtronix Wifi dimmer for Incandescent Lights and Led
57 SK03 Outdoor | SK03 Outdoor Wifi Smart Switch with Energy Monitoring
58 PS-16-DZ | PS-16-DZ Wifi dimmer for Incandescent Lights and Led
59 Teckin US | Teckin SP20 and ZooZee SA102 Wifi Smart Switch with Energy Monitoring
60 Manzoku strip | Manzoku Wifi Smart Power Strip with four Relays
61 OBI Socket 2 | OBI 2 Wifi Smart Socket
62 YTF IR Bridge | YTF Universal IR Bridge
63 Digoo DG-SP202 | Digoo DG-SP202 Dual Wifi Smart Switch with Energy Monitoring
64 KA10 | Smanergy KA10 Wifi Smart Wall Switch with Energy Monitoring
65 Luminea ZX2820 | Luminea ZX2820 Wifi Smart Switch with Energy Monitoring
66 Mi Desk Lamp | Mi Desk Lamp with rotary switch and Wifi
67 SP10 | Tuya SP10 Wifi Smart Switch with Energy Monitoring
68 WAGA CHCZ02MB | WAGA life CHCZ02MB Wifi Smart Switch with Energy Monitoring
69 SYF05 | Sunyesmart SYF05 RGBWW Wifi Led Bulb
70 Sonoff L1 | Sonoff L1 light strip
71 Sonoff iFan03 | Sonoff iFan03 Wifi Smart Ceiling Fan with Light
72 EXS Dimmer | EXS Wifi Dimmer v4
73 PWM Dimmer | Martin Jerry/acenx/Tessan/NTONPOWER SD0x PWM Dimmer Switches
74 Sonoff D1 | Sonoff D1 Wifi and RF Dimmer
75 Sonoff ZbBridge | Sonoff Zigbee bridge
Over 1000 additional devices are supported using [templates](TEMPLATES.md).
Over 1400 additional devices are supported using [templates](TEMPLATES.md).

View File

@ -1,14 +1,16 @@
![Tasmota logo](/tools/logo/TASMOTA_FullLogo_Vector.svg)
Alternative firmware for [ESP8266](https://en.wikipedia.org/wiki/ESP8266) based devices with **easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX**.
_Written for Arduino IDE and PlatformIO._
_Written for PlatformIO with limited support for Arduino IDE._
[![GitHub version](https://img.shields.io/github/release/arendst/Tasmota.svg)](https://github.com/arendst/Tasmota/releases/latest)
[![GitHub download](https://img.shields.io/github/downloads/arendst/Tasmota/total.svg)](https://github.com/arendst/Tasmota/releases/latest)
[![License](https://img.shields.io/github/license/arendst/Tasmota.svg)](LICENSE.txt)
[![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")
If you like **Tasmota**, give it a star, or fork it and contribute!
If you like **Tasmota**, give it a star, or fork it and contribute!
[![GitHub stars](https://img.shields.io/github/stars/arendst/Tasmota.svg?style=social&label=Star)](https://github.com/arendst/Tasmota/stargazers)
[![GitHub forks](https://img.shields.io/github/forks/arendst/Tasmota.svg?style=social&label=Fork)](https://github.com/arendst/Tasmota/network)
@ -20,7 +22,7 @@ In addition to the [release webpage](https://github.com/arendst/Tasmota/releases
## Development
[![Dev Version](https://img.shields.io/badge/development%20version-v8.3.x.x-blue.svg)](https://github.com/arendst/Tasmota)
[![Dev Version](https://img.shields.io/badge/development%20version-v8.4.x.x-blue.svg)](https://github.com/arendst/Tasmota)
[![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://thehackbox.org/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)

View File

@ -21,9 +21,9 @@ While fallback or downgrading is common practice it was never supported due to S
## Supported Core versions
This release will be supported from ESP8266/Arduino library Core version **2.7.1** due to reported security and stability issues on previous Core version. This will also support gzipped binaries.
This release will be supported from ESP8266/Arduino library Core version **2.7.2.1** due to reported security and stability issues on previous Core version. This will also support gzipped binaries.
Although it might still compile on previous Core versions all support will be removed in the near future.
Support of Core versions before 2.7.1 has been removed.
## Support of TLS
@ -35,7 +35,7 @@ For initial configuration this release supports Webserver based **WifiManager**
## Provided Binary Downloads
The following binary downloads have been compiled with ESP8266/Arduino library core version **2.7.1**.
The following binary downloads have been compiled with ESP8266/Arduino library core version **2.7.2.1**.
- **tasmota.bin** = The Tasmota version with most drivers. **RECOMMENDED RELEASE BINARY**
- **tasmota-BG.bin** to **tasmota-TW.bin** = The Tasmota version in different languages.
@ -44,6 +44,7 @@ The following binary downloads have been compiled with ESP8266/Arduino library c
- **tasmota-sensors.bin** = The Sensors version adds more useful sensors.
- **tasmota-ir** = The InfraRed Receiver and transmitter version allowing all available protocols provided by library IRremoteESP8266 but without most other features.
- **tasmota-display.bin** = The Display version without Energy Monitoring but adds display support.
- **tasmota-zbbridge.bin** = The dedicated Sonoff Zigbee Bridge version.
- **tasmota-minimal.bin** = The Minimal version allows intermediate OTA uploads to support larger versions and does NOT change any persistent parameter. This version **should NOT be used for initial installation**.
[List](MODULES.md) of embedded modules.
@ -52,39 +53,8 @@ The following binary downloads have been compiled with ESP8266/Arduino library c
## Changelog
### Version 8.3.1.6
### Version 8.4.0.1
- Change IRremoteESP8266 library updated to v2.7.7
- Change Adafruit_SGP30 library from v1.0.3 to v1.2.0 (#8519)
- Change Energy JSON Total field from ``"Total":[33.736,11.717,16.978]`` to ``"Total":33.736,"TotalTariff":[11.717,16.978]``
- Change Energy JSON ExportActive field from ``"ExportActive":[33.736,11.717,16.978]`` to ``"ExportActive":33.736,"ExportTariff":[11.717,16.978]``
- Change ESP32 USER GPIO template representation decreasing template message size
- Change define USE_TASMOTA_SLAVE into USE_TASMOTA_CLIENT
- Change commands ``SlaveSend`` and ``SlaveReset`` into ``ClientSend`` and ``ClientReset``
- Fix escape of non-JSON received serial data (#8329)
- Add command ``Rule0`` to change global rule parameters
- Add command ``Time 4`` to display timestamp using milliseconds (#8537)
- Add command ``SetOption94 0/1`` to select MAX31855 or MAX6675 thermocouple support (#8616)
- Add command ``Module2`` to configure fallback module on fast reboot (#8464)
- Add commands ``LedPwmOn 0..255``, ``LedPwmOff 0..255`` and ``LedPwmMode1 0/1`` to control led brightness by George (#8491)
- Add ESP32 ethernet commands ``EthType 0/1``, ``EthAddress 0..31`` and ``EthClockMode 0..3``
- Add support for unique MQTTClient (and inherited fallback topic) by full Mac address using ``mqttclient DVES_%12X`` (#8300)
- Add more functionality to ``Switchmode`` 11 and 12 (#8450)
- Add wildcard pattern ``?`` for JSON matching in rules
- Add support for VEML6075 UVA/UVB/UVINDEX Sensor by device111 (#8432)
- Add support for VEML7700 Ambient light intensity Sensor by device111 (#8432)
- Add Three Phase Export Active Energy to SDM630 driver
- Add Zigbee options to ``ZbSend`` to write and report attributes
- Add Zigbee auto-responder for common attributes
- Add ``CpuFrequency`` to ``status 2``
- Add ``FlashFrequency`` to ``status 4``
- Add support for up to two BH1750 sensors controlled by commands ``BH1750Resolution`` and ``BH1750MTime`` (#8139)
- Add support for up to eight MCP9808 temperature sensors by device111 (#8594)
- Add support for BL0940 energy monitor as used in Blitzwolf BW-SHP10 (#8175)
- Add initial support for Telegram bot (#8619)
- Add support for HP303B Temperature and Pressure sensor by Robert Jaakke (#8638)
- Add rule trigger ``System#Init`` to allow early rule execution without wifi and mqtt initialized yet
- Add support for Energy sensor (Denky) for French Smart Metering meter provided by global Energy Providers, need a adaptater. See dedicated full [blog](http://hallard.me/category/tinfo/) about French teleinformation stuff
- Add Library to be used for decoding Teleinfo (French Metering Smart Meter)
- Add basic support for ESP32 ethernet adding commands ``Wifi 0/1`` and ``Ethernet 0/1`` both default ON
- Add support for single wire LMT01 temperature Sensor by justifiably (#8713)
- Fix ESP32 PWM range
- Add Zigbee better support for IKEA Motion Sensor
- Add ESP32 Analog input support for GPIO32 to GPIO39

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,6 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x180000,
app1, app, ota_1, 0x190000, 0x180000,
ffat, data, fat, 0x310000,0x0F0000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x180000
5 app1 app ota_1 0x190000 0x180000
6 ffat data fat 0x310000 0x0F0000

View File

@ -0,0 +1,6 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x1F0000,
app1, app, ota_1, 0x200000, 0x1F0000,
ffat, data, fat, 0x3F0000,0xC10000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x1F0000
5 app1 app ota_1 0x200000 0x1F0000
6 ffat data fat 0x3F0000 0xC10000

0
lib/A4988_Stepper/README.adoc Executable file → Normal file
View File

0
lib/A4988_Stepper/library.properties Executable file → Normal file
View File

0
lib/AT24C256/Eeprom24C128_256.cpp Executable file → Normal file
View File

0
lib/AT24C256/Eeprom24C128_256.h Executable file → Normal file
View File

View File

@ -72,7 +72,7 @@ void Adafruit_SH1106::DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font) {
//}
}
int16_t Adafruit_SH1106::Begin(int16_t p1,int16_t p2,int16_t p3) {
void Adafruit_SH1106::Begin(int16_t p1,int16_t p2,int16_t p3) {
begin(p1,p2,p3);
}

View File

@ -144,7 +144,7 @@ class Adafruit_SH1106 : public Renderer {
void DisplayOnff(int8_t on);
void DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font);
int16_t Begin(int16_t p1,int16_t p2,int16_t p3);
void Begin(int16_t p1,int16_t p2,int16_t p3);
void Updateframe();
void dim(uint8_t contrast);

View File

@ -0,0 +1,602 @@
/***************************************************
This is a library for the ST7789 IPS SPI display.
Originally written by Limor Fried/Ladyada for
Adafruit Industries.
Modified by Ananev Ilia
****************************************************/
#include "Arduino_ST7789.h"
#include <limits.h>
#include "pins_arduino.h"
#include "wiring_private.h"
#include <SPI.h>
const uint16_t ST7789_colors[]={ST7789_BLACK,ST7789_WHITE,ST7789_RED,ST7789_GREEN,ST7789_BLUE,ST7789_CYAN,ST7789_MAGENTA,\
ST7789_YELLOW,ST7789_NAVY,ST7789_DARKGREEN,ST7789_DARKCYAN,ST7789_MAROON,ST7789_PURPLE,ST7789_OLIVE,\
ST7789_LIGHTGREY,ST7789_DARKGREY,ST7789_ORANGE,ST7789_GREENYELLOW,ST7789_PINK};
#ifdef ESP32
#define ST7789_DIMMER
#endif
uint16_t Arduino_ST7789::GetColorFromIndex(uint8_t index) {
if (index>=sizeof(ST7789_colors)/2) index=0;
return ST7789_colors[index];
}
static const uint8_t PROGMEM
cmd_240x240[] = { // Initialization commands for 7789 screens
10, // 9 commands in list:
ST7789_SWRESET, ST_CMD_DELAY, // 1: Software reset, no args, w/delay
150, // 150 ms delay
ST7789_SLPOUT , ST_CMD_DELAY, // 2: Out of sleep mode, no args, w/delay
255, // 255 = 500 ms delay
ST7789_COLMOD , 1+ST_CMD_DELAY, // 3: Set color mode, 1 arg + delay:
0x55, // 16-bit color
10, // 10 ms delay
ST7789_MADCTL , 1, // 4: Memory access ctrl (directions), 1 arg:
0x00, // Row addr/col addr, bottom to top refresh
ST7789_CASET , 4, // 5: Column addr set, 4 args, no delay:
0x00, ST7789_240x240_XSTART, // XSTART = 0
(ST7789_TFTWIDTH+ST7789_240x240_XSTART) >> 8,
(ST7789_TFTWIDTH+ST7789_240x240_XSTART) & 0xFF, // XEND = 240
ST7789_RASET , 4, // 6: Row addr set, 4 args, no delay:
0x00, ST7789_240x240_YSTART, // YSTART = 0
(ST7789_TFTHEIGHT+ST7789_240x240_YSTART) >> 8,
(ST7789_TFTHEIGHT+ST7789_240x240_YSTART) & 0xFF, // YEND = 240
ST7789_INVON , ST_CMD_DELAY, // 7: Inversion ON
10,
ST7789_NORON , ST_CMD_DELAY, // 8: Normal display on, no args, w/delay
10, // 10 ms delay
ST7789_DISPON , ST_CMD_DELAY, // 9: Main screen turn on, no args, w/delay
255 }; // 255 = 500 ms delay
inline uint16_t swapcolor(uint16_t x) {
return (x << 11) | (x & 0x07E0) | (x >> 11);
}
#if defined (SPI_HAS_TRANSACTION)
static SPISettings mySPISettings;
#elif defined (__AVR__) || defined(CORE_TEENSY)
static uint8_t SPCRbackup;
static uint8_t mySPCR;
#endif
#if defined (SPI_HAS_TRANSACTION)
#define SPI_BEGIN_TRANSACTION() if (_hwSPI) SPI.beginTransaction(mySPISettings)
#define SPI_END_TRANSACTION() if (_hwSPI) SPI.endTransaction()
#else
#define SPI_BEGIN_TRANSACTION() (void)
#define SPI_END_TRANSACTION() (void)
#endif
// Constructor when using software SPI. All output pins are configurable.
Arduino_ST7789::Arduino_ST7789(int8_t dc, int8_t rst, int8_t sid, int8_t sclk, int8_t cs, int8_t bp)
: Renderer(ST7789_TFTWIDTH, ST7789_TFTHEIGHT)
{
_cs = cs;
_dc = dc;
_sid = sid;
_sclk = sclk;
_rst = rst;
_hwSPI = false;
_bp = bp;
if(dc == -1) _SPI9bit = true;
else _SPI9bit = false;
}
// Constructor when using hardware SPI. Faster, but must use SPI pins
// specific to each board type (e.g. 11,13 for Uno, 51,52 for Mega, etc.)
Arduino_ST7789::Arduino_ST7789(int8_t dc, int8_t rst, int8_t cs, int8_t bp)
: Renderer(ST7789_TFTWIDTH, ST7789_TFTHEIGHT) {
_cs = cs;
_dc = dc;
_rst = rst;
_hwSPI = true;
_SPI9bit = false;
_sid = _sclk = -1;
_bp = bp;
}
void Arduino_ST7789::DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font) {
setRotation(rot);
//invertDisplay(false);
invertDisplay(true);
//setTextWrap(false); // Allow text to run off edges
//cp437(true);
setTextFont(font&3);
setTextSize(size&7);
setTextColor(ST7789_WHITE,ST7789_BLACK);
setCursor(0,0);
fillScreen(ST7789_BLACK);
}
inline void Arduino_ST7789::spiwrite(uint8_t c)
{
//Serial.println(c, HEX);
if (_hwSPI)
{
#if defined (SPI_HAS_TRANSACTION)
SPI.transfer(c);
#elif defined (__AVR__) || defined(CORE_TEENSY)
SPCRbackup = SPCR;
SPCR = mySPCR;
SPI.transfer(c);
SPCR = SPCRbackup;
#elif defined (__arm__)
SPI.setClockDivider(21); //4MHz
SPI.setDataMode(SPI_MODE2);
SPI.transfer(c);
#endif
}
else
{
if(_SPI9bit)
{
//9s bit send first
#if defined(USE_FAST_IO)
*clkport &= ~clkpinmask;
if(_DCbit) *dataport |= datapinmask;
else *dataport &= ~datapinmask;
*clkport |= clkpinmask;
#else
digitalWrite(_sclk, LOW);
if(_DCbit) digitalWrite(_sid, HIGH);
else digitalWrite(_sid, LOW);
digitalWrite(_sclk, HIGH);
#endif
// Fast SPI bitbang swiped from LPD8806 library
for(uint8_t bit = 0x80; bit; bit >>= 1) {
#if defined(USE_FAST_IO)
*clkport &= ~clkpinmask;
if(c & bit) *dataport |= datapinmask;
else *dataport &= ~datapinmask;
*clkport |= clkpinmask;
#else
digitalWrite(_sclk, LOW);
if(c & bit) digitalWrite(_sid, HIGH);
else digitalWrite(_sid, LOW);
digitalWrite(_sclk, HIGH);
#endif
}
}
else
{
// Fast SPI bitbang swiped from LPD8806 library
for(uint8_t bit = 0x80; bit; bit >>= 1) {
#if defined(USE_FAST_IO)
*clkport &= ~clkpinmask;
if(c & bit) *dataport |= datapinmask;
else *dataport &= ~datapinmask;
*clkport |= clkpinmask;
#else
digitalWrite(_sclk, LOW);
if(c & bit) digitalWrite(_sid, HIGH);
else digitalWrite(_sid, LOW);
digitalWrite(_sclk, HIGH);
#endif
}
}
}
}
void Arduino_ST7789::writecommand(uint8_t c) {
DC_LOW();
CS_LOW();
SPI_BEGIN_TRANSACTION();
spiwrite(c);
CS_HIGH();
SPI_END_TRANSACTION();
}
void Arduino_ST7789::writedata(uint8_t c) {
SPI_BEGIN_TRANSACTION();
DC_HIGH();
CS_LOW();
spiwrite(c);
CS_HIGH();
SPI_END_TRANSACTION();
}
// Companion code to the above tables. Reads and issues
// a series of LCD commands stored in PROGMEM byte array.
void Arduino_ST7789::displayInit(const uint8_t *addr) {
uint8_t numCommands, numArgs;
uint16_t ms;
//<-----------------------------------------------------------------------------------------
DC_HIGH();
#if defined(USE_FAST_IO)
*clkport |= clkpinmask;
#else
digitalWrite(_sclk, HIGH);
#endif
//<-----------------------------------------------------------------------------------------
numCommands = pgm_read_byte(addr++); // Number of commands to follow
while(numCommands--) { // For each command...
writecommand(pgm_read_byte(addr++)); // Read, issue command
numArgs = pgm_read_byte(addr++); // Number of args to follow
ms = numArgs & ST_CMD_DELAY; // If hibit set, delay follows args
numArgs &= ~ST_CMD_DELAY; // Mask out delay bit
while(numArgs--) { // For each argument...
writedata(pgm_read_byte(addr++)); // Read, issue argument
}
if(ms) {
ms = pgm_read_byte(addr++); // Read post-command delay time (ms)
if(ms == 255) ms = 500; // If 255, delay for 500 ms
delay(ms);
}
}
}
// Initialization code common to all ST7789 displays
void Arduino_ST7789::commonInit(const uint8_t *cmdList) {
_ystart = _xstart = 0;
_colstart = _rowstart = 0; // May be overridden in init func
pinMode(_dc, OUTPUT);
if (_cs>=0) {
pinMode(_cs, OUTPUT);
}
if (_bp>=0) {
#define ESP32_PWM_CHANNEL 1
#ifdef ST7789_DIMMER
ledcSetup(ESP32_PWM_CHANNEL,4000,8);
ledcAttachPin(_bp,ESP32_PWM_CHANNEL);
ledcWrite(ESP32_PWM_CHANNEL,128);
#else
pinMode(_bp, OUTPUT);
#endif
}
#if defined(USE_FAST_IO)
dcport = portOutputRegister(digitalPinToPort(_dc));
dcpinmask = digitalPinToBitMask(_dc);
if (_cs>=0) {
csport = portOutputRegister(digitalPinToPort(_cs));
cspinmask = digitalPinToBitMask(_cs);
}
#endif
if(_hwSPI) { // Using hardware SPI
#if defined (SPI_HAS_TRANSACTION)
SPI.begin();
mySPISettings = SPISettings(24000000, MSBFIRST, SPI_MODE2);
#elif defined (__AVR__) || defined(CORE_TEENSY)
SPCRbackup = SPCR;
SPI.begin();
SPI.setClockDivider(SPI_CLOCK_DIV4);
SPI.setDataMode(SPI_MODE2);
mySPCR = SPCR; // save our preferred state
SPCR = SPCRbackup; // then restore
#elif defined (__SAM3X8E__)
SPI.begin();
SPI.setClockDivider(21); //4MHz
SPI.setDataMode(SPI_MODE2);
#endif
} else {
pinMode(_sclk, OUTPUT);
pinMode(_sid , OUTPUT);
digitalWrite(_sclk, LOW);
digitalWrite(_sid, LOW);
#if defined(USE_FAST_IO)
clkport = portOutputRegister(digitalPinToPort(_sclk));
dataport = portOutputRegister(digitalPinToPort(_sid));
clkpinmask = digitalPinToBitMask(_sclk);
datapinmask = digitalPinToBitMask(_sid);
#endif
}
// toggle RST low to reset; CS low so it'll listen to us
CS_LOW();
if (_rst != -1) {
pinMode(_rst, OUTPUT);
digitalWrite(_rst, HIGH);
delay(50);
digitalWrite(_rst, LOW);
delay(50);
digitalWrite(_rst, HIGH);
delay(50);
}
if(cmdList)
displayInit(cmdList);
}
void Arduino_ST7789::setRotation(uint8_t m) {
writecommand(ST7789_MADCTL);
rotation = m % 4; // can't be higher than 3
switch (rotation) {
case 0:
writedata(ST7789_MADCTL_MX | ST7789_MADCTL_MY | ST7789_MADCTL_RGB);
_xstart = _colstart;
// _ystart = _rowstart;
_ystart = 80;
break;
case 1:
writedata(ST7789_MADCTL_MY | ST7789_MADCTL_MV | ST7789_MADCTL_RGB);
_ystart = _colstart;
// _xstart = _rowstart;
_xstart = 80;
break;
case 2:
writedata(ST7789_MADCTL_RGB);
_xstart = _colstart;
_ystart = _rowstart;
break;
case 3:
writedata(ST7789_MADCTL_MX | ST7789_MADCTL_MV | ST7789_MADCTL_RGB);
_ystart = _colstart;
_xstart = _rowstart;
break;
}
}
void Arduino_ST7789::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
setAddrWindow_int(x0,y0,x1-1,y1-1);
}
void Arduino_ST7789::setAddrWindow_int(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
uint16_t x_start = x0 + _xstart, x_end = x1 + _xstart;
uint16_t y_start = y0 + _ystart, y_end = y1 + _ystart;
writecommand(ST7789_CASET); // Column addr set
writedata(x_start >> 8);
writedata(x_start & 0xFF); // XSTART
writedata(x_end >> 8);
writedata(x_end & 0xFF); // XEND
writecommand(ST7789_RASET); // Row addr set
writedata(y_start >> 8);
writedata(y_start & 0xFF); // YSTART
writedata(y_end >> 8);
writedata(y_end & 0xFF); // YEND
writecommand(ST7789_RAMWR); // write to RAM
}
void Arduino_ST7789::drawPixel(int16_t x, int16_t y, uint16_t color) {
if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return;
setAddrWindow_int(x,y,x+1,y+1);
SPI_BEGIN_TRANSACTION();
DC_HIGH();
CS_LOW();
spiwrite(color >> 8);
spiwrite(color);
CS_HIGH();
SPI_END_TRANSACTION();
}
void Arduino_ST7789::drawFastVLine(int16_t x, int16_t y, int16_t h,
uint16_t color) {
// Rudimentary clipping
if((x >= _width) || (y >= _height)) return;
if((y+h-1) >= _height) h = _height-y;
setAddrWindow_int(x, y, x, y+h-1);
uint8_t hi = color >> 8, lo = color;
SPI_BEGIN_TRANSACTION();
DC_HIGH();
CS_LOW();
while (h--) {
spiwrite(hi);
spiwrite(lo);
}
CS_HIGH();
SPI_END_TRANSACTION();
}
void Arduino_ST7789::drawFastHLine(int16_t x, int16_t y, int16_t w,
uint16_t color) {
// Rudimentary clipping
if((x >= _width) || (y >= _height)) return;
if((x+w-1) >= _width) w = _width-x;
setAddrWindow_int(x, y, x+w-1, y);
uint8_t hi = color >> 8, lo = color;
SPI_BEGIN_TRANSACTION();
DC_HIGH();
CS_LOW();
while (w--) {
spiwrite(hi);
spiwrite(lo);
}
CS_HIGH();
SPI_END_TRANSACTION();
}
void Arduino_ST7789::fillScreen(uint16_t color) {
fillRect(0, 0, _width, _height, color);
}
// fill a rectangle
void Arduino_ST7789::fillRect(int16_t x, int16_t y, int16_t w, int16_t h,
uint16_t color) {
// rudimentary clipping (drawChar w/big text requires this)
if((x >= _width) || (y >= _height)) return;
if((x + w - 1) >= _width) w = _width - x;
if((y + h - 1) >= _height) h = _height - y;
setAddrWindow_int(x, y, x+w-1, y+h-1);
uint8_t hi = color >> 8, lo = color;
SPI_BEGIN_TRANSACTION();
DC_HIGH();
CS_LOW();
for(y=h; y>0; y--) {
for(x=w; x>0; x--) {
spiwrite(hi);
spiwrite(lo);
}
}
CS_HIGH();
SPI_END_TRANSACTION();
}
// Pass 8-bit (each) R,G,B, get back 16-bit packed color
uint16_t Arduino_ST7789::Color565(uint8_t r, uint8_t g, uint8_t b) {
return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3);
}
void Arduino_ST7789::invertDisplay(boolean i) {
writecommand(i ? ST7789_INVON : ST7789_INVOFF);
}
/******** low level bit twiddling **********/
inline void Arduino_ST7789::CS_HIGH(void) {
if(_cs>=0) {
#if defined(USE_FAST_IO)
*csport |= cspinmask;
#else
digitalWrite(_cs, HIGH);
#endif
}
}
inline void Arduino_ST7789::CS_LOW(void) {
if(_cs>=0) {
#if defined(USE_FAST_IO)
*csport &= ~cspinmask;
#else
digitalWrite(_cs, LOW);
#endif
}
}
inline void Arduino_ST7789::DC_HIGH(void) {
_DCbit = true;
#if defined(USE_FAST_IO)
*dcport |= dcpinmask;
#else
digitalWrite(_dc, HIGH);
#endif
}
inline void Arduino_ST7789::DC_LOW(void) {
_DCbit = false;
#if defined(USE_FAST_IO)
*dcport &= ~dcpinmask;
#else
digitalWrite(_dc, LOW);
#endif
}
void Arduino_ST7789::init(uint16_t width, uint16_t height) {
commonInit(NULL);
_colstart = ST7789_240x240_XSTART;
_rowstart = ST7789_240x240_YSTART;
_height = height;
_width = width;
displayInit(cmd_240x240);
setRotation(2);
}
void Arduino_ST7789::DisplayOnff(int8_t on) {
if (on) {
writecommand(ST7789_DISPON); //Display on
if (_bp>=0) {
#ifdef ST7789_DIMMER
ledcWrite(ESP32_PWM_CHANNEL,255);
#else
digitalWrite(_bp,HIGH);
#endif
}
} else {
writecommand(ST7789_DISPOFF);
if (_bp>=0) {
#ifdef ST7789_DIMMER
ledcWrite(ESP32_PWM_CHANNEL,0);
#else
digitalWrite(_bp,LOW);
#endif
}
}
}
// dimmer 0-100
void Arduino_ST7789::dim(uint8_t dimmer) {
if (dimmer>15) dimmer=15;
dimmer=((float)dimmer/15.0)*255.0;
#ifdef ESP32
ledcWrite(ESP32_PWM_CHANNEL,dimmer);
#endif
}
void Arduino_ST7789::pushColor(uint16_t color) {
SPI_BEGIN_TRANSACTION();
DC_HIGH();
CS_LOW();
spiwrite(color >> 8);
spiwrite(color);
CS_HIGH();
SPI_END_TRANSACTION();
}
void Arduino_ST7789::pushColors(uint16_t *data, uint8_t len, boolean first) {
uint16_t color;
SPI_BEGIN_TRANSACTION();
DC_HIGH();
CS_LOW();
while (len--) {
color = *data++;
spiwrite(color >> 8);
spiwrite(color);
}
CS_HIGH();
SPI_END_TRANSACTION();
}

View File

@ -0,0 +1,179 @@
/***************************************************
This is a library for the ST7789 IPS SPI display.
Originally written by Limor Fried/Ladyada for
Adafruit Industries.
Modified by Ananev Ilia
****************************************************/
#ifndef _ADAFRUIT_ST7789H_
#define _ADAFRUIT_ST7789H_
#include "Arduino.h"
#include "Print.h"
#include <Adafruit_GFX.h>
#include <renderer.h>
#if defined(__AVR__) || defined(CORE_TEENSY)
#include <avr/pgmspace.h>
#define USE_FAST_IO
typedef volatile uint8_t RwReg;
#elif defined(ARDUINO_STM32_FEATHER)
typedef volatile uint32 RwReg;
#define USE_FAST_IO
#elif defined(ARDUINO_FEATHER52)
typedef volatile uint32_t RwReg;
#define USE_FAST_IO
#elif defined(ESP8266)
#include <pgmspace.h>
#elif defined(__SAM3X8E__)
#undef __FlashStringHelper::F(string_literal)
#define F(string_literal) string_literal
#include <include/pio.h>
#define PROGMEM
#define pgm_read_byte(addr) (*(const unsigned char *)(addr))
#define pgm_read_word(addr) (*(const unsigned short *)(addr))
typedef unsigned char prog_uchar;
#endif
//#define SPI_HAS_TRANSACTION // already defined in SPI.h
#define ST7789_TFTWIDTH 240
#define ST7789_TFTHEIGHT 240
#define ST7789_240x240_XSTART 0
#define ST7789_240x240_YSTART 0
#define ST_CMD_DELAY 0x80 // special signifier for command lists
#define ST7789_NOP 0x00
#define ST7789_SWRESET 0x01
#define ST7789_RDDID 0x04
#define ST7789_RDDST 0x09
#define ST7789_SLPIN 0x10
#define ST7789_SLPOUT 0x11
#define ST7789_PTLON 0x12
#define ST7789_NORON 0x13
#define ST7789_INVOFF 0x20
#define ST7789_INVON 0x21
#define ST7789_DISPOFF 0x28
#define ST7789_DISPON 0x29
#define ST7789_CASET 0x2A
#define ST7789_RASET 0x2B
#define ST7789_RAMWR 0x2C
#define ST7789_RAMRD 0x2E
#define ST7789_PTLAR 0x30
#define ST7789_COLMOD 0x3A
#define ST7789_MADCTL 0x36
#define ST7789_MADCTL_MY 0x80
#define ST7789_MADCTL_MX 0x40
#define ST7789_MADCTL_MV 0x20
#define ST7789_MADCTL_ML 0x10
#define ST7789_MADCTL_RGB 0x00
#define ST7789_RDID1 0xDA
#define ST7789_RDID2 0xDB
#define ST7789_RDID3 0xDC
#define ST7789_RDID4 0xDD
// Color definitions
#undef BLACK
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#undef WHITE
#define WHITE 0xFFFF
// Color definitions
#define ST7789_BLACK 0x0000 /* 0, 0, 0 */
#define ST7789_NAVY 0x000F /* 0, 0, 128 */
#define ST7789_DARKGREEN 0x03E0 /* 0, 128, 0 */
#define ST7789_DARKCYAN 0x03EF /* 0, 128, 128 */
#define ST7789_MAROON 0x7800 /* 128, 0, 0 */
#define ST7789_PURPLE 0x780F /* 128, 0, 128 */
#define ST7789_OLIVE 0x7BE0 /* 128, 128, 0 */
#define ST7789_LIGHTGREY 0xC618 /* 192, 192, 192 */
#define ST7789_DARKGREY 0x7BEF /* 128, 128, 128 */
#define ST7789_BLUE 0x001F /* 0, 0, 255 */
#define ST7789_GREEN 0x07E0 /* 0, 255, 0 */
#define ST7789_CYAN 0x07FF /* 0, 255, 255 */
#define ST7789_RED 0xF800 /* 255, 0, 0 */
#define ST7789_MAGENTA 0xF81F /* 255, 0, 255 */
#define ST7789_YELLOW 0xFFE0 /* 255, 255, 0 */
#define ST7789_WHITE 0xFFFF /* 255, 255, 255 */
#define ST7789_ORANGE 0xFD20 /* 255, 165, 0 */
#define ST7789_GREENYELLOW 0xAFE5 /* 173, 255, 47 */
#define ST7789_PINK 0xF81F
class Arduino_ST7789 : public Renderer {
public:
Arduino_ST7789(int8_t DC, int8_t RST, int8_t SID, int8_t SCLK, int8_t CS, int8_t bp);
Arduino_ST7789(int8_t DC, int8_t RST, int8_t CS, int8_t bp);
void setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1),
pushColor(uint16_t color),
fillScreen(uint16_t color),
drawPixel(int16_t x, int16_t y, uint16_t color),
drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
setRotation(uint8_t r),
invertDisplay(boolean i),
DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font),
setAddrWindow_int(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1),
init(uint16_t width, uint16_t height);
uint16_t Color565(uint8_t r, uint8_t g, uint8_t b);
uint16_t GetColorFromIndex(uint8_t index);
uint16_t color565(uint8_t r, uint8_t g, uint8_t b) { return Color565(r, g, b); }
void DisplayOnff(int8_t on);
void dim(uint8_t contrast);
void pushColors(uint16_t *data, uint8_t len, boolean first);
protected:
uint8_t _colstart, _rowstart, _xstart, _ystart; // some displays need this changed
void displayInit(const uint8_t *addr);
void spiwrite(uint8_t),
writecommand(uint8_t c),
writedata(uint8_t d),
commonInit(const uint8_t *cmdList);
private:
inline void CS_HIGH(void);
inline void CS_LOW(void);
inline void DC_HIGH(void);
inline void DC_LOW(void);
boolean _hwSPI;
boolean _SPI9bit;
boolean _DCbit;
int8_t _cs, _dc, _rst, _sid, _sclk, _bp;
#if defined(USE_FAST_IO)
volatile RwReg *dataport, *clkport, *csport, *dcport;
#if defined(__AVR__) || defined(CORE_TEENSY) // 8 bit!
uint8_t datapinmask, clkpinmask, cspinmask, dcpinmask;
#else // 32 bit!
uint32_t datapinmask, clkpinmask, cspinmask, dcpinmask;
#endif
#endif
};
#endif

View File

@ -0,0 +1,3 @@
This is a library for the ST7789 IPS SPI display.
Also requires the Adafruit_GFX library for Arduino.

View File

@ -0,0 +1,278 @@
/***************************************************
This is a library for the ST7789 IPS SPI display.
Originally written by Limor Fried/Ladyada for
Adafruit Industries.
Modified by Ananev Ilia
****************************************************/
#include <Adafruit_GFX.h> // Core graphics library by Adafruit
#include <Arduino_ST7789.h> // Hardware-specific library for ST7789 (with or without CS pin)
#include <SPI.h>
#define TFT_DC 8
#define TFT_RST 9
#define TFT_CS 10 // only for displays with CS pin
#define TFT_MOSI 11 // for hardware SPI data pin (all of available pins)
#define TFT_SCLK 13 // for hardware SPI sclk pin (all of available pins)
//You can use different type of hardware initialization
//using hardware SPI (11, 13 on UNO; 51, 52 on MEGA; ICSP-4, ICSP-3 on DUE and etc)
//Arduino_ST7789 tft = Arduino_ST7789(TFT_DC, TFT_RST); //for display without CS pin
//Arduino_ST7789 tft = Arduino_ST7789(TFT_DC, TFT_RST, TFT_CS); //for display with CS pin
//or you can use software SPI on all available pins (slow)
//Arduino_ST7789 tft = Arduino_ST7789(TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK); //for display without CS pin
//Arduino_ST7789 tft = Arduino_ST7789(TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_CS); //for display with CS pin
Arduino_ST7789 tft = Arduino_ST7789(-1, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_CS); //for display with CS pin and DC via 9bit SPI
float p = 3.1415926;
void setup(void) {
Serial.begin(9600);
Serial.print("Hello! ST7789 TFT Test");
tft.init(240, 240); // initialize a ST7789 chip, 240x240 pixels
Serial.println("Initialized");
uint16_t time = millis();
tft.fillScreen(BLACK);
time = millis() - time;
Serial.println(time, DEC);
delay(500);
// large block of text
tft.fillScreen(BLACK);
testdrawtext("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur adipiscing ante sed nibh tincidunt feugiat. Maecenas enim massa, fringilla sed malesuada et, malesuada sit amet turpis. Sed porttitor neque ut ante pretium vitae malesuada nunc bibendum. Nullam aliquet ultrices massa eu hendrerit. Ut sed nisi lorem. In vestibulum purus a tortor imperdiet posuere. ", WHITE);
delay(1000);
// tft print function
tftPrintTest();
delay(4000);
// a single pixel
tft.drawPixel(tft.width()/2, tft.height()/2, GREEN);
delay(500);
// line draw test
testlines(YELLOW);
delay(500);
// optimized lines
testfastlines(RED, BLUE);
delay(500);
testdrawrects(GREEN);
delay(500);
testfillrects(YELLOW, MAGENTA);
delay(500);
tft.fillScreen(BLACK);
testfillcircles(10, BLUE);
testdrawcircles(10, WHITE);
delay(500);
testroundrects();
delay(500);
testtriangles();
delay(500);
mediabuttons();
delay(500);
Serial.println("done");
delay(1000);
}
void loop() {
tft.invertDisplay(true);
delay(500);
tft.invertDisplay(false);
delay(500);
}
void testlines(uint16_t color) {
tft.fillScreen(BLACK);
for (int16_t x=0; x < tft.width(); x+=6) {
tft.drawLine(0, 0, x, tft.height()-1, color);
}
for (int16_t y=0; y < tft.height(); y+=6) {
tft.drawLine(0, 0, tft.width()-1, y, color);
}
tft.fillScreen(BLACK);
for (int16_t x=0; x < tft.width(); x+=6) {
tft.drawLine(tft.width()-1, 0, x, tft.height()-1, color);
}
for (int16_t y=0; y < tft.height(); y+=6) {
tft.drawLine(tft.width()-1, 0, 0, y, color);
}
tft.fillScreen(BLACK);
for (int16_t x=0; x < tft.width(); x+=6) {
tft.drawLine(0, tft.height()-1, x, 0, color);
}
for (int16_t y=0; y < tft.height(); y+=6) {
tft.drawLine(0, tft.height()-1, tft.width()-1, y, color);
}
tft.fillScreen(BLACK);
for (int16_t x=0; x < tft.width(); x+=6) {
tft.drawLine(tft.width()-1, tft.height()-1, x, 0, color);
}
for (int16_t y=0; y < tft.height(); y+=6) {
tft.drawLine(tft.width()-1, tft.height()-1, 0, y, color);
}
}
void testdrawtext(char *text, uint16_t color) {
tft.setCursor(0, 0);
tft.setTextColor(color);
tft.setTextWrap(true);
tft.print(text);
}
void testfastlines(uint16_t color1, uint16_t color2) {
tft.fillScreen(BLACK);
for (int16_t y=0; y < tft.height(); y+=5) {
tft.drawFastHLine(0, y, tft.width(), color1);
}
for (int16_t x=0; x < tft.width(); x+=5) {
tft.drawFastVLine(x, 0, tft.height(), color2);
}
}
void testdrawrects(uint16_t color) {
tft.fillScreen(BLACK);
for (int16_t x=0; x < tft.width(); x+=6) {
tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color);
}
}
void testfillrects(uint16_t color1, uint16_t color2) {
tft.fillScreen(BLACK);
for (int16_t x=tft.width()-1; x > 6; x-=6) {
tft.fillRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color1);
tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color2);
}
}
void testfillcircles(uint8_t radius, uint16_t color) {
for (int16_t x=radius; x < tft.width(); x+=radius*2) {
for (int16_t y=radius; y < tft.height(); y+=radius*2) {
tft.fillCircle(x, y, radius, color);
}
}
}
void testdrawcircles(uint8_t radius, uint16_t color) {
for (int16_t x=0; x < tft.width()+radius; x+=radius*2) {
for (int16_t y=0; y < tft.height()+radius; y+=radius*2) {
tft.drawCircle(x, y, radius, color);
}
}
}
void testtriangles() {
tft.fillScreen(BLACK);
int color = 0xF800;
int t;
int w = tft.width()/2;
int x = tft.height()-1;
int y = 0;
int z = tft.width();
for(t = 0 ; t <= 15; t++) {
tft.drawTriangle(w, y, y, x, z, x, color);
x-=4;
y+=4;
z-=4;
color+=100;
}
}
void testroundrects() {
tft.fillScreen(BLACK);
int color = 100;
int i;
int t;
for(t = 0 ; t <= 4; t+=1) {
int x = 0;
int y = 0;
int w = tft.width()-2;
int h = tft.height()-2;
for(i = 0 ; i <= 16; i+=1) {
tft.drawRoundRect(x, y, w, h, 5, color);
x+=2;
y+=3;
w-=4;
h-=6;
color+=1100;
}
color+=100;
}
}
void tftPrintTest() {
tft.setTextWrap(false);
tft.fillScreen(BLACK);
tft.setCursor(0, 30);
tft.setTextColor(RED);
tft.setTextSize(1);
tft.println("Hello World!");
tft.setTextColor(YELLOW);
tft.setTextSize(2);
tft.println("Hello World!");
tft.setTextColor(GREEN);
tft.setTextSize(3);
tft.println("Hello World!");
tft.setTextColor(BLUE);
tft.setTextSize(4);
tft.print(1234.567);
delay(1500);
tft.setCursor(0, 0);
tft.fillScreen(BLACK);
tft.setTextColor(WHITE);
tft.setTextSize(0);
tft.println("Hello World!");
tft.setTextSize(1);
tft.setTextColor(GREEN);
tft.print(p, 6);
tft.println(" Want pi?");
tft.println(" ");
tft.print(8675309, HEX); // print 8,675,309 out in HEX!
tft.println(" Print HEX!");
tft.println(" ");
tft.setTextColor(WHITE);
tft.println("Sketch has been");
tft.println("running for: ");
tft.setTextColor(MAGENTA);
tft.print(millis() / 1000);
tft.setTextColor(WHITE);
tft.print(" seconds.");
}
void mediabuttons() {
// play
tft.fillScreen(BLACK);
tft.fillRoundRect(25, 10, 78, 60, 8, WHITE);
tft.fillTriangle(42, 20, 42, 60, 90, 40, RED);
delay(500);
// pause
tft.fillRoundRect(25, 90, 78, 60, 8, WHITE);
tft.fillRoundRect(39, 98, 20, 45, 5, GREEN);
tft.fillRoundRect(69, 98, 20, 45, 5, GREEN);
delay(500);
// play color
tft.fillTriangle(42, 20, 42, 60, 90, 40, BLUE);
delay(50);
// pause color
tft.fillRoundRect(39, 98, 20, 45, 5, RED);
tft.fillRoundRect(69, 98, 20, 45, 5, RED);
// play color
tft.fillTriangle(42, 20, 42, 60, 90, 40, GREEN);
}

View File

@ -0,0 +1,30 @@
#######################################
# Syntax Coloring Map
#######################################
#######################################
# Datatypes (KEYWORD1)
#######################################
ST7789 KEYWORD1
#######################################
# Methods and Functions (KEYWORD2)
#######################################
setRotation KEYWORD2
setAddrWindow KEYWORD2
pushColor KEYWORD2
drawPixel KEYWORD2
drawFastVLine KEYWORD2
drawFastHLine KEYWORD2
fillRect KEYWORD2
setRotation KEYWORD2
setRotation KEYWORD2
height KEYWORD2
width KEYWORD2
invertDisplay KEYWORD2
drawImage KEYWORD2
setScrollArea KEYWORD2
scroll KEYWORD2

View File

@ -0,0 +1,9 @@
name=Arduino ST7789 Library
version=0.9.5
author=Ananev Ilya
maintainer=Ananev Ilya <ananevilya@gmail.com>
sentence=This is a library for the ST7789 IPS SPI display.
paragraph=This is a library for the ST7789 IPS SPI display.
category=Display
url=https://github.com/ananevilya/Arduino-ST7789-Library
architectures=*

2
lib/FT5206_Library/.gitignore vendored Executable file
View File

@ -0,0 +1,2 @@
.vscode
.DS_Store

21
lib/FT5206_Library/LICENSE Executable file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 lewis he
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.

2
lib/FT5206_Library/README.md Executable file
View File

@ -0,0 +1,2 @@
FT5206 Library
=====================================

29
lib/FT5206_Library/keywords.txt Executable file
View File

@ -0,0 +1,29 @@
#######################################
# Syntax Coloring Map For FT5206 Library By lewis He
# github:https://github.com/lewisxhe
#######################################
#######################################
# Datatypes (KEYWORD1)
#######################################
TP_Point KEYWORD1
FT5206_Class KEYWORD1
#######################################
# Methods and Functions (KEYWORD2)
#######################################
begin KEYWORD2
adjustTheshold KEYWORD2
getPoint KEYWORD2
enterSleepMode KEYWORD2
enterMonitorMode KEYWORD2
#######################################
# Instances (KEYWORD2)
#######################################
#######################################
# Constants (LITERAL1)
#######################################

View File

@ -0,0 +1,10 @@
name=FT5206_Library
version=1.0.0
author=Lewis He
maintainer=Lewis He <lewishe@outlook.com>
sentence=Arduino library for FT5206 chip.
paragraph=Arduino library for FT5206 chip. Tested with ESP32
category=Communication
url=https://github.com/lewisxhe/FT5206_Library
architectures=*
architectures=esp32

108
lib/FT5206_Library/src/FT5206.cpp Executable file
View File

@ -0,0 +1,108 @@
/////////////////////////////////////////////////////////////////
/*
MIT License
Copyright (c) 2019 lewis he
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.
FT5206.cpp - Arduino library for FT5206 chip.
Created by Lewis on April 17, 2019.
github:https://github.com/lewisxhe/FT5206_Library
*/
/////////////////////////////////////////////////////////////////
#include "FT5206.h"
int FT5206_Class::begin(TwoWire &port, uint8_t addr)
{
_i2cPort = &port;
_address = addr;
uint8_t val;
_readByte(FT5206_VENDID_REG, 1, &val);
//Serial.printf("vend id %d\n",val );
if (val != FT5206_VENDID) {
// return false;
}
_readByte(FT5206_CHIPID_REG, 1, &val);
//Serial.printf("chip id %d\n",val );
if ((val != FT6206_CHIPID) && (val != FT6236_CHIPID) && (val != FT6236U_CHIPID) && (val != FT5206U_CHIPID)) {
return false;
}
_init = true;
return true;
}
// valid touching detect threshold.
void FT5206_Class::adjustTheshold(uint8_t thresh)
{
if (!_init)return;
_writeByte(FT5206_THRESHHOLD_REG, 1, &thresh);
}
TP_Point FT5206_Class::getPoint(uint8_t num)
{
if (!_init) return TP_Point(0, 0);
_readRegister();
if ((_touches == 0) || (num > 1)) {
return TP_Point(0, 0);
} else {
return TP_Point(_x[num], _y[num]);
}
}
uint8_t FT5206_Class::touched()
{
if (!_init)return 0;
uint8_t val = 0;
_readByte(FT5206_TOUCHES_REG,1,&val);
return val > 2 ? 0: val;
}
void FT5206_Class::enterSleepMode()
{
if (!_init)return;
uint8_t val = FT5206_SLEEP_IN;
_writeByte(FT5206_POWER_REG, 1, &val);
}
void FT5206_Class::enterMonitorMode()
{
if (!_init)return;
uint8_t val = FT5206_MONITOR;
_writeByte(FT5206_POWER_REG, 1, &val);
}
void FT5206_Class::_readRegister()
{
_readByte(DEVIDE_MODE, 16, _data);
_touches = _data[TD_STATUS];
if ((_touches > 2) || (_touches == 0)) {
_touches = 0;
return;
}
for (uint8_t i = 0; i < 2; i++) {
_x[i] = _data[TOUCH1_XH + i * 6] & 0x0F;
_x[i] <<= 8;
_x[i] |= _data[TOUCH1_XL + i * 6];
_y[i] = _data[TOUCH1_YH + i * 6] & 0x0F;
_y[i] <<= 8;
_y[i] |= _data[TOUCH1_YL + i * 6];
_id[i] = _data[TOUCH1_YH + i * 6] >> 4;
}
}

121
lib/FT5206_Library/src/FT5206.h Executable file
View File

@ -0,0 +1,121 @@
/////////////////////////////////////////////////////////////////
/*
MIT License
Copyright (c) 2019 lewis he
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.
FT5206.h - Arduino library for FT5206 chip.
Created by Lewis on April 17, 2019.
github:https://github.com/lewisxhe/FT5206_Library
*/
/////////////////////////////////////////////////////////////////
#pragma once
#include <Arduino.h>
#include <Wire.h>
#define FT5206_SLAVE_ADDRESS (0x38)
#define FT5206_MODE_REG (0x00)
#define FT5206_TOUCHES_REG (0x02)
#define FT5206_VENDID_REG (0xA8)
#define FT5206_CHIPID_REG (0xA3)
#define FT5206_THRESHHOLD_REG (0x80)
#define FT5206_POWER_REG (0x87)
#define FT5206_MONITOR (0x01)
#define FT5206_SLEEP_IN (0x03)
#define FT5206_VENDID 0x11
#define FT6206_CHIPID 0x06
#define FT6236_CHIPID 0x36
#define FT6236U_CHIPID 0x64
#define FT5206U_CHIPID 0x64
#define DEVIDE_MODE 0x00
#define TD_STATUS 0x02
#define TOUCH1_XH 0x03
#define TOUCH1_XL 0x04
#define TOUCH1_YH 0x05
#define TOUCH1_YL 0x06
class TP_Point
{
public:
TP_Point(void)
{
x = 0;
y = 0;
}
TP_Point(int16_t _x, int16_t _y)
{
x = _x;
y = _y;
}
int16_t x;
int16_t y;
};
class FT5206_Class
{
public:
FT5206_Class() {};
int begin(TwoWire &port = Wire, uint8_t addr = FT5206_SLAVE_ADDRESS);
// valid touching detect threshold.
void adjustTheshold(uint8_t thresh);
TP_Point getPoint(uint8_t num = 0);
uint8_t touched();
void enterSleepMode();
void enterMonitorMode();
private:
void _readRegister();
int _readByte(uint8_t reg, uint8_t nbytes, uint8_t *data)
{
_i2cPort->beginTransmission(_address);
_i2cPort->write(reg);
_i2cPort->endTransmission();
_i2cPort->requestFrom(_address, nbytes);
uint8_t index = 0;
while (_i2cPort->available())
data[index++] = _i2cPort->read();
return 0;
}
int _writeByte(uint8_t reg, uint8_t nbytes, uint8_t *data)
{
_i2cPort->beginTransmission(_address);
_i2cPort->write(reg);
for (uint8_t i = 0; i < nbytes; i++) {
_i2cPort->write(data[i]);
}
_i2cPort->endTransmission();
return 0;
}
uint8_t _address;
uint8_t _data[16];
uint16_t _x[2];
uint16_t _y[2];
uint16_t _id[2];
uint8_t _touches = 0;
bool _init = false;
TwoWire *_i2cPort;
};

View File

@ -1 +0,0 @@
Documentation goes here.

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,17 +0,0 @@
[platformio]
src_dir = .
[env]
lib_extra_dirs = ../../
lib_ldf_mode = deep+
lib_ignore = examples
framework = arduino
build_flags = ; -D_IR_LOCALE_=en-AU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
[env:esp32dev]
platform = espressif32
board = esp32dev

View File

@ -1,261 +0,0 @@
// Copyright 2019-2020 - David Conran (@crankyoldgit)
/// @warn If you add or remove an entry in this file, you should run:
/// '../tools/generate_irtext_h.sh' to rebuild the `IRtext.h` file.
#ifndef UNIT_TEST
#include <Arduino.h>
#endif // UNIT_TEST
#include "IRremoteESP8266.h"
#include "i18n.h"
#ifndef PROGMEM
#define PROGMEM // Pretend we have the PROGMEM macro even if we really don't.
#endif
// Common
const PROGMEM char* kUnknownStr = D_STR_UNKNOWN;
const PROGMEM char* kProtocolStr = D_STR_PROTOCOL;
const PROGMEM char* kPowerStr = D_STR_POWER;
const PROGMEM char* kOnStr = D_STR_ON;
const PROGMEM char* kOffStr = D_STR_OFF;
const PROGMEM char* kModeStr = D_STR_MODE;
const PROGMEM char* kToggleStr = D_STR_TOGGLE;
const PROGMEM char* kTurboStr = D_STR_TURBO;
const PROGMEM char* kSuperStr = D_STR_SUPER;
const PROGMEM char* kSleepStr = D_STR_SLEEP;
const PROGMEM char* kLightStr = D_STR_LIGHT;
const PROGMEM char* kPowerfulStr = D_STR_POWERFUL;
const PROGMEM char* kQuietStr = D_STR_QUIET;
const PROGMEM char* kEconoStr = D_STR_ECONO;
const PROGMEM char* kSwingStr = D_STR_SWING;
const PROGMEM char* kSwingHStr = D_STR_SWINGH;
const PROGMEM char* kSwingVStr = D_STR_SWINGV;
const PROGMEM char* kBeepStr = D_STR_BEEP;
const PROGMEM char* kZoneFollowStr = D_STR_ZONEFOLLOW;
const PROGMEM char* kFixedStr = D_STR_FIXED;
const PROGMEM char* kMouldStr = D_STR_MOULD;
const PROGMEM char* kCleanStr = D_STR_CLEAN;
const PROGMEM char* kPurifyStr = D_STR_PURIFY;
const PROGMEM char* kTimerStr = D_STR_TIMER;
const PROGMEM char* kOnTimerStr = D_STR_ONTIMER;
const PROGMEM char* kOffTimerStr = D_STR_OFFTIMER;
const PROGMEM char* kClockStr = D_STR_CLOCK;
const PROGMEM char* kCommandStr = D_STR_COMMAND;
const PROGMEM char* kXFanStr = D_STR_XFAN;
const PROGMEM char* kHealthStr = D_STR_HEALTH;
const PROGMEM char* kModelStr = D_STR_MODEL;
const PROGMEM char* kTempStr = D_STR_TEMP;
const PROGMEM char* kIFeelStr = D_STR_IFEEL;
const PROGMEM char* kHumidStr = D_STR_HUMID;
const PROGMEM char* kSaveStr = D_STR_SAVE;
const PROGMEM char* kEyeStr = D_STR_EYE;
const PROGMEM char* kFollowStr = D_STR_FOLLOW;
const PROGMEM char* kIonStr = D_STR_ION;
const PROGMEM char* kFreshStr = D_STR_FRESH;
const PROGMEM char* kHoldStr = D_STR_HOLD;
const PROGMEM char* kButtonStr = D_STR_BUTTON;
const PROGMEM char* k8CHeatStr = D_STR_8C_HEAT;
const PROGMEM char* kNightStr = D_STR_NIGHT;
const PROGMEM char* kSilentStr = D_STR_SILENT;
const PROGMEM char* kFilterStr = D_STR_FILTER;
const PROGMEM char* k3DStr = D_STR_3D;
const PROGMEM char* kCelsiusStr = D_STR_CELSIUS;
const PROGMEM char* kTempUpStr = D_STR_TEMPUP;
const PROGMEM char* kTempDownStr = D_STR_TEMPDOWN;
const PROGMEM char* kStartStr = D_STR_START;
const PROGMEM char* kStopStr = D_STR_STOP;
const PROGMEM char* kMoveStr = D_STR_MOVE;
const PROGMEM char* kSetStr = D_STR_SET;
const PROGMEM char* kCancelStr = D_STR_CANCEL;
const PROGMEM char* kUpStr = D_STR_UP;
const PROGMEM char* kDownStr = D_STR_DOWN;
const PROGMEM char* kChangeStr = D_STR_CHANGE;
const PROGMEM char* kComfortStr = D_STR_COMFORT;
const PROGMEM char* kSensorStr = D_STR_SENSOR;
const PROGMEM char* kWeeklyTimerStr = D_STR_WEEKLYTIMER;
const PROGMEM char* kWifiStr = D_STR_WIFI;
const PROGMEM char* kLastStr = D_STR_LAST;
const PROGMEM char* kFastStr = D_STR_FAST;
const PROGMEM char* kSlowStr = D_STR_SLOW;
const PROGMEM char* kAirFlowStr = D_STR_AIRFLOW;
const PROGMEM char* kStepStr = D_STR_STEP;
const PROGMEM char* kNAStr = D_STR_NA;
const PROGMEM char* kInsideStr = D_STR_INSIDE;
const PROGMEM char* kOutsideStr = D_STR_OUTSIDE;
const PROGMEM char* kLoudStr = D_STR_LOUD;
const PROGMEM char* kLowerStr = D_STR_LOWER;
const PROGMEM char* kUpperStr = D_STR_UPPER;
const PROGMEM char* kBreezeStr = D_STR_BREEZE;
const PROGMEM char* kCirculateStr = D_STR_CIRCULATE;
const PROGMEM char* kCeilingStr = D_STR_CEILING;
const PROGMEM char* kWallStr = D_STR_WALL;
const PROGMEM char* kRoomStr = D_STR_ROOM;
const PROGMEM char* k6thSenseStr = D_STR_6THSENSE;
const PROGMEM char* kAutoStr = D_STR_AUTO;
const PROGMEM char* kAutomaticStr = D_STR_AUTOMATIC;
const PROGMEM char* kManualStr = D_STR_MANUAL;
const PROGMEM char* kCoolStr = D_STR_COOL;
const PROGMEM char* kHeatStr = D_STR_HEAT;
const PROGMEM char* kFanStr = D_STR_FAN;
const PROGMEM char* kDryStr = D_STR_DRY;
const PROGMEM char* kFanOnlyStr = D_STR_FANONLY;
const PROGMEM char* kMaxStr = D_STR_MAX;
const PROGMEM char* kMaximumStr = D_STR_MAXIMUM;
const PROGMEM char* kMinStr = D_STR_MIN;
const PROGMEM char* kMinimumStr = D_STR_MINIMUM;
const PROGMEM char* kMedStr = D_STR_MED;
const PROGMEM char* kMediumStr = D_STR_MEDIUM;
const PROGMEM char* kHighestStr = D_STR_HIGHEST;
const PROGMEM char* kHighStr = D_STR_HIGH;
const PROGMEM char* kHiStr = D_STR_HI;
const PROGMEM char* kMidStr = D_STR_MID;
const PROGMEM char* kMiddleStr = D_STR_MIDDLE;
const PROGMEM char* kLowStr = D_STR_LOW;
const PROGMEM char* kLoStr = D_STR_LO;
const PROGMEM char* kLowestStr = D_STR_LOWEST;
const PROGMEM char* kMaxRightStr = D_STR_MAXRIGHT;
const PROGMEM char* kRightMaxStr = D_STR_RIGHTMAX_NOSPACE;
const PROGMEM char* kRightStr = D_STR_RIGHT;
const PROGMEM char* kLeftStr = D_STR_LEFT;
const PROGMEM char* kMaxLeftStr = D_STR_MAXLEFT;
const PROGMEM char* kLeftMaxStr = D_STR_LEFTMAX_NOSPACE;
const PROGMEM char* kWideStr = D_STR_WIDE;
const PROGMEM char* kCentreStr = D_STR_CENTRE;
const PROGMEM char* kTopStr = D_STR_TOP;
const PROGMEM char* kBottomStr = D_STR_BOTTOM;
// Compound words/phrases/descriptions from pre-defined words.
const PROGMEM char* kEyeAutoStr = D_STR_EYEAUTO;
const PROGMEM char* kLightToggleStr = D_STR_LIGHTTOGGLE;
const PROGMEM char* kOutsideQuietStr = D_STR_OUTSIDEQUIET;
const PROGMEM char* kPowerToggleStr = D_STR_POWERTOGGLE;
const PROGMEM char* kPreviousPowerStr = D_STR_PREVIOUSPOWER;
const PROGMEM char* kDisplayTempStr = D_STR_DISPLAYTEMP;
const PROGMEM char* kSensorTempStr = D_STR_SENSORTEMP;
const PROGMEM char* kSleepTimerStr = D_STR_SLEEP_TIMER;
const PROGMEM char* kSwingVModeStr = D_STR_SWINGVMODE;
const PROGMEM char* kSwingVToggleStr = D_STR_SWINGVTOGGLE;
// Separators
char kTimeSep = D_CHR_TIME_SEP;
const PROGMEM char* kSpaceLBraceStr = D_STR_SPACELBRACE;
const PROGMEM char* kCommaSpaceStr = D_STR_COMMASPACE;
const PROGMEM char* kColonSpaceStr = D_STR_COLONSPACE;
// IRutils
// - Time
const PROGMEM char* kDayStr = D_STR_DAY;
const PROGMEM char* kDaysStr = D_STR_DAYS;
const PROGMEM char* kHourStr = D_STR_HOUR;
const PROGMEM char* kHoursStr = D_STR_HOURS;
const PROGMEM char* kMinuteStr = D_STR_MINUTE;
const PROGMEM char* kMinutesStr = D_STR_MINUTES;
const PROGMEM char* kSecondStr = D_STR_SECOND;
const PROGMEM char* kSecondsStr = D_STR_SECONDS;
const PROGMEM char* kNowStr = D_STR_NOW;
const PROGMEM char* kThreeLetterDayOfWeekStr = D_STR_THREELETTERDAYS;
const PROGMEM char* kYesStr = D_STR_YES;
const PROGMEM char* kNoStr = D_STR_NO;
const PROGMEM char* kTrueStr = D_STR_TRUE;
const PROGMEM char* kFalseStr = D_STR_FALSE;
const PROGMEM char* kRepeatStr = D_STR_REPEAT;
const PROGMEM char* kCodeStr = D_STR_CODE;
const PROGMEM char* kBitsStr = D_STR_BITS;
// Protocol Names
// Needs to be in decode_type_t order.
const PROGMEM char *kAllProtocolNamesStr =
D_STR_UNUSED "\x0"
D_STR_RC5 "\x0"
D_STR_RC6 "\x0"
D_STR_NEC "\x0"
D_STR_SONY "\x0"
D_STR_PANASONIC "\x0"
D_STR_JVC "\x0"
D_STR_SAMSUNG "\x0"
D_STR_WHYNTER "\x0"
D_STR_AIWA_RC_T501 "\x0"
D_STR_LG "\x0"
D_STR_SANYO "\x0"
D_STR_MITSUBISHI "\x0"
D_STR_DISH "\x0"
D_STR_SHARP "\x0"
D_STR_COOLIX "\x0"
D_STR_DAIKIN "\x0"
D_STR_DENON "\x0"
D_STR_KELVINATOR "\x0"
D_STR_SHERWOOD "\x0"
D_STR_MITSUBISHI_AC "\x0"
D_STR_RCMM "\x0"
D_STR_SANYO_LC7461 "\x0"
D_STR_RC5X "\x0"
D_STR_GREE "\x0"
D_STR_PRONTO "\x0"
D_STR_NEC_LIKE "\x0"
D_STR_ARGO "\x0"
D_STR_TROTEC "\x0"
D_STR_NIKAI "\x0"
D_STR_RAW "\x0"
D_STR_GLOBALCACHE "\x0"
D_STR_TOSHIBA_AC "\x0"
D_STR_FUJITSU_AC "\x0"
D_STR_MIDEA "\x0"
D_STR_MAGIQUEST "\x0"
D_STR_LASERTAG "\x0"
D_STR_CARRIER_AC "\x0"
D_STR_HAIER_AC "\x0"
D_STR_MITSUBISHI2 "\x0"
D_STR_HITACHI_AC "\x0"
D_STR_HITACHI_AC1 "\x0"
D_STR_HITACHI_AC2 "\x0"
D_STR_GICABLE "\x0"
D_STR_HAIER_AC_YRW02 "\x0"
D_STR_WHIRLPOOL_AC "\x0"
D_STR_SAMSUNG_AC "\x0"
D_STR_LUTRON "\x0"
D_STR_ELECTRA_AC "\x0"
D_STR_PANASONIC_AC "\x0"
D_STR_PIONEER "\x0"
D_STR_LG2 "\x0"
D_STR_MWM "\x0"
D_STR_DAIKIN2 "\x0"
D_STR_VESTEL_AC "\x0"
D_STR_TECO "\x0"
D_STR_SAMSUNG36 "\x0"
D_STR_TCL112AC "\x0"
D_STR_LEGOPF "\x0"
D_STR_MITSUBISHI_HEAVY_88 "\x0"
D_STR_MITSUBISHI_HEAVY_152 "\x0"
D_STR_DAIKIN216 "\x0"
D_STR_SHARP_AC "\x0"
D_STR_GOODWEATHER "\x0"
D_STR_INAX "\x0"
D_STR_DAIKIN160 "\x0"
D_STR_NEOCLIMA "\x0"
D_STR_DAIKIN176 "\x0"
D_STR_DAIKIN128 "\x0"
D_STR_AMCOR "\x0"
D_STR_DAIKIN152 "\x0"
D_STR_MITSUBISHI136 "\x0"
D_STR_MITSUBISHI112 "\x0"
D_STR_HITACHI_AC424 "\x0"
D_STR_SONY_38K "\x0"
D_STR_EPSON "\x0"
D_STR_SYMPHONY "\x0"
D_STR_HITACHI_AC3 "\x0"
D_STR_DAIKIN64 "\x0"
D_STR_AIRWELL "\x0"
D_STR_DELONGHI_AC "\x0"
D_STR_DOSHISHA "\x0"
D_STR_MULTIBRACKETS "\x0"
D_STR_CARRIER_AC40 "\x0"
D_STR_CARRIER_AC64 "\x0"
// New protocol strings should be added just above this line.
"\x0"; // This string requires double null termination.

View File

@ -1,83 +0,0 @@
// Copyright 2020 David Conran
#include "IRrecv.h"
#include "IRsend.h"
// Airwell "Manchester code" based protocol.
// Some other Airwell products use the COOLIX protocol.
//
// Supports:
// Brand: Airwell, Model: RC08W remote
const uint8_t kAirwellOverhead = 4;
const uint16_t kAirwellHalfClockPeriod = 950; // uSeconds
const uint16_t kAirwellHdrMark = 3 * kAirwellHalfClockPeriod; // uSeconds
const uint16_t kAirwellHdrSpace = 4 * kAirwellHalfClockPeriod; // uSeconds
const uint16_t kAirwellFooterMark = 5 * kAirwellHalfClockPeriod; // uSeconds
#if SEND_AIRWELL
// Send an Airwell Manchester Code formatted message.
//
// Args:
// data: The message to be sent.
// nbits: The number of bits of the message to be sent.
// Typically kAirwellBits.
// repeat: The number of times the command is to be repeated.
//
// Status: BETA / Appears to be working.
//
// Ref:
// https://github.com/crankyoldgit/IRremoteESP8266/issues/1069
void IRsend::sendAirwell(uint64_t data, uint16_t nbits, uint16_t repeat) {
// Header + Data
sendManchester(kAirwellHdrMark, kAirwellHdrMark, kAirwellHalfClockPeriod,
0, 0, data, nbits, 38000, true, repeat);
// Footer
mark(kAirwellHdrMark + kAirwellHalfClockPeriod);
space(kDefaultMessageGap); // A guess.
}
#endif
#if DECODE_AIRWELL
// Decode the supplied Airwell "Manchester code" message.
//
// Args:
// results: Ptr to the data to decode and where to store the decode result.
// offset: The starting index to use when attempting to decode the raw data.
// Typically/Defaults to kStartOffset.
// nbits: The number of data bits to expect. Typically kAirwellBits.
// strict: Flag indicating if we should perform strict matching.
// Returns:
// boolean: True if it can decode it, false if it can't.
//
// Status: BETA / Appears to be working.
//
// Ref:
// https://github.com/crankyoldgit/IRremoteESP8266/issues/1069
bool IRrecv::decodeAirwell(decode_results *results, uint16_t offset,
const uint16_t nbits, const bool strict) {
if (results->rawlen < nbits + kAirwellOverhead - offset)
return false; // Too short a message to match.
// Compliance
if (strict && nbits != kAirwellBits)
return false; // Doesn't match our protocol defn.
// Header #1 + Data #1 + Footer #1 (There are total of 3 sections)
uint16_t used = matchManchester(results->rawbuf + offset, &results->value,
results->rawlen - offset, nbits,
kAirwellHdrMark, kAirwellHdrMark,
kAirwellHalfClockPeriod,
kAirwellHdrMark, kAirwellHdrSpace,
true);
if (used == 0) return false;
offset += used;
// Success
results->decode_type = decode_type_t::AIRWELL;
results->bits = nbits;
results->address = 0;
results->command = 0;
return true;
}
#endif

View File

@ -1,217 +0,0 @@
// Copyright 2018, 2020 David Conran
// Supports:
// Brand: Carrier/Surrey, Model: 42QG5A55970 remote
// Brand: Carrier/Surrey, Model: 619EGX0090E0 A/C
// Brand: Carrier/Surrey, Model: 619EGX0120E0 A/C
// Brand: Carrier/Surrey, Model: 619EGX0180E0 A/C
// Brand: Carrier/Surrey, Model: 619EGX0220E0 A/C
// Brand: Carrier/Surrey, Model: 53NGK009/012 Inverter
#include "IRrecv.h"
#include "IRsend.h"
#include "IRutils.h"
// Constants
// Ref:
// https://github.com/crankyoldgit/IRremoteESP8266/issues/385
const uint16_t kCarrierAcHdrMark = 8532;
const uint16_t kCarrierAcHdrSpace = 4228;
const uint16_t kCarrierAcBitMark = 628;
const uint16_t kCarrierAcOneSpace = 1320;
const uint16_t kCarrierAcZeroSpace = 532;
const uint16_t kCarrierAcGap = 20000;
const uint16_t kCarrierAcFreq = 38; // kHz. (An educated guess)
const uint16_t kCarrierAc40HdrMark = 8402;
const uint16_t kCarrierAc40HdrSpace = 4166;
const uint16_t kCarrierAc40BitMark = 547;
const uint16_t kCarrierAc40OneSpace = 1540;
const uint16_t kCarrierAc40ZeroSpace = 497;
// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1127
const uint16_t kCarrierAc64HdrMark = 8940;
const uint16_t kCarrierAc64HdrSpace = 4556;
const uint16_t kCarrierAc64BitMark = 503;
const uint16_t kCarrierAc64OneSpace = 1736;
const uint16_t kCarrierAc64ZeroSpace = 615;
const uint32_t kCarrierAc64Gap = kDefaultMessageGap; // A guess.
#if SEND_CARRIER_AC
// Send a Carrier HVAC formatted message.
//
// Args:
// data: The message to be sent.
// nbits: The bit size of the message being sent. typically kCarrierAcBits.
// repeat: The number of times the message is to be repeated.
//
// Status: STABLE / Work on real devices.
//
void IRsend::sendCarrierAC(uint64_t data, uint16_t nbits, uint16_t repeat) {
for (uint16_t r = 0; r <= repeat; r++) {
uint64_t temp_data = data;
// Carrier sends the data block three times. normal + inverted + normal.
for (uint16_t i = 0; i < 3; i++) {
sendGeneric(kCarrierAcHdrMark, kCarrierAcHdrSpace, kCarrierAcBitMark,
kCarrierAcOneSpace, kCarrierAcBitMark, kCarrierAcZeroSpace,
kCarrierAcBitMark, kCarrierAcGap, temp_data, nbits, 38, true,
0, kDutyDefault);
temp_data = invertBits(temp_data, nbits);
}
}
}
#endif
#if DECODE_CARRIER_AC
// Decode the supplied Carrier HVAC message.
// Carrier HVAC messages contain only 32 bits, but it is sent three(3) times.
// i.e. normal + inverted + normal
// Args:
// results: Ptr to the data to decode and where to store the decode result.
// offset: The starting index to use when attempting to decode the raw data.
// Typically/Defaults to kStartOffset.
// nbits: Nr. of bits to expect in the data portion.
// Typically kCarrierAcBits.
// strict: Flag to indicate if we strictly adhere to the specification.
// Returns:
// boolean: True if it can decode it, false if it can't.
//
// Status: BETA / Probably works.
//
bool IRrecv::decodeCarrierAC(decode_results *results, uint16_t offset,
const uint16_t nbits, const bool strict) {
if (results->rawlen < ((2 * nbits + kHeader + kFooter) * 3) - 1 + offset)
return false; // Can't possibly be a valid Carrier message.
if (strict && nbits != kCarrierAcBits)
return false; // We expect Carrier to be 32 bits of message.
uint64_t data = 0;
uint64_t prev_data = 0;
for (uint8_t i = 0; i < 3; i++) {
prev_data = data;
// Match Header + Data + Footer
uint16_t used;
used = matchGeneric(results->rawbuf + offset, &data,
results->rawlen - offset, nbits,
kCarrierAcHdrMark, kCarrierAcHdrSpace,
kCarrierAcBitMark, kCarrierAcOneSpace,
kCarrierAcBitMark, kCarrierAcZeroSpace,
kCarrierAcBitMark, kCarrierAcGap, true);
if (!used) return false;
offset += used;
// Compliance.
if (strict) {
// Check if the data is an inverted copy of the previous data.
if (i > 0 && prev_data != invertBits(data, nbits)) return false;
}
}
// Success
results->bits = nbits;
results->value = data;
results->decode_type = CARRIER_AC;
results->address = data >> 16;
results->command = data & 0xFFFF;
return true;
}
#endif // DECODE_CARRIER_AC
#if SEND_CARRIER_AC40
/// Send a Carrier 40bit HVAC formatted message.
/// Status: Alpha / Yet to be tested against a real device.
/// @param[in] data The message to be sent.
/// @param[in] nbits The bit size of the message being sent.
/// @param[in] repeat The number of times the message is to be repeated.
void IRsend::sendCarrierAC40(const uint64_t data, const uint16_t nbits,
const uint16_t repeat) {
sendGeneric(kCarrierAc40HdrMark, kCarrierAc40HdrSpace, kCarrierAc40BitMark,
kCarrierAc40OneSpace, kCarrierAc40BitMark, kCarrierAc40ZeroSpace,
kCarrierAc40BitMark, kCarrierAcGap,
data, nbits, kCarrierAcFreq, true, repeat, kDutyDefault);
}
#endif // SEND_CARRIER_AC40
#if DECODE_CARRIER_AC40
/// Decode the supplied Carrier 40-bit HVAC message.
/// Carrier HVAC messages contain only 40 bits, but it is sent three(3) times.
/// Status: BETA / Probably works.
/// @param[in,out] results Ptr to the data to decode & where to store the decode
/// result.
/// @param[in] offset The starting index to use when attempting to decode the
/// raw data. Typically/Defaults to kStartOffset.
/// @param[in] nbits The number of data bits to expect.
/// @param[in] strict Flag indicating if we should perform strict matching.
/// @return A boolean. True if it can decode it, false if it can't.
bool IRrecv::decodeCarrierAC40(decode_results *results, uint16_t offset,
const uint16_t nbits, const bool strict) {
if (results->rawlen < 2 * nbits + kHeader + kFooter - 1 + offset)
return false; // Can't possibly be a valid Carrier message.
if (strict && nbits != kCarrierAc40Bits)
return false; // We expect Carrier to be 40 bits of message.
if (!matchGeneric(results->rawbuf + offset, &(results->value),
results->rawlen - offset, nbits,
kCarrierAc40HdrMark, kCarrierAc40HdrSpace,
kCarrierAc40BitMark, kCarrierAc40OneSpace,
kCarrierAc40BitMark, kCarrierAc40ZeroSpace,
kCarrierAc40BitMark, kCarrierAcGap, true)) return false;
// Success
results->bits = nbits;
results->decode_type = CARRIER_AC40;
results->address = 0;
results->command = 0;
return true;
}
#endif // DECODE_CARRIER_AC40
#if SEND_CARRIER_AC64
/// Send a Carrier 64bit HVAC formatted message.
/// Status: Alpha / Yet to be tested against a real device.
/// @param[in] data The message to be sent.
/// @param[in] nbits The bit size of the message being sent.
/// @param[in] repeat The number of times the message is to be repeated.
void IRsend::sendCarrierAC64(const uint64_t data, const uint16_t nbits,
const uint16_t repeat) {
sendGeneric(kCarrierAc64HdrMark, kCarrierAc64HdrSpace, kCarrierAc64BitMark,
kCarrierAc64OneSpace, kCarrierAc64BitMark, kCarrierAc64ZeroSpace,
kCarrierAc64BitMark, kCarrierAc64Gap,
data, nbits, kCarrierAcFreq, false, repeat, kDutyDefault);
}
#endif // SEND_CARRIER_AC64
#if DECODE_CARRIER_AC64
/// Decode the supplied Carrier 64-bit HVAC message.
/// Status: BETA / Probably works.
/// @param[in,out] results Ptr to the data to decode & where to store the decode
/// result.
/// @param[in] offset The starting index to use when attempting to decode the
/// raw data. Typically/Defaults to kStartOffset.
/// @param[in] nbits The number of data bits to expect.
/// @param[in] strict Flag indicating if we should perform strict matching.
/// @return A boolean. True if it can decode it, false if it can't.
bool IRrecv::decodeCarrierAC64(decode_results *results, uint16_t offset,
const uint16_t nbits, const bool strict) {
if (results->rawlen < 2 * nbits + kHeader + kFooter - 1 + offset)
return false; // Can't possibly be a valid Carrier message.
if (strict && nbits != kCarrierAc64Bits)
return false; // We expect Carrier to be 64 bits of message.
if (!matchGeneric(results->rawbuf + offset, &(results->value),
results->rawlen - offset, nbits,
kCarrierAc64HdrMark, kCarrierAc64HdrSpace,
kCarrierAc64BitMark, kCarrierAc64OneSpace,
kCarrierAc64BitMark, kCarrierAc64ZeroSpace,
kCarrierAc64BitMark, kCarrierAc64Gap, true,
kUseDefTol, kMarkExcess, false)) return false;
// Success
results->bits = nbits;
results->decode_type = CARRIER_AC64;
results->address = 0;
results->command = 0;
return true;
}
#endif // DECODE_CARRIER_AC64

View File

@ -1,237 +0,0 @@
// Copyright 2009 Ken Shirriff
// Copyright 2016 marcosamarinho
// Copyright 2017 David Conran
#include <algorithm>
#include "IRrecv.h"
#include "IRsend.h"
// Sanyo SA 8650B originally added from:
// https://github.com/shirriff/Arduino-IRremote/
// Sanyo LC7461 support originally by marcosamarinho
// Constants
// Sanyo SA 8650B
// Ref:
// https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Sanyo.cpp
const uint16_t kSanyoSa8650bHdrMark = 3500; // seen range 3500
const uint16_t kSanyoSa8650bHdrSpace = 950; // seen 950
const uint16_t kSanyoSa8650bOneMark = 2400; // seen 2400
const uint16_t kSanyoSa8650bZeroMark = 700; // seen 700
// usually see 713 - not using ticks as get number wrapround
const uint16_t kSanyoSa8650bDoubleSpaceUsecs = 800;
const uint16_t kSanyoSa8650bRptLength = 45000;
// Sanyo LC7461
// Ref:
// https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Sanyo.cpp
// http://slydiman.narod.ru/scr/kb/sanyo.htm
// http://pdf.datasheetcatalog.com/datasheet/sanyo/LC7461.pdf
const uint16_t kSanyoLc7461AddressMask = (1 << kSanyoLC7461AddressBits) - 1;
const uint16_t kSanyoLc7461CommandMask = (1 << kSanyoLC7461CommandBits) - 1;
const uint16_t kSanyoLc7461HdrMark = 9000;
const uint16_t kSanyoLc7461HdrSpace = 4500;
const uint16_t kSanyoLc7461BitMark = 560; // 1T
const uint16_t kSanyoLc7461OneSpace = 1690; // 3T
const uint16_t kSanyoLc7461ZeroSpace = 560; // 1T
const uint32_t kSanyoLc7461MinCommandLength = 108000;
const uint16_t kSanyoLc7461MinGap =
kSanyoLc7461MinCommandLength -
(kSanyoLc7461HdrMark + kSanyoLc7461HdrSpace +
kSanyoLC7461Bits * (kSanyoLc7461BitMark +
(kSanyoLc7461OneSpace + kSanyoLc7461ZeroSpace) / 2) +
kSanyoLc7461BitMark);
#if SEND_SANYO
// Construct a Sanyo LC7461 message.
//
// Args:
// address: The 13 bit value of the address(Custom) portion of the protocol.
// command: The 8 bit value of the command(Key) portion of the protocol.
// Returns:
// An uint64_t with the encoded raw 42 bit Sanyo LC7461 data value.
//
// Notes:
// This protocol uses the NEC protocol timings. However, data is
// formatted as : address(13 bits), !address, command(8 bits), !command.
// According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon
uint64_t IRsend::encodeSanyoLC7461(uint16_t address, uint8_t command) {
// Mask our input values to ensure the correct bit sizes.
address &= kSanyoLc7461AddressMask;
command &= kSanyoLc7461CommandMask;
uint64_t data = address;
address ^= kSanyoLc7461AddressMask; // Invert the 13 LSBs.
// Append the now inverted address.
data = (data << kSanyoLC7461AddressBits) | address;
// Append the command.
data = (data << kSanyoLC7461CommandBits) | command;
command ^= kSanyoLc7461CommandMask; // Invert the command.
// Append the now inverted command.
data = (data << kSanyoLC7461CommandBits) | command;
return data;
}
// Send a Sanyo LC7461 message.
//
// Args:
// data: The contents of the command you want to send.
// nbits: The bit size of the command being sent.
// repeat: The number of times you want the command to be repeated.
//
// Status: BETA / Probably works.
//
// Notes:
// Based on @marcosamarinho's work.
// This protocol uses the NEC protocol timings. However, data is
// formatted as : address(13 bits), !address, command (8 bits), !command.
// According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon
// Information for this protocol is available at the Sanyo LC7461 datasheet.
// Repeats are performed similar to the NEC method of sending a special
// repeat message, rather than duplicating the entire message.
// Ref:
// https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Sanyo.cpp
// http://pdf.datasheetcatalog.com/datasheet/sanyo/LC7461.pdf
void IRsend::sendSanyoLC7461(uint64_t data, uint16_t nbits, uint16_t repeat) {
// This protocol appears to be another 42-bit variant of the NEC protocol.
sendNEC(data, nbits, repeat);
}
#endif // SEND_SANYO
#if DECODE_SANYO
// Decode the supplied SANYO LC7461 message.
//
// Args:
// results: Ptr to the data to decode and where to store the decode result.
// offset: The starting index to use when attempting to decode the raw data.
// Typically/Defaults to kStartOffset.
// nbits: Nr. of data bits to expect.
// strict: Flag indicating if we should perform strict matching.
// Returns:
// boolean: True if it can decode it, false if it can't.
//
// Status: BETA / Probably works.
//
// Notes:
// Based on @marcosamarinho's work.
// This protocol uses the NEC protocol. However, data is
// formatted as : address(13 bits), !address, command (8 bits), !command.
// According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon
// Information for this protocol is available at the Sanyo LC7461 datasheet.
// Ref:
// http://slydiman.narod.ru/scr/kb/sanyo.htm
// https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Sanyo.cpp
// http://pdf.datasheetcatalog.com/datasheet/sanyo/LC7461.pdf
bool IRrecv::decodeSanyoLC7461(decode_results *results, uint16_t offset,
const uint16_t nbits, const bool strict) {
if (strict && nbits != kSanyoLC7461Bits)
return false; // Not strictly in spec.
// This protocol is basically a 42-bit variant of the NEC protocol.
if (!decodeNEC(results, offset, nbits, false))
return false; // Didn't match a NEC format (without strict)
// Bits 30 to 42+.
uint16_t address =
results->value >> (kSanyoLC7461Bits - kSanyoLC7461AddressBits);
// Bits 9 to 16.
uint8_t command =
(results->value >> kSanyoLC7461CommandBits) & kSanyoLc7461CommandMask;
// Compliance
if (strict) {
if (results->bits != nbits) return false;
// Bits 17 to 29.
uint16_t inverted_address =
(results->value >> (kSanyoLC7461CommandBits * 2)) &
kSanyoLc7461AddressMask;
// Bits 1-8.
uint8_t inverted_command = results->value & kSanyoLc7461CommandMask;
if ((address ^ kSanyoLc7461AddressMask) != inverted_address)
return false; // Address integrity check failed.
if ((command ^ kSanyoLc7461CommandMask) != inverted_command)
return false; // Command integrity check failed.
}
// Success
results->decode_type = SANYO_LC7461;
results->address = address;
results->command = command;
return true;
}
/* NOTE: Disabled due to poor quality.
// Decode the supplied Sanyo SA 8650B message.
//
// Args:
// results: Ptr to the data to decode and where to store the decode result.
// nbits: Nr. of data bits to expect.
// strict: Flag indicating if we should perform strict matching.
// Returns:
// boolean: True if it can decode it, false if it can't.
//
// Status: Depricated.
//
// NOTE: This decoder looks like rubbish. Only keeping it for compatibility
// with the Arduino IRremote library. Seriously, don't trust it.
// If someone has a device that this is supposed to be for, please log an
// Issue on github with a rawData dump please. We should probably remove
// it. We think this is a Sanyo decoder - serial = SA 8650B
// Ref:
// https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Sanyo.cpp
bool IRrecv::decodeSanyo(decode_results *results, uint16_t nbits, bool strict) {
if (results->rawlen < 2 * nbits + kHeader - 1)
return false; // Shorter than shortest possible.
if (strict && nbits != kSanyoSA8650BBits)
return false; // Doesn't match the spec.
uint16_t offset = 0;
// TODO(crankyoldgit): This repeat code looks like garbage, it should never
// match or if it does, it won't be reliable. We should probably just
// remove it.
if (results->rawbuf[offset++] < kSanyoSa8650bDoubleSpaceUsecs) {
results->bits = 0;
results->value = kRepeat;
results->decode_type = SANYO;
results->address = 0;
results->command = 0;
results->repeat = true;
return true;
}
// Header
if (!matchMark(results->rawbuf[offset++], kSanyoSa8650bHdrMark))
return false;
// NOTE: These next two lines look very wrong. Treat as suspect.
if (!matchMark(results->rawbuf[offset++], kSanyoSa8650bHdrMark))
return false;
// Data
uint64_t data = 0;
while (offset + 1 < results->rawlen) {
if (!matchSpace(results->rawbuf[offset], kSanyoSa8650bHdrSpace))
break;
offset++;
if (matchMark(results->rawbuf[offset], kSanyoSa8650bOneMark))
data = (data << 1) | 1; // 1
else if (matchMark(results->rawbuf[offset], kSanyoSa8650bZeroMark))
data <<= 1; // 0
else
return false;
offset++;
}
if (strict && kSanyoSA8650BBits > (offset - 1U) / 2U)
return false;
// Success
results->bits = (offset - 1) / 2;
results->decode_type = SANYO;
results->value = data;
results->address = 0;
results->command = 0;
return true;
}
*/
#endif // DECODE_SANYO

View File

@ -1,28 +0,0 @@
// Copyright 2017 David Conran
// Sherwood IR remote emulation
// Supports:
// Brand: Sherwood, Model: RC-138 remote
// Brand: Sherwood, Model: RD6505(B) Receiver
#include <algorithm>
#include "IRsend.h"
#if SEND_SHERWOOD
// Send an IR command to a Sherwood device.
//
// Args:
// data: The contents of the command you want to send.
// nbits: The bit size of the command being sent. (kSherwoodBits)
// repeat: The nr. of times you want the command to be repeated. (Default: 1)
//
// Status: STABLE / Known working.
//
// Note:
// Sherwood remote codes appear to be NEC codes with a manditory repeat code.
// i.e. repeat should be >= kSherwoodMinRepeat (1).
void IRsend::sendSherwood(uint64_t data, uint16_t nbits, uint16_t repeat) {
sendNEC(data, nbits, std::max((uint16_t)kSherwoodMinRepeat, repeat));
}
#endif

View File

@ -1,358 +0,0 @@
// Copyright 2017 David Conran
// Toshiba A/C support added by David Conran
#include "ir_Toshiba.h"
#include <algorithm>
#include <cstring>
#ifndef ARDUINO
#include <string>
#endif
#include "IRrecv.h"
#include "IRsend.h"
#include "IRtext.h"
#include "IRutils.h"
//
// Equipment it seems compatible with:
// * Toshiba RAS-B13N3KV2 / Akita EVO II
// * Toshiba RAS-B13N3KVP-E, RAS 18SKP-ES
// * Toshiba WH-TA04NE, WC-L03SE
// * <Add models (A/C & remotes) you've gotten it working with here>
// Constants
// Toshiba A/C
// Ref:
// https://github.com/r45635/HVAC-IR-Control/blob/master/HVAC_ESP8266/HVAC_ESP8266T.ino#L77
const uint16_t kToshibaAcHdrMark = 4400;
const uint16_t kToshibaAcHdrSpace = 4300;
const uint16_t kToshibaAcBitMark = 543;
const uint16_t kToshibaAcOneSpace = 1623;
const uint16_t kToshibaAcZeroSpace = 472;
const uint16_t kToshibaAcMinGap = 7048;
using irutils::addBoolToString;
using irutils::addFanToString;
using irutils::addIntToString;
using irutils::addLabeledString;
using irutils::addModeToString;
using irutils::addTempToString;
using irutils::setBit;
using irutils::setBits;
#if SEND_TOSHIBA_AC
// Send a Toshiba A/C message.
//
// Args:
// data: An array of bytes containing the IR command.
// nbytes: Nr. of bytes of data in the array. (>=kToshibaACStateLength)
// repeat: Nr. of times the message is to be repeated.
// (Default = kToshibaACMinRepeat).
//
// Status: StABLE / Working.
//
void IRsend::sendToshibaAC(const unsigned char data[], const uint16_t nbytes,
const uint16_t repeat) {
if (nbytes < kToshibaACStateLength)
return; // Not enough bytes to send a proper message.
sendGeneric(kToshibaAcHdrMark, kToshibaAcHdrSpace, kToshibaAcBitMark,
kToshibaAcOneSpace, kToshibaAcBitMark, kToshibaAcZeroSpace,
kToshibaAcBitMark, kToshibaAcMinGap, data, nbytes, 38, true,
repeat, 50);
}
#endif // SEND_TOSHIBA_AC
// Code to emulate Toshiba A/C IR remote control unit.
// Inspired and derived from the work done at:
// https://github.com/r45635/HVAC-IR-Control
//
// Status: STABLE / Working.
//
// Initialise the object.
IRToshibaAC::IRToshibaAC(const uint16_t pin, const bool inverted,
const bool use_modulation)
: _irsend(pin, inverted, use_modulation) { this->stateReset(); }
// Reset the state of the remote to a known good state/sequence.
void IRToshibaAC::stateReset(void) {
// The state of the IR remote in IR code form.
// Known good state obtained from:
// https://github.com/r45635/HVAC-IR-Control/blob/master/HVAC_ESP8266/HVAC_ESP8266T.ino#L103
static const uint8_t kReset[kToshibaACStateLength] = {
0xF2, 0x0D, 0x03, 0xFC, 0x01};
memcpy(remote_state, kReset, kToshibaACStateLength);
mode_state = getMode(true);
}
// Configure the pin for output.
void IRToshibaAC::begin(void) { _irsend.begin(); }
#if SEND_TOSHIBA_AC
// Send the current desired state to the IR LED.
void IRToshibaAC::send(const uint16_t repeat) {
_irsend.sendToshibaAC(getRaw(), kToshibaACStateLength, repeat);
}
#endif // SEND_TOSHIBA_AC
// Return a pointer to the internal state date of the remote.
uint8_t* IRToshibaAC::getRaw(void) {
this->checksum();
return remote_state;
}
// Override the internal state with the new state.
void IRToshibaAC::setRaw(const uint8_t newState[]) {
memcpy(remote_state, newState, kToshibaACStateLength);
mode_state = this->getMode(true);
}
// Calculate the checksum for a given array.
// Args:
// state: The array to calculate the checksum over.
// length: The size of the array.
// Returns:
// The 8 bit checksum value.
uint8_t IRToshibaAC::calcChecksum(const uint8_t state[],
const uint16_t length) {
uint8_t checksum = 0;
// Only calculate it for valid lengths.
if (length > 1) {
// Checksum is simple XOR of all bytes except the last one.
for (uint8_t i = 0; i < length - 1; i++) checksum ^= state[i];
}
return checksum;
}
// Verify the checksum is valid for a given state.
// Args:
// state: The array to verify the checksum of.
// length: The size of the state.
// Returns:
// A boolean.
bool IRToshibaAC::validChecksum(const uint8_t state[], const uint16_t length) {
return (length > 1 && state[length - 1] == IRToshibaAC::calcChecksum(state,
length));
}
// Calculate & set the checksum for the current internal state of the remote.
void IRToshibaAC::checksum(const uint16_t length) {
// Stored the checksum value in the last byte.
if (length > 1) remote_state[length - 1] = this->calcChecksum(remote_state,
length);
}
// Set the requested power state of the A/C to on.
void IRToshibaAC::on(void) { setPower(true); }
// Set the requested power state of the A/C to off.
void IRToshibaAC::off(void) { setPower(false); }
// Set the requested power state of the A/C.
void IRToshibaAC::setPower(const bool on) {
setBit(&remote_state[6], kToshibaAcPowerOffset, !on); // Cleared when on.
if (on)
setMode(mode_state);
else
setBits(&remote_state[6], kToshibaAcModeOffset, kToshibaAcModeSize,
kToshibaAcHeat);
}
// Return the requested power state of the A/C.
bool IRToshibaAC::getPower(void) {
return !GETBIT8(remote_state[6], kToshibaAcPowerOffset);
}
// Set the temp. in deg C
void IRToshibaAC::setTemp(const uint8_t degrees) {
uint8_t temp = std::max((uint8_t)kToshibaAcMinTemp, degrees);
temp = std::min((uint8_t)kToshibaAcMaxTemp, temp);
setBits(&remote_state[5], kToshibaAcTempOffset, kToshibaAcTempSize,
temp - kToshibaAcMinTemp);
}
// Return the set temp. in deg C
uint8_t IRToshibaAC::getTemp(void) {
return GETBITS8(remote_state[5], kToshibaAcTempOffset, kToshibaAcTempSize) +
kToshibaAcMinTemp;
}
// Set the speed of the fan, 0-5.
// 0 is auto, 1-5 is the speed, 5 is Max.
void IRToshibaAC::setFan(const uint8_t speed) {
uint8_t fan = speed;
// Bounds check
if (fan > kToshibaAcFanMax)
fan = kToshibaAcFanMax; // Set the fan to maximum if out of range.
if (fan > kToshibaAcFanAuto) fan++;
setBits(&remote_state[6], kToshibaAcFanOffset, kToshibaAcFanSize, fan);
}
// Return the requested state of the unit's fan.
uint8_t IRToshibaAC::getFan(void) {
uint8_t fan = GETBITS8(remote_state[6], kToshibaAcFanOffset,
kToshibaAcFanSize);
if (fan == kToshibaAcFanAuto) return kToshibaAcFanAuto;
return --fan;
}
// Get the requested climate operation mode of the a/c unit.
// Args:
// useRaw: Indicate to get the mode from the state array. (Default: false)
// Returns:
// A uint8_t containing the A/C mode.
uint8_t IRToshibaAC::getMode(const bool useRaw) {
if (useRaw)
return GETBITS8(remote_state[6], kToshibaAcModeOffset, kToshibaAcModeSize);
else
return mode_state;
}
// Set the requested climate operation mode of the a/c unit.
void IRToshibaAC::setMode(const uint8_t mode) {
// If we get an unexpected mode, default to AUTO.
switch (mode) {
case kToshibaAcAuto:
case kToshibaAcCool:
case kToshibaAcDry:
case kToshibaAcHeat:
mode_state = mode;
// Only adjust the remote_state if we have power set to on.
if (getPower())
setBits(&remote_state[6], kToshibaAcModeOffset, kToshibaAcModeSize,
mode_state);
return;
default: this->setMode(kToshibaAcAuto); // There is no Fan mode.
}
}
// Convert a standard A/C mode into its native mode.
uint8_t IRToshibaAC::convertMode(const stdAc::opmode_t mode) {
switch (mode) {
case stdAc::opmode_t::kCool: return kToshibaAcCool;
case stdAc::opmode_t::kHeat: return kToshibaAcHeat;
case stdAc::opmode_t::kDry: return kToshibaAcDry;
// No Fan mode.
default: return kToshibaAcAuto;
}
}
// Convert a standard A/C Fan speed into its native fan speed.
uint8_t IRToshibaAC::convertFan(const stdAc::fanspeed_t speed) {
switch (speed) {
case stdAc::fanspeed_t::kMin: return kToshibaAcFanMax - 4;
case stdAc::fanspeed_t::kLow: return kToshibaAcFanMax - 3;
case stdAc::fanspeed_t::kMedium: return kToshibaAcFanMax - 2;
case stdAc::fanspeed_t::kHigh: return kToshibaAcFanMax - 1;
case stdAc::fanspeed_t::kMax: return kToshibaAcFanMax;
default: return kToshibaAcFanAuto;
}
}
// Convert a native mode to it's common equivalent.
stdAc::opmode_t IRToshibaAC::toCommonMode(const uint8_t mode) {
switch (mode) {
case kToshibaAcCool: return stdAc::opmode_t::kCool;
case kToshibaAcHeat: return stdAc::opmode_t::kHeat;
case kToshibaAcDry: return stdAc::opmode_t::kDry;
default: return stdAc::opmode_t::kAuto;
}
}
// Convert a native fan speed to it's common equivalent.
stdAc::fanspeed_t IRToshibaAC::toCommonFanSpeed(const uint8_t spd) {
switch (spd) {
case kToshibaAcFanMax: return stdAc::fanspeed_t::kMax;
case kToshibaAcFanMax - 1: return stdAc::fanspeed_t::kHigh;
case kToshibaAcFanMax - 2: return stdAc::fanspeed_t::kMedium;
case kToshibaAcFanMax - 3: return stdAc::fanspeed_t::kLow;
case kToshibaAcFanMax - 4: return stdAc::fanspeed_t::kMin;
default: return stdAc::fanspeed_t::kAuto;
}
}
// Convert the A/C state to it's common equivalent.
stdAc::state_t IRToshibaAC::toCommon(void) {
stdAc::state_t result;
result.protocol = decode_type_t::TOSHIBA_AC;
result.model = -1; // Not supported.
result.power = this->getPower();
result.mode = this->toCommonMode(this->getMode());
result.celsius = true;
result.degrees = this->getTemp();
result.fanspeed = this->toCommonFanSpeed(this->getFan());
// Not supported.
result.turbo = false;
result.light = false;
result.filter = false;
result.econo = false;
result.swingv = stdAc::swingv_t::kOff;
result.swingh = stdAc::swingh_t::kOff;
result.quiet = false;
result.clean = false;
result.beep = false;
result.sleep = -1;
result.clock = -1;
return result;
}
// Convert the internal state into a human readable string.
String IRToshibaAC::toString(void) {
String result = "";
result.reserve(40);
result += addBoolToString(getPower(), kPowerStr, false);
result += addModeToString(getMode(), kToshibaAcAuto, kToshibaAcCool,
kToshibaAcHeat, kToshibaAcDry, kToshibaAcAuto);
result += addTempToString(getTemp());
result += addFanToString(getFan(), kToshibaAcFanMax, kToshibaAcFanMin,
kToshibaAcFanAuto, kToshibaAcFanAuto,
kToshibaAcFanMed);
return result;
}
#if DECODE_TOSHIBA_AC
// Decode a Toshiba AC IR message if possible.
// Places successful decode information in the results pointer.
// Args:
// results: Ptr to the data to decode and where to store the decode result.
// offset: The starting index to use when attempting to decode the raw data.
// Typically/Defaults to kStartOffset.
// nbits: The number of data bits to expect. Typically kToshibaACBits.
// strict: Flag to indicate if we strictly adhere to the specification.
// Returns:
// boolean: True if it can decode it, false if it can't.
//
// Status: STABLE / Working.
//
// Ref:
//
bool IRrecv::decodeToshibaAC(decode_results* results, uint16_t offset,
const uint16_t nbits, const bool strict) {
// Compliance
if (strict && nbits != kToshibaACBits)
return false; // Must be called with the correct nr. of bytes.
// Match Header + Data + Footer
if (!matchGeneric(results->rawbuf + offset, results->state,
results->rawlen - offset, nbits,
kToshibaAcHdrMark, kToshibaAcHdrSpace,
kToshibaAcBitMark, kToshibaAcOneSpace,
kToshibaAcBitMark, kToshibaAcZeroSpace,
kToshibaAcBitMark, kToshibaAcMinGap, true,
_tolerance, kMarkExcess)) return false;
// Compliance
if (strict) {
// Check that the checksum of the message is correct.
if (!IRToshibaAC::validChecksum(results->state)) return false;
}
// Success
results->decode_type = TOSHIBA_AC;
results->bits = nbits;
// No need to record the state as we stored it as we decoded it.
// As we use result->state, we don't record value, address, or command as it
// is a union data type.
return true;
}
#endif // DECODE_TOSHIBA_AC

View File

@ -1,102 +0,0 @@
// Copyright 2017 David Conran
// Toshiba A/C support added by David Conran
// Supports:
// Brand: Toshiba, Model: RAS-B13N3KV2
// Brand: Toshiba, Model: Akita EVO II
// Brand: Toshiba, Model: RAS-B13N3KVP-E
// Brand: Toshiba, Model: RAS 18SKP-ES
// Brand: Toshiba, Model: WH-TA04NE
// Brand: Toshiba, Model: WC-L03SE
#ifndef IR_TOSHIBA_H_
#define IR_TOSHIBA_H_
#define __STDC_LIMIT_MACROS
#include <stdint.h>
#ifdef ARDUINO
#include <Arduino.h>
#endif
#include "IRremoteESP8266.h"
#include "IRsend.h"
#ifdef UNIT_TEST
#include "IRsend_test.h"
#endif
// Constants
const uint8_t kToshibaAcModeOffset = 0;
const uint8_t kToshibaAcModeSize = 2; // Nr. of bits
const uint8_t kToshibaAcAuto = 0;
const uint8_t kToshibaAcCool = 1;
const uint8_t kToshibaAcDry = 2;
const uint8_t kToshibaAcHeat = 3;
const uint8_t kToshibaAcPowerOffset = 2;
const uint8_t kToshibaAcFanOffset = 5;
const uint8_t kToshibaAcFanSize = 3; // Nr. of bits
const uint8_t kToshibaAcFanAuto = 0b000;
const uint8_t kToshibaAcFanMin = 0b001;
const uint8_t kToshibaAcFanMed = 0b011;
const uint8_t kToshibaAcFanMax = 0b101;
const uint8_t kToshibaAcTempOffset = 4;
const uint8_t kToshibaAcTempSize = 4; // Nr. of bits
const uint8_t kToshibaAcMinTemp = 17; // 17C
const uint8_t kToshibaAcMaxTemp = 30; // 30C
// Legacy defines. (Deperecated)
#define TOSHIBA_AC_AUTO kToshibaAcAuto
#define TOSHIBA_AC_COOL kToshibaAcCool
#define TOSHIBA_AC_DRY kToshibaAcDry
#define TOSHIBA_AC_HEAT kToshibaAcHeat
#define TOSHIBA_AC_POWER kToshibaAcPower
#define TOSHIBA_AC_FAN_AUTO kToshibaAcFanAuto
#define TOSHIBA_AC_FAN_MAX kToshibaAcFanMax
#define TOSHIBA_AC_MIN_TEMP kToshibaAcMinTemp
#define TOSHIBA_AC_MAX_TEMP kToshibaAcMaxTemp
class IRToshibaAC {
public:
explicit IRToshibaAC(const uint16_t pin, const bool inverted = false,
const bool use_modulation = true);
void stateReset(void);
#if SEND_TOSHIBA_AC
void send(const uint16_t repeat = kToshibaACMinRepeat);
int8_t calibrate(void) { return _irsend.calibrate(); }
#endif // SEND_TOSHIBA_AC
void begin(void);
void on(void);
void off(void);
void setPower(const bool on);
bool getPower(void);
void setTemp(const uint8_t degrees);
uint8_t getTemp(void);
void setFan(const uint8_t speed);
uint8_t getFan(void);
void setMode(const uint8_t mode);
uint8_t getMode(const bool useRaw = false);
void setRaw(const uint8_t newState[]);
uint8_t* getRaw(void);
static bool validChecksum(const uint8_t state[],
const uint16_t length = kToshibaACStateLength);
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(void);
#ifndef UNIT_TEST
private:
IRsend _irsend;
#else
IRsendTest _irsend;
#endif
uint8_t remote_state[kToshibaACStateLength];
void checksum(const uint16_t length = kToshibaACStateLength);
static uint8_t calcChecksum(const uint8_t state[],
const uint16_t length = kToshibaACStateLength);
uint8_t mode_state;
};
#endif // IR_TOSHIBA_H_

View File

@ -1,155 +0,0 @@
// Copyright 2018 David Conran
#include "IRsend.h"
#include "IRsend_test.h"
#include "IRutils.h"
#include "gtest/gtest.h"
// Tests for sendPioneer().
// Test sending typical data only.
TEST(TestSendPioneer, SendDataOnly) {
IRsendTest irsend(0);
irsend.begin();
irsend.sendPioneer(0);
EXPECT_EQ(
"f40000d33"
"m8544s4272"
"m534s534m534s534m534s534m534s534m534s534m534s534m534s534m534s534"
"m534s534m534s534m534s534m534s534m534s534m534s534m534s534m534s534"
"m534s534m534s534m534s534m534s534m534s534m534s534m534s534m534s534"
"m534s534m534s534m534s534m534s534m534s534m534s534m534s534m534s534"
"m534s37380"
"m8544s4272"
"m534s534m534s534m534s534m534s534m534s534m534s534m534s534m534s534"
"m534s534m534s534m534s534m534s534m534s534m534s534m534s534m534s534"
"m534s534m534s534m534s534m534s534m534s534m534s534m534s534m534s534"
"m534s534m534s534m534s534m534s534m534s534m534s534m534s534m534s534"
"m534s37380",
irsend.outputStr());
irsend.sendPioneer(0x55FF00AAAA00FF55);
EXPECT_EQ(
"f40000d33"
"m8544s4272"
"m534s534m534s1602m534s534m534s1602m534s534m534s1602m534s534m534s1602"
"m534s1602m534s1602m534s1602m534s1602m534s1602m534s1602m534s1602m534s1602"
"m534s534m534s534m534s534m534s534m534s534m534s534m534s534m534s534"
"m534s1602m534s534m534s1602m534s534m534s1602m534s534m534s1602m534s534"
"m534s25098"
"m8544s4272"
"m534s1602m534s534m534s1602m534s534m534s1602m534s534m534s1602m534s534"
"m534s534m534s534m534s534m534s534m534s534m534s534m534s534m534s534"
"m534s1602m534s1602m534s1602m534s1602m534s1602m534s1602m534s1602m534s1602"
"m534s534m534s1602m534s534m534s1602m534s534m534s1602m534s534m534s1602"
"m534s25098",
irsend.outputStr());
}
// Tests for IRutils.
TEST(TestIRUtils, TypeToString) { EXPECT_EQ("PIONEER", typeToString(PIONEER)); }
// Tests for encodePioneer().
TEST(TestEncodePioneer, SimpleEncoding) {
IRsendTest irsend(0);
IRrecv irrecv(0);
// Spotify button (A556+AF20)
// via
// https://www.pioneerelectronics.com/StaticFiles/PUSA/Files/Home%20Custom%20Install/2015%20Pioneer%20&%20Elite%20AVR%20IR%20with%20Hex_1.xls
EXPECT_EQ(0xA55A6A95F50A04FB, irsend.encodePioneer(0xA556, 0xAF20));
// "Source" from
// https://github.com/crankyoldgit/IRremoteESP8266/pull/547#issuecomment-429616582
EXPECT_EQ(0x659A05FAF50AC53A, irsend.encodePioneer(0xA6A0, 0xAFA3));
}
// Tests for decodePioneer().
// Synthesised Normal Pioneer message.
TEST(TestDecodePioneer, SyntheticPioneerDecode) {
IRsendTest irsend(0);
IRrecv irrecv(0);
irsend.begin();
irsend.reset();
irsend.sendPioneer(0x659A05FAF50AC53A);
irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&irsend.capture));
EXPECT_EQ(PIONEER, irsend.capture.decode_type);
EXPECT_EQ(kPioneerBits, irsend.capture.bits);
EXPECT_EQ(0x659A05FAF50AC53A, irsend.capture.value);
EXPECT_EQ(0xA6A0, irsend.capture.address);
EXPECT_EQ(0xAFA3, irsend.capture.command);
}
// Real long Pioneer message.
TEST(TestDecodePioneer, RealExampleLongDecodeSourceButton) {
IRsendTest irsend(0);
IRrecv irrecv(0);
irsend.begin();
irsend.reset();
// "Source" button.
// https://github.com/crankyoldgit/IRremoteESP8266/pull/547#issuecomment-429616582
uint16_t rawData[135] = {
8552, 4184, 596, 472, 592, 1524, 594, 1524, 594, 472, 592, 472,
598, 1520, 596, 472, 594, 1524, 592, 1524, 592, 472, 592, 472,
596, 1520, 598, 1520, 596, 472, 592, 1524, 592, 472, 592, 476,
592, 472, 592, 472, 592, 476, 592, 472, 592, 1524, 592, 472,
598, 1518, 598, 1520, 596, 1520, 596, 1520, 596, 1520, 596, 1520,
596, 472, 592, 1524, 592, 472, 598, 25282, 8552, 4182, 596, 1520,
598, 1518, 598, 1520, 596, 1520, 596, 472, 592, 1524, 592, 472,
598, 1520, 596, 472, 594, 472, 592, 472, 596, 472, 592, 1524,
592, 472, 592, 1524, 596, 472, 594, 1520, 596, 1520, 598, 472,
592, 472, 598, 472, 594, 1522, 594, 472, 592, 1524, 594, 472,
596, 472, 594, 1524, 592, 1524, 592, 1524, 592, 472, 594, 1524,
598, 472, 592};
irsend.sendRaw(rawData, 135, 38000);
irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&irsend.capture));
EXPECT_EQ(PIONEER, irsend.capture.decode_type);
EXPECT_EQ(kPioneerBits, irsend.capture.bits);
EXPECT_EQ(0x659A05FAF50AC53A, irsend.capture.value);
EXPECT_EQ(0xA6A0, irsend.capture.address);
EXPECT_EQ(0xAFA3, irsend.capture.command);
}
// Synthetic Pioneer message.
// For:
// https://github.com/crankyoldgit/IRremoteESP8266/pull/547#issuecomment-430800734
TEST(TestDecodePioneer, SyntheticPioneerMessage) {
IRsendTest irsend(0);
IRrecv irrecv(0);
irsend.begin();
irsend.reset();
irsend.sendPioneer(0x659A857AF50A3DC2, 64, 0);
irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&irsend.capture));
EXPECT_EQ(PIONEER, irsend.capture.decode_type);
EXPECT_EQ(kPioneerBits, irsend.capture.bits);
EXPECT_EQ(0x659A857AF50A3DC2, irsend.capture.value);
EXPECT_EQ(0xA6A1, irsend.capture.address);
EXPECT_EQ(0xAFBC, irsend.capture.command);
irsend.reset();
irsend.sendPioneer(0x659A857AF50A3DC2, 64, 0);
EXPECT_EQ(
"f40000d33"
"m8544s4272"
"m534s534m534s1602m534s1602m534s534m534s534m534s1602m534s534m534s1602"
"m534s1602m534s534m534s534m534s1602m534s1602m534s534m534s1602m534s534"
"m534s1602m534s534m534s534m534s534m534s534m534s1602m534s534m534s1602"
"m534s534m534s1602m534s1602m534s1602m534s1602m534s534m534s1602m534s534"
"m534s25098"
"m8544s4272"
"m534s1602m534s1602m534s1602m534s1602m534s534m534s1602m534s534m534s1602"
"m534s534m534s534m534s534m534s534m534s1602m534s534m534s1602m534s534"
"m534s534m534s534m534s1602m534s1602m534s1602m534s1602m534s534m534s1602"
"m534s1602m534s1602m534s534m534s534m534s534m534s534m534s1602m534s534"
"m534s25098",
irsend.outputStr());
}

View File

@ -1,706 +0,0 @@
// Copyright 2017 David Conran
#include "ir_Toshiba.h"
#include "IRac.h"
#include "IRrecv.h"
#include "IRrecv_test.h"
#include "IRsend.h"
#include "IRsend_test.h"
#include "gtest/gtest.h"
// Tests for Toshiba A/C methods.
// Test sending typical data only.
TEST(TestSendToshibaAC, SendDataOnly) {
IRsendTest irsend(4);
irsend.begin();
uint8_t toshiba_code[kToshibaACStateLength] = {0xF2, 0x0D, 0x03, 0xFC, 0x01,
0x00, 0x00, 0x00, 0x00};
irsend.reset();
irsend.sendToshibaAC(toshiba_code);
EXPECT_EQ(
"f38000d50"
"m4400s4300"
"m543s1623m543s1623m543s1623m543s1623m543s472m543s472m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s1623m543s1623m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623"
"m543s1623m543s1623m543s1623m543s1623m543s1623m543s1623m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s7048"
"m4400s4300"
"m543s1623m543s1623m543s1623m543s1623m543s472m543s472m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s1623m543s1623m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623"
"m543s1623m543s1623m543s1623m543s1623m543s1623m543s1623m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s7048",
irsend.outputStr());
}
// Test sending with repeats.
TEST(TestSendToshibaAC, SendWithRepeats) {
IRsendTest irsend(4);
irsend.begin();
irsend.reset();
uint8_t toshiba_code[kToshibaACStateLength] = {0xF2, 0x0D, 0x03, 0xFC, 0x01,
0x00, 0x00, 0x00, 0x00};
irsend.sendToshibaAC(toshiba_code, kToshibaACStateLength, 0);
EXPECT_EQ(
"f38000d50"
"m4400s4300"
"m543s1623m543s1623m543s1623m543s1623m543s472m543s472m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s1623m543s1623m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623"
"m543s1623m543s1623m543s1623m543s1623m543s1623m543s1623m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s7048",
irsend.outputStr());
irsend.reset();
irsend.sendToshibaAC(toshiba_code, kToshibaACStateLength, 2);
EXPECT_EQ(
"f38000d50"
"m4400s4300"
"m543s1623m543s1623m543s1623m543s1623m543s472m543s472m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s1623m543s1623m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623"
"m543s1623m543s1623m543s1623m543s1623m543s1623m543s1623m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s7048"
"m4400s4300"
"m543s1623m543s1623m543s1623m543s1623m543s472m543s472m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s1623m543s1623m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623"
"m543s1623m543s1623m543s1623m543s1623m543s1623m543s1623m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s7048"
"m4400s4300"
"m543s1623m543s1623m543s1623m543s1623m543s472m543s472m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s1623m543s1623m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623"
"m543s1623m543s1623m543s1623m543s1623m543s1623m543s1623m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s7048",
irsend.outputStr());
}
// Test sending atypical sizes.
TEST(TestSendToshibaAC, SendUnexpectedSizes) {
IRsendTest irsend(4);
irsend.begin();
uint8_t toshiba_short_code[8] = {0x01, 0x02, 0x03, 0x04,
0x05, 0x06, 0x07, 0x08};
uint8_t toshiba_long_code[10] = {0x01, 0x02, 0x03, 0x04, 0x05,
0x06, 0x07, 0x08, 0x09, 0x0A};
irsend.reset();
irsend.sendToshibaAC(toshiba_short_code, kToshibaACStateLength - 1);
ASSERT_EQ("", irsend.outputStr());
irsend.reset();
irsend.sendToshibaAC(toshiba_long_code, kToshibaACStateLength + 1);
ASSERT_EQ(
"f38000d50"
"m4400s4300"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s1623m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s1623m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623m543s1623"
"m543s472m543s472m543s472m543s472m543s1623m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s1623m543s472m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s1623m543s472m543s1623m543s472"
"m543s7048"
"m4400s4300"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s1623m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s1623m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623m543s1623"
"m543s472m543s472m543s472m543s472m543s1623m543s472m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s1623m543s472m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s1623m543s472m543s1623m543s472"
"m543s7048",
irsend.outputStr());
}
// Tests for IRToshibaAC class.
TEST(TestToshibaACClass, Power) {
IRToshibaAC toshiba(0);
toshiba.begin();
toshiba.on();
EXPECT_TRUE(toshiba.getPower());
toshiba.off();
EXPECT_FALSE(toshiba.getPower());
toshiba.setPower(true);
EXPECT_TRUE(toshiba.getPower());
toshiba.setPower(false);
EXPECT_FALSE(toshiba.getPower());
}
TEST(TestToshibaACClass, Temperature) {
IRToshibaAC toshiba(0);
toshiba.begin();
toshiba.setTemp(0);
EXPECT_EQ(kToshibaAcMinTemp, toshiba.getTemp());
toshiba.setTemp(255);
EXPECT_EQ(kToshibaAcMaxTemp, toshiba.getTemp());
toshiba.setTemp(kToshibaAcMinTemp);
EXPECT_EQ(kToshibaAcMinTemp, toshiba.getTemp());
toshiba.setTemp(kToshibaAcMaxTemp);
EXPECT_EQ(kToshibaAcMaxTemp, toshiba.getTemp());
toshiba.setTemp(kToshibaAcMinTemp - 1);
EXPECT_EQ(kToshibaAcMinTemp, toshiba.getTemp());
toshiba.setTemp(kToshibaAcMaxTemp + 1);
EXPECT_EQ(kToshibaAcMaxTemp, toshiba.getTemp());
toshiba.setTemp(17);
EXPECT_EQ(17, toshiba.getTemp());
toshiba.setTemp(21);
EXPECT_EQ(21, toshiba.getTemp());
toshiba.setTemp(25);
EXPECT_EQ(25, toshiba.getTemp());
toshiba.setTemp(30);
EXPECT_EQ(30, toshiba.getTemp());
}
TEST(TestToshibaACClass, OperatingMode) {
IRToshibaAC toshiba(0);
toshiba.begin();
toshiba.setMode(kToshibaAcAuto);
EXPECT_EQ(kToshibaAcAuto, toshiba.getMode());
toshiba.setMode(kToshibaAcCool);
EXPECT_EQ(kToshibaAcCool, toshiba.getMode());
toshiba.setMode(kToshibaAcHeat);
EXPECT_EQ(kToshibaAcHeat, toshiba.getMode());
toshiba.setMode(kToshibaAcDry);
EXPECT_EQ(kToshibaAcDry, toshiba.getMode());
toshiba.setMode(kToshibaAcHeat + 1);
EXPECT_EQ(kToshibaAcAuto, toshiba.getMode());
toshiba.setMode(255);
EXPECT_EQ(kToshibaAcAuto, toshiba.getMode());
// Setting the power off changes the underlying mode in the state to heat.
toshiba.setPower(true);
toshiba.setMode(kToshibaAcCool);
EXPECT_EQ(kToshibaAcCool, toshiba.getMode());
EXPECT_EQ(kToshibaAcCool, toshiba.getMode(true));
toshiba.setPower(false);
EXPECT_EQ(kToshibaAcCool, toshiba.getMode());
EXPECT_EQ(kToshibaAcHeat, toshiba.getMode(true));
}
TEST(TestToshibaACClass, FanSpeed) {
IRToshibaAC toshiba(0);
toshiba.begin();
toshiba.setFan(kToshibaAcFanAuto);
EXPECT_EQ(kToshibaAcFanAuto, toshiba.getFan());
toshiba.setFan(255);
EXPECT_EQ(kToshibaAcFanMax, toshiba.getFan());
toshiba.setFan(kToshibaAcFanMax);
EXPECT_EQ(kToshibaAcFanMax, toshiba.getFan());
toshiba.setFan(kToshibaAcFanMax - 1);
EXPECT_EQ(kToshibaAcFanMax - 1, toshiba.getFan());
toshiba.setFan(1);
EXPECT_EQ(1, toshiba.getFan());
toshiba.setFan(2);
EXPECT_EQ(2, toshiba.getFan());
toshiba.setFan(3);
EXPECT_EQ(3, toshiba.getFan());
toshiba.setFan(4);
EXPECT_EQ(4, toshiba.getFan());
toshiba.setFan(kToshibaAcFanMax + 1);
EXPECT_EQ(kToshibaAcFanMax, toshiba.getFan());
}
TEST(TestToshibaACClass, RawState) {
IRToshibaAC toshiba(0);
toshiba.begin();
uint8_t initial_state[kToshibaACStateLength] = {0xF2, 0x0D, 0x03, 0xFC, 0x01,
0x00, 0x00, 0x00, 0x01};
uint8_t modified_state[kToshibaACStateLength] = {0xF2, 0x0D, 0x03, 0xFC, 0x01,
0x00, 0xC1, 0x00, 0xC0};
// Verify the starting state.
EXPECT_STATE_EQ(initial_state, toshiba.getRaw(), kToshibaACBits);
EXPECT_TRUE(toshiba.getPower());
EXPECT_EQ(kToshibaAcAuto, toshiba.getMode());
EXPECT_EQ(kToshibaAcFanAuto, toshiba.getFan());
// Change some settings.
toshiba.setMode(kToshibaAcCool);
toshiba.setFan(kToshibaAcFanMax);
toshiba.setTemp(kToshibaAcMinTemp);
// Verify those were set.
EXPECT_EQ(kToshibaAcCool, toshiba.getMode());
EXPECT_EQ(kToshibaAcFanMax, toshiba.getFan());
EXPECT_EQ(kToshibaAcMinTemp, toshiba.getTemp());
// Retrieve the modified state.
EXPECT_STATE_EQ(modified_state, toshiba.getRaw(), kToshibaACBits);
// Set it back to the initial state.
toshiba.setRaw(initial_state);
// Check the new state was set correctly.
EXPECT_TRUE(toshiba.getPower());
EXPECT_EQ(kToshibaAcAuto, toshiba.getMode());
EXPECT_EQ(kToshibaAcFanAuto, toshiba.getFan());
EXPECT_STATE_EQ(initial_state, toshiba.getRaw(), kToshibaACBits);
}
TEST(TestToshibaACClass, Checksums) {
IRToshibaAC toshiba(0);
toshiba.begin();
uint8_t initial_state[kToshibaACStateLength] = {0xF2, 0x0D, 0x03, 0xFC, 0x01,
0x00, 0x00, 0x00, 0x01};
uint8_t modified_state[kToshibaACStateLength] = {0xF2, 0x0D, 0x03, 0xFC, 0x01,
0x00, 0xC1, 0x00, 0xC0};
uint8_t invalid_state[kToshibaACStateLength] = {0xF2, 0x0D, 0x03, 0xFC, 0x01,
0x00, 0x00, 0x00, 0x00};
EXPECT_EQ(0x01, toshiba.calcChecksum(initial_state));
EXPECT_EQ(0xC0, toshiba.calcChecksum(modified_state));
// Check we can call it without instantiating the object.
EXPECT_EQ(0x01, IRToshibaAC::calcChecksum(initial_state));
// Use different lengths.
EXPECT_EQ(0x01, IRToshibaAC::calcChecksum(initial_state,
kToshibaACStateLength - 1));
EXPECT_EQ(0xFF, IRToshibaAC::calcChecksum(initial_state, 3));
// Minimum length that actually means anything.
EXPECT_EQ(0xF2, IRToshibaAC::calcChecksum(initial_state, 2));
// Technically, there is no such thing as a checksum for a length of < 2
// But test it anyway
EXPECT_EQ(0x00, IRToshibaAC::calcChecksum(initial_state, 1));
EXPECT_EQ(0x00, IRToshibaAC::calcChecksum(initial_state, 0));
// Validity tests.
EXPECT_TRUE(IRToshibaAC::validChecksum(initial_state));
EXPECT_TRUE(IRToshibaAC::validChecksum(modified_state));
EXPECT_FALSE(IRToshibaAC::validChecksum(invalid_state));
EXPECT_FALSE(IRToshibaAC::validChecksum(initial_state, 0));
EXPECT_FALSE(IRToshibaAC::validChecksum(initial_state, 1));
EXPECT_FALSE(IRToshibaAC::validChecksum(initial_state, 2));
}
TEST(TestToshibaACClass, HumanReadableOutput) {
IRToshibaAC toshiba(0);
toshiba.begin();
uint8_t initial_state[kToshibaACStateLength] = {0xF2, 0x0D, 0x03, 0xFC, 0x01,
0x00, 0x00, 0x00, 0x01};
uint8_t modified_state[kToshibaACStateLength] = {0xF2, 0x0D, 0x03, 0xFC, 0x01,
0x00, 0xC1, 0x00, 0xC0};
toshiba.setRaw(initial_state);
EXPECT_EQ("Power: On, Mode: 0 (Auto), Temp: 17C, Fan: 0 (Auto)",
toshiba.toString());
toshiba.setRaw(modified_state);
EXPECT_EQ("Power: On, Mode: 1 (Cool), Temp: 17C, Fan: 5 (High)",
toshiba.toString());
toshiba.off();
toshiba.setTemp(25);
toshiba.setFan(3);
toshiba.setMode(kToshibaAcDry);
EXPECT_EQ("Power: Off, Mode: 2 (Dry), Temp: 25C, Fan: 3 (Medium)",
toshiba.toString());
}
TEST(TestToshibaACClass, MessageConstuction) {
IRToshibaAC toshiba(0);
IRsendTest irsend(4);
toshiba.begin();
irsend.begin();
toshiba.setFan(1);
toshiba.setMode(kToshibaAcCool);
toshiba.setTemp(27);
toshiba.on();
// Check everything for kicks.
EXPECT_EQ(1, toshiba.getFan());
EXPECT_EQ(kToshibaAcCool, toshiba.getMode());
EXPECT_EQ(27, toshiba.getTemp());
EXPECT_TRUE(toshiba.getPower());
irsend.reset();
irsend.sendToshibaAC(toshiba.getRaw());
EXPECT_EQ(
"f38000d50"
"m4400s4300"
"m543s1623m543s1623m543s1623m543s1623m543s472m543s472m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s1623m543s1623m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623"
"m543s1623m543s1623m543s1623m543s1623m543s1623m543s1623m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s1623m543s472m543s1623m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s1623m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s1623m543s1623m543s1623m543s472m543s472m543s472m543s472m543s472"
"m543s7048"
"m4400s4300"
"m543s1623m543s1623m543s1623m543s1623m543s472m543s472m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s1623m543s1623m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623"
"m543s1623m543s1623m543s1623m543s1623m543s1623m543s1623m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s1623m543s472m543s1623m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s1623m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s1623m543s1623m543s1623m543s472m543s472m543s472m543s472m543s472"
"m543s7048",
irsend.outputStr());
// Turn off the power and re-check.
toshiba.setPower(false);
// Check everything for kicks.
EXPECT_EQ(1, toshiba.getFan());
EXPECT_EQ(kToshibaAcCool, toshiba.getMode());
EXPECT_EQ(27, toshiba.getTemp());
EXPECT_FALSE(toshiba.getPower());
irsend.reset();
irsend.sendToshibaAC(toshiba.getRaw());
EXPECT_EQ(
"f38000d50"
"m4400s4300"
"m543s1623m543s1623m543s1623m543s1623m543s472m543s472m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s1623m543s1623m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623"
"m543s1623m543s1623m543s1623m543s1623m543s1623m543s1623m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s1623m543s472m543s1623m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s1623m543s472m543s472m543s472m543s1623m543s1623m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s1623m543s1623m543s1623m543s472m543s472m543s1623m543s1623m543s472"
"m543s7048"
"m4400s4300"
"m543s1623m543s1623m543s1623m543s1623m543s472m543s472m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s1623m543s1623m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623"
"m543s1623m543s1623m543s1623m543s1623m543s1623m543s1623m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s1623m543s472m543s1623m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s1623m543s472m543s472m543s472m543s1623m543s1623m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s1623m543s1623m543s1623m543s472m543s472m543s1623m543s1623m543s472"
"m543s7048",
irsend.outputStr());
// Turn the power back on, and check nothing changed.
toshiba.on();
EXPECT_EQ(1, toshiba.getFan());
EXPECT_EQ(kToshibaAcCool, toshiba.getMode());
EXPECT_EQ(27, toshiba.getTemp());
EXPECT_TRUE(toshiba.getPower());
irsend.reset();
irsend.sendToshibaAC(toshiba.getRaw());
EXPECT_EQ(
"f38000d50"
"m4400s4300"
"m543s1623m543s1623m543s1623m543s1623m543s472m543s472m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s1623m543s1623m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623"
"m543s1623m543s1623m543s1623m543s1623m543s1623m543s1623m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s1623m543s472m543s1623m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s1623m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s1623m543s1623m543s1623m543s472m543s472m543s472m543s472m543s472"
"m543s7048"
"m4400s4300"
"m543s1623m543s1623m543s1623m543s1623m543s472m543s472m543s1623m543s472"
"m543s472m543s472m543s472m543s472m543s1623m543s1623m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s1623m543s1623"
"m543s1623m543s1623m543s1623m543s1623m543s1623m543s1623m543s472m543s472"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s1623m543s472m543s1623m543s472m543s472m543s472m543s472m543s472"
"m543s472m543s1623m543s472m543s472m543s472m543s472m543s472m543s1623"
"m543s472m543s472m543s472m543s472m543s472m543s472m543s472m543s472"
"m543s1623m543s1623m543s1623m543s472m543s472m543s472m543s472m543s472"
"m543s7048",
irsend.outputStr());
}
// Decoding a message we entirely constructed based solely on a given state.
TEST(TestDecodeToshibaAC, SyntheticExample) {
IRsendTest irsend(4);
IRrecv irrecv(4);
irsend.begin();
uint8_t expectedState[kToshibaACStateLength] = {0xF2, 0x0D, 0x03, 0xFC, 0x01,
0x00, 0x00, 0x00, 0x01};
irsend.reset();
irsend.sendToshibaAC(expectedState);
irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&irsend.capture));
ASSERT_EQ(TOSHIBA_AC, irsend.capture.decode_type);
ASSERT_EQ(kToshibaACBits, irsend.capture.bits);
EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits);
EXPECT_EQ(
"Power: On, Mode: 0 (Auto), Temp: 17C, Fan: 0 (Auto)",
IRAcUtils::resultAcToString(&irsend.capture));
stdAc::state_t r, p;
ASSERT_TRUE(IRAcUtils::decodeToState(&irsend.capture, &r, &p));
}
// Test decoding against captures from a real Toshiba A/C remote.
// Recorded by @mwildbolz
TEST(TestDecodeToshibaAC, RealExamples) {
IRToshibaAC toshiba(0);
IRsendTest irsend(4);
IRrecv irrecv(4);
irsend.begin();
uint16_t rawData1[295] = {
4442, 4292, 612, 1544, 616, 1544, 616, 1544, 612, 1548, 610, 468,
612, 468, 662, 1494, 640, 438, 616, 464, 614, 464, 616, 464,
612, 468, 610, 1544, 616, 1544, 616, 468, 612, 1544, 616, 464,
694, 386, 616, 464, 612, 468, 612, 468, 636, 444, 610, 1546,
616, 1544, 612, 1546, 614, 1546, 616, 1546, 740, 1420, 612, 1544,
616, 1546, 616, 464, 610, 468, 610, 470, 612, 468, 610, 468,
610, 470, 636, 438, 616, 464, 616, 464, 616, 1546, 636, 442,
612, 1546, 614, 1544, 616, 464, 614, 464, 610, 468, 612, 468,
612, 468, 612, 468, 636, 440, 614, 464, 616, 464, 616, 464,
612, 468, 636, 442, 638, 442, 662, 418, 610, 464, 616, 464,
616, 464, 610, 468, 612, 468, 636, 444, 610, 468, 638, 438,
614, 1546, 612, 1548, 612, 470, 610, 468, 636, 442, 612, 468,
612, 1544, 612, 7396, 4442, 4292, 610, 1546, 616, 1544, 612, 1548,
612, 1546, 616, 464, 616, 464, 616, 1544, 612, 468, 662, 418,
610, 468, 638, 442, 638, 438, 616, 1546, 616, 1544, 612, 468,
610, 1546, 616, 464, 616, 464, 642, 438, 616, 464, 612, 468,
610, 470, 610, 1546, 616, 1544, 612, 1546, 616, 1546, 614, 1546,
612, 1550, 610, 1544, 616, 1546, 614, 464, 642, 438, 610, 468,
612, 468, 612, 468, 612, 468, 610, 468, 638, 438, 614, 464,
616, 1544, 636, 444, 636, 1520, 616, 1544, 616, 464, 616, 464,
612, 468, 612, 468, 612, 468, 612, 468, 612, 464, 612, 470,
636, 442, 638, 442, 612, 470, 692, 384, 614, 464, 616, 464,
612, 468, 610, 468, 612, 468, 610, 470, 610, 464, 616, 464,
616, 464, 616, 464, 610, 1550, 610, 1546, 640, 444, 688, 386,
616, 464, 612, 468, 612, 1544, 642};
irsend.reset();
irsend.sendRaw(rawData1, 295, 38000);
irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&irsend.capture));
ASSERT_EQ(TOSHIBA_AC, irsend.capture.decode_type);
ASSERT_EQ(kToshibaACBits, irsend.capture.bits);
toshiba.setRaw(irsend.capture.state);
EXPECT_TRUE(toshiba.getPower());
EXPECT_EQ(23, toshiba.getTemp());
EXPECT_EQ(kToshibaAcFanAuto, toshiba.getFan());
EXPECT_EQ(kToshibaAcAuto, toshiba.getMode());
uint16_t rawData2[295] = {
4500, 4236, 636, 1520, 642, 1520, 640, 1520, 664, 1492, 642, 440,
668, 412, 642, 1518, 638, 438, 666, 414, 640, 438, 642, 438,
638, 442, 642, 1516, 640, 1520, 642, 438, 642, 1520, 636, 438,
668, 412, 640, 440, 666, 412, 642, 438, 668, 412, 640, 1516,
668, 1492, 642, 1520, 666, 1494, 638, 1520, 642, 1520, 668, 1490,
666, 1494, 642, 438, 638, 438, 668, 412, 668, 412, 642, 438,
642, 438, 664, 412, 642, 438, 642, 438, 642, 1518, 642, 434,
668, 412, 642, 438, 668, 412, 692, 388, 666, 412, 642, 434,
642, 438, 642, 1518, 668, 412, 668, 412, 640, 438, 638, 438,
642, 438, 640, 438, 668, 1492, 642, 440, 666, 412, 640, 438,
642, 438, 642, 434, 668, 412, 668, 412, 666, 414, 666, 1494,
640, 438, 642, 434, 668, 412, 642, 438, 642, 438, 668, 412,
668, 414, 640, 7362, 4474, 4262, 642, 1518, 638, 1520, 640, 1520,
668, 1494, 640, 434, 642, 438, 640, 1520, 642, 438, 642, 438,
642, 438, 642, 438, 642, 434, 668, 1494, 642, 1518, 638, 442,
638, 1520, 642, 438, 642, 438, 668, 414, 664, 408, 642, 438,
668, 412, 642, 1520, 666, 1494, 642, 1514, 642, 1518, 642, 1520,
636, 1520, 668, 1494, 666, 1494, 638, 438, 666, 414, 640, 440,
666, 412, 668, 412, 668, 412, 642, 434, 668, 412, 668, 412,
668, 1494, 642, 438, 642, 434, 642, 438, 642, 438, 642, 438,
642, 438, 642, 434, 646, 434, 642, 1518, 668, 412, 642, 438,
642, 434, 666, 414, 640, 438, 642, 438, 642, 1518, 642, 438,
642, 434, 668, 412, 642, 438, 642, 438, 642, 438, 642, 438,
642, 438, 640, 1520, 636, 438, 642, 438, 642, 438, 666, 414,
668, 412, 642, 440, 640, 438, 640};
irsend.reset();
irsend.sendRaw(rawData2, 295, 38000);
irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&irsend.capture));
ASSERT_EQ(TOSHIBA_AC, irsend.capture.decode_type);
ASSERT_EQ(kToshibaACBits, irsend.capture.bits);
toshiba.setRaw(irsend.capture.state);
EXPECT_TRUE(toshiba.getPower());
EXPECT_EQ(17, toshiba.getTemp());
EXPECT_EQ(3, toshiba.getFan());
EXPECT_EQ(kToshibaAcCool, toshiba.getMode());
uint16_t rawData3[295] = {
4474, 4262, 642, 1514, 642, 1520, 642, 1520, 642, 1514, 642, 438,
642, 438, 642, 1520, 636, 438, 642, 438, 642, 438, 642, 438,
642, 438, 640, 1520, 638, 1520, 642, 438, 640, 1520, 642, 438,
642, 434, 642, 438, 642, 438, 642, 438, 668, 414, 636, 1520,
642, 1520, 642, 1514, 642, 1520, 642, 1520, 640, 1518, 638, 1520,
666, 1494, 642, 438, 642, 434, 642, 438, 640, 438, 642, 438,
642, 440, 640, 434, 642, 438, 642, 438, 642, 1520, 642, 438,
642, 1514, 642, 1520, 640, 1520, 636, 438, 642, 438, 642, 438,
666, 414, 642, 1520, 636, 1520, 642, 438, 642, 438, 640, 438,
642, 434, 642, 1518, 642, 1520, 642, 438, 642, 434, 640, 438,
642, 438, 642, 438, 642, 440, 642, 438, 668, 408, 642, 1520,
642, 438, 642, 1520, 638, 1518, 642, 438, 642, 438, 640, 1520,
640, 438, 642, 7362, 4474, 4262, 642, 1518, 638, 1520, 640, 1520,
642, 1520, 638, 438, 642, 438, 642, 1518, 642, 438, 638, 438,
642, 438, 642, 438, 642, 438, 642, 1514, 642, 1520, 642, 438,
666, 1490, 642, 438, 642, 438, 642, 440, 640, 438, 642, 434,
640, 438, 642, 1520, 642, 1520, 636, 1520, 642, 1520, 642, 1514,
642, 1518, 642, 1518, 640, 1516, 642, 438, 642, 438, 642, 438,
640, 438, 638, 442, 642, 434, 642, 440, 640, 438, 642, 438,
642, 1518, 642, 438, 642, 1514, 642, 1520, 642, 1518, 642, 438,
642, 432, 642, 438, 642, 438, 642, 1520, 642, 1514, 642, 438,
642, 438, 642, 438, 642, 438, 642, 1514, 642, 1520, 642, 438,
642, 438, 638, 438, 642, 438, 642, 438, 640, 440, 642, 438,
640, 434, 642, 1520, 642, 438, 640, 1520, 668, 1490, 666, 414,
640, 438, 642, 1520, 642, 438, 636};
irsend.reset();
irsend.sendRaw(rawData3, 295, 38000);
irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&irsend.capture));
ASSERT_EQ(TOSHIBA_AC, irsend.capture.decode_type);
ASSERT_EQ(kToshibaACBits, irsend.capture.bits);
toshiba.setRaw(irsend.capture.state);
EXPECT_TRUE(toshiba.getPower());
EXPECT_EQ(24, toshiba.getTemp());
EXPECT_EQ(kToshibaAcFanMax, toshiba.getFan());
EXPECT_EQ(kToshibaAcHeat, toshiba.getMode());
uint16_t rawData4[295] = {
4474, 4262, 636, 1520, 640, 1520, 640, 1520, 638, 1518, 642, 438,
642, 438, 642, 1520, 636, 438, 642, 438, 642, 438, 642, 438,
636, 444, 636, 1520, 640, 1520, 642, 438, 638, 1524, 638, 438,
640, 438, 642, 438, 640, 438, 642, 438, 638, 438, 642, 1518,
642, 1520, 666, 1494, 636, 1520, 640, 1520, 640, 1520, 636, 1524,
638, 1520, 640, 440, 640, 438, 642, 438, 636, 444, 636, 438,
642, 438, 640, 440, 640, 438, 642, 438, 642, 1518, 638, 438,
642, 1518, 642, 438, 640, 1520, 636, 444, 636, 438, 640, 438,
642, 438, 668, 1494, 640, 438, 642, 1518, 636, 444, 636, 438,
640, 1520, 642, 1518, 642, 1520, 636, 444, 636, 438, 642, 438,
642, 438, 640, 440, 640, 438, 640, 440, 640, 438, 640, 1518,
642, 1520, 636, 1524, 636, 1518, 642, 438, 642, 1518, 642, 1518,
640, 438, 642, 7364, 4472, 4262, 642, 1518, 642, 1518, 638, 1518,
642, 1520, 642, 438, 642, 438, 640, 1520, 636, 440, 640, 438,
642, 438, 640, 438, 642, 438, 642, 1518, 636, 1524, 636, 438,
640, 1520, 642, 438, 642, 438, 640, 438, 636, 444, 636, 438,
668, 412, 642, 1518, 642, 1520, 642, 1520, 636, 1518, 642, 1518,
642, 1520, 636, 1520, 668, 1494, 642, 438, 636, 444, 664, 412,
642, 438, 668, 412, 642, 438, 636, 442, 638, 442, 638, 438,
642, 1518, 642, 438, 642, 1518, 638, 438, 642, 1518, 642, 440,
640, 438, 636, 444, 636, 444, 636, 1520, 642, 438, 642, 1520,
636, 444, 636, 438, 642, 1520, 640, 1520, 636, 1520, 668, 412,
642, 438, 642, 438, 642, 438, 638, 442, 636, 438, 642, 438,
668, 412, 640, 1520, 638, 1524, 636, 1520, 642, 1520, 636, 444,
638, 1522, 638, 1518, 640, 438, 642};
irsend.reset();
irsend.sendRaw(rawData4, 295, 38000);
irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&irsend.capture));
ASSERT_EQ(TOSHIBA_AC, irsend.capture.decode_type);
ASSERT_EQ(kToshibaACBits, irsend.capture.bits);
toshiba.setRaw(irsend.capture.state);
EXPECT_FALSE(toshiba.getPower());
EXPECT_EQ(22, toshiba.getTemp());
EXPECT_EQ(4, toshiba.getFan());
// Confirming the quirky behaviour that the 'Power OFF' signal
// sets the mode to heat.
// The previous state the remote was in was 'AUTO' just prior to
// sending the power off message.
EXPECT_EQ(kToshibaAcHeat, toshiba.getMode());
}
TEST(TestToshibaACClass, toCommon) {
IRToshibaAC ac(0);
ac.setPower(true);
ac.setMode(kToshibaAcCool);
ac.setTemp(20);
ac.setFan(kToshibaAcFanMax);
// Now test it.
ASSERT_EQ(decode_type_t::TOSHIBA_AC, ac.toCommon().protocol);
ASSERT_EQ(-1, ac.toCommon().model);
ASSERT_TRUE(ac.toCommon().power);
ASSERT_TRUE(ac.toCommon().celsius);
ASSERT_EQ(20, ac.toCommon().degrees);
ASSERT_EQ(stdAc::opmode_t::kCool, ac.toCommon().mode);
ASSERT_EQ(stdAc::fanspeed_t::kMax, ac.toCommon().fanspeed);
// Unsupported.
ASSERT_EQ(stdAc::swingv_t::kOff, ac.toCommon().swingv);
ASSERT_EQ(stdAc::swingh_t::kOff, ac.toCommon().swingh);
ASSERT_FALSE(ac.toCommon().turbo);
ASSERT_FALSE(ac.toCommon().econo);
ASSERT_FALSE(ac.toCommon().light);
ASSERT_FALSE(ac.toCommon().filter);
ASSERT_FALSE(ac.toCommon().clean);
ASSERT_FALSE(ac.toCommon().beep);
ASSERT_FALSE(ac.toCommon().quiet);
ASSERT_EQ(-1, ac.toCommon().sleep);
ASSERT_EQ(-1, ac.toCommon().clock);
}

View File

@ -0,0 +1,15 @@
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

View File

@ -1,4 +1,4 @@
# IRremote ESP8266 Library
# 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)
@ -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.7 Now Available
Version 2.7.7 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.8 Now Available
Version 2.7.8 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.
@ -40,6 +40,10 @@ Before reporting an issue or asking for help, please try to follow our [Troubles
## 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.

View File

@ -1,4 +1,4 @@
# IRremote ESP8266 Library
# 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)
@ -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.7 disponible
Version 2.7.7 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.8 disponible
Version 2.7.8 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.
@ -39,6 +39,9 @@ Avant de reporter un probème ou de demander de l'aide, essayez de suivre notre
## 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.
@ -46,6 +49,10 @@ Les questions les plus fréquentes sont ici, avec des réponses [F.A.Q. wiki pag
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.

View File

@ -1,5 +1,49 @@
# Release Notes
## _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]**

View File

@ -1,70 +1,74 @@
<!--- WARNING: Do NOT edit this file directly.
It is generated by './tools/scrape_supported_devices.py'.
Last generated: Tue 19 May 2020 11:48:47 +0000 --->
Last generated: Mon 22 Jun 2020 09:51:06 +0000 --->
# 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** | RC08W remote | | - |
| [Airwell](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Airwell.cpp) | **Airwell** | DLS 21 DCI R410 AW A/C<BR>RC04 remote<BR>RC08W remote | | - |
| [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<BR>ADR-853H A/C<BR>TAC-444 remote<BR>TAC-444 remote<BR>TAC-495 remote<BR>TAC-495 remote | | Yes |
| [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<BR>TAC-444 remote<BR>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** | 42QG5A55970 remote<BR>53NGK009/012 Inverter<BR>619EGX0090E0 A/C<BR>619EGX0120E0 A/C<BR>619EGX0180E0 A/C<BR>619EGX0220E0 A/C | | - |
| [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<BR>53NGK009/012 Inverter<BR>619EGX0090E0 A/C<BR>619EGX0120E0 A/C<BR>619EGX0180E0 A/C<BR>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<BR>BINR 070/071 split-type A/C<BR>RG57K7(B)/BGEF Remote<BR>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<BR>MS12FU-10HRDN1-QRD0GW(B) A/C<BR>MSABAU-07HRFN1-QRD0GW A/C (circa 2016)<BR>MSABAU-07HRFN1-QRD0GW A/C (circa 2016)<BR>RG52D/BGE Remote<BR>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<BR>AATOEMF17-12CHR1SW split-type RG51\|50/BGE Remote | | 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)<BR>ARC423A5 remote<BR>ARC433** remote<BR>ARC433B69 remote<BR>ARC466A33 remote (DAIKIN)<BR>ARC477A1 remote<BR>ARC480A5 remote (DAIKIN152)<BR>BRC4C153 remote<BR>BRC52B63 remote (DAIKIN128)<BR>DGS01 remote (DAIKIN64)<BR>FFN-C/FCN-F Series A/C (DAIKIN64)<BR>FTE12HV2S A/C<BR>FTXB09AXVJU A/C (DAIKIN128)<BR>FTXB12AXVJU A/C (DAIKIN128)<BR>FTXM-M A/C (DAIKIN)<BR>FTXZ25NV1B A/C<BR>FTXZ35NV1B A/C<BR>FTXZ50NV1B A/C<BR>M Series A/C (DAIKIN) | | 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<BR>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<BR>MSABAU-07HRFN1-QRD0GW A/C (circa 2016)<BR>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<BR>CSH-N2211 A/C<BR>CSH-N2511 A/C<BR>CSH-N2811 A/C<BR>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)<BR>ARC423A5 remote (DAIKIN160)<BR>ARC433** remote (DAIKIN)<BR>ARC433B69 remote (DAIKIN216)<BR>ARC466A33 remote (DAIKIN)<BR>ARC477A1 remote (DAIKIN2)<BR>ARC480A5 remote (DAIKIN152)<BR>BRC4C153 remote (DAIKIN176)<BR>BRC52B63 remote (DAIKIN128)<BR>DGS01 remote (DAIKIN64)<BR>FFN-C/FCN-F Series A/C (DAIKIN64)<BR>FTE12HV2S A/C<BR>FTXB09AXVJU A/C (DAIKIN128)<BR>FTXB12AXVJU A/C (DAIKIN128)<BR>FTXM-M A/C (DAIKIN)<BR>FTXZ25NV1B A/C (DAIKIN2)<BR>FTXZ35NV1B A/C (DAIKIN2)<BR>FTXZ50NV1B A/C (DAIKIN2)<BR>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) | **Unknown** | | | - |
| [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<BR>CZ-S38D LED Light<BR>CZ-S50D LED Light<BR>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<BR>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<BR>YKR-M/003E remote | | Yes |
| [Epson](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Epson.cpp) | **Unknown** | | | - |
| [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<BR>AR-DB1 remote<BR>AR-DL10 remote<BR>AR-RAC1E remote<BR>AR-RAE1E remote<BR>AR-RAH2E remote<BR>AR-REB1E remote<BR>AR-RY4 remote<BR>AST9RSGCW A/C<BR>ASTB09LBC A/C<BR>ASU30C1 A/C<BR>ASYG30LFCA A/C<BR>ASYG7LMCA A/C | ARDB1<BR>ARJW2<BR>ARRAH2E<BR>ARREB1E<BR>ARRY4 | 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<BR>AR-DB1 remote<BR>AR-DL10 remote<BR>AR-RAC1E remote<BR>AR-RAE1E remote<BR>AR-RAH2E remote<BR>AR-REB1E remote<BR>AR-RY4 remote<BR>AST9RSGCW A/C (ARDB1)<BR>ASTB09LBC A/C<BR>ASU30C1 A/C<BR>ASYG30LFCA A/C (ARRAH2E)<BR>ASYG7LMCA A/C (ARREB1E) | ARDB1<BR>ARJW2<BR>ARRAH2E<BR>ARREB1E<BR>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<BR>ARJW2<BR>ARRAH2E<BR>ARREB1E<BR>ARRY4 | Yes |
| [GICable](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_GICable.cpp) | **Unknown** | | | - |
| [GlobalCache](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_GlobalCache.cpp) | **Unknown** | | | - |
| [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<BR>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<BR>YB1F2F remote | YAW1F<BR>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<BR>YBOFB2 remote | YAW1F<BR>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<BR>YAW1F remote | YAW1F<BR>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<BR>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<BR>HSU07-HEA03 remote<BR>YR-W02 remote | | 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)<BR>LT0541-HTA remote<BR>PC-LH3B (HITACHI_AC3)<BR>R-LT0541-HTA/Y.K.1.1-1 V2.3 remote (HITACHI_AC1)<BR>RAR-8P2 remote<BR>RAS-35THA6 remote<BR>RAS-AJ25H A/C<BR>Series VI A/C (Circa 2007) | | 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)<BR>HSU07-HEA03 remote (HAIER_AC)<BR>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)<BR>LT0541-HTA remote (HITACHI_AC1)<BR>PC-LH3B (HITACHI_AC3)<BR>R-LT0541-HTA/Y.K.1.1-1 V2.3 remote (HITACHI_AC1)<BR>RAR-8P2 remote (HITACHI_AC424)<BR>RAS-22NK A/C (HITACHI_AC344)<BR>RAS-35THA6 remote<BR>RAS-AJ25H A/C (HITACHI_AC424)<BR>RF11T1 remote (HITACHI_AC344)<BR>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) | **Unknown** | | | - |
| [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<BR>KSV26HRC A/C<BR>KSV35CRC A/C<BR>KSV35HRC A/C<BR>KSV53HRC A/C<BR>KSV62HRC A/C<BR>KSV70CRC A/C<BR>KSV70HRC A/C<BR>KSV80HRC A/C<BR>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<BR>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<BR>6711A20083V remote<BR>AKB74395308 remote<BR>AKB74395308 remote<BR>AKB75215403 remote (LG2)<BR>S4-W12JA3AA A/C (LG2) | | Yes |
| [Lasertag](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Lasertag.cpp) | **Unknown** | | | - |
| [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)<BR>AKB74395308 remote (LG2)<BR>AKB75215403 remote (LG2)<BR>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) | **Unknown** | | | - |
| [MWM](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MWM.cpp) | **Unknown** | | | - |
| [Magiquest](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Magiquest.cpp) | **[Unknown](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Magiquest.h)** | | | - |
| [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 | | 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 | | 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)<BR>RYBO12GMFILCAD A/C (12K BTU) | | 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<BR>KM14A 0179213 remote<BR>MS-GK24VA A/C<BR>TV | | 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<BR>KPOA remote<BR>MSH-A24WV / MUH-A24WV A/C<BR>PEAD-RP71JAA Ducted A/C | | 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<BR>RLA502A700B remote<BR>SRKxxZJ-S A/C<BR>SRKxxZM-S A/C<BR>SRKxxZMXA-S A/C | | Yes |
| [Lutron](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Lutron.cpp) | **Lutron** | MIR-ITFS remote<BR>MIR-ITFS-F remote<BR>MIR-ITFS-LF remote<BR>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 | | - |
| [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) | **[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)<BR>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)<BR>KM14A 0179213 remote<BR>MS-GK24VA A/C<BR>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)<BR>KPOA remote (MITSUBISHI112)<BR>MSH-A24WV A/C (MITSUBISHI112)<BR>MUH-A24WV A/C (MITSUBISHI112)<BR>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)<BR>RLA502A700B remote (152 bit)<BR>SRKxxZJ-S A/C (88 bit)<BR>SRKxxZM-S A/C (152 bit)<BR>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<BR>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<BR>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<BR>NS-09AHTI A/C<BR>ZH/TY-01 remote<BR>ZH/TY-01 remote | | Yes |
| [Nikai](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Nikai.cpp) | **Unknown** | | | - |
| [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 (CKP)<BR>A75C2616-1 remote (DKE)<BR>A75C3704 remote<BR>A75C3747 remote<BR>CKP series A/C<BR>CS-E7PKR A/C (DKE)<BR>CS-ME10CKPG A/C<BR>CS-ME12CKPG A/C<BR>CS-ME14CKPG A/C<BR>CS-YW9MKD A/C<BR>CS-Z9RKR A/C<BR>DKE series A/C<BR>DKW series A/C (DKE)<BR>JKE series A/C<BR>NKE series A/C<BR>PKR series A/C (DKE)<BR>RKR series A/C<BR>TV | CKP<BR>DKE<BR>JKE<BR>LKE<BR>NKE<BR>RKR | Yes |
| [Pioneer](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Pioneer.cpp) | **Unknown** | | | - |
| [Pronto](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Pronto.cpp) | **Unknown** | | | - |
| [RC5_RC6](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_RC5_RC6.cpp) | **Unknown** | | | - |
| [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<BR>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)<BR>A75C2616-1 remote (PANASONIC_AC DKE/3)<BR>A75C3704 remote (PANASONIC_AC DKE/3)<BR>A75C3747 remote (PANASONIC_AC JKE/4)<BR>CKP series A/C (PANASONIC_AC CKP/5)<BR>CS-E7PKR A/C (PANASONIC_AC DKE/2)<BR>CS-ME10CKPG A/C (PANASONIC_AC CKP/5)<BR>CS-ME12CKPG A/C (PANASONIC_AC CKP/5)<BR>CS-ME14CKPG A/C (PANASONIC_AC CKP/5)<BR>CS-YW9MKD A/C (PANASONIC_AC JKE/4)<BR>CS-Z9RKR A/C (PANASONIC_AC RKR/6)<BR>DKE series A/C (PANASONIC_AC DKE/3)<BR>DKW series A/C (PANASONIC_AC DKE/3)<BR>JKE series A/C (PANASONIC_AC JKE/4)<BR>NKE series A/C (PANASONIC_AC NKE/2)<BR>PKR series A/C (PANASONIC_AC DKE/3)<BR>RKR series A/C (PANASONIC_AC RKR/6)<BR>TV (PANASONIC) | CKP<BR>DKE<BR>JKE<BR>LKE<BR>NKE<BR>RKR | Yes |
| [Pioneer](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Pioneer.cpp) | **Pioneer** | AV Receivers | | - |
| [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)<BR>Standard RC-5 (RC5)<BR>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)** | AR09FSSDAWKNFA A/C<BR>AR12HSSDBWKNEU A/C<BR>AR12KSFPEWQNET A/C<BR>AR12NXCXAWKXEU A/C<BR>DB63-03556X003 remote<BR>DB93-16761C remote<BR>IEC-R03 remote<BR>UA55H6300 TV | | Yes |
| [Sanyo](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sanyo.cpp) | **Unknown** | | | - |
| [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<BR>AH-XP10NRY A/C<BR>AY-ZP40KR A/C<BR>CRMC-820JBEZ remote<BR>LC-52D62U TV | | Yes |
| [Samsung](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Samsung.cpp) | **[Samsung](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Samsung.h)** | AK59-00167A Bluray remote (SAMSUNG36)<BR>AR09FSSDAWKNFA A/C (SAMSUNG_AC)<BR>AR12HSSDBWKNEU A/C (SAMSUNG_AC)<BR>AR12KSFPEWQNET A/C (SAMSUNG_AC)<BR>AR12NXCXAWKXEU A/C (SAMSUNG_AC)<BR>BN59-01178B TV remote (SAMSUNG)<BR>DB63-03556X003 remote<BR>DB93-16761C remote<BR>IEC-R03 remote<BR>UA55H6300 TV (SAMSUNG) | | Yes |
| [Sanyo](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sanyo.cpp) | **Sanyo** | LC7461 transmitter IC (SANYO_LC7461)<BR>SA 8650B - disabled | | - |
| [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<BR>AH-XP10NRY A/C<BR>AY-ZP40KR A/C<BR>CRMC-820JBEZ remote<BR>CRMC-A907 JBEZ remote<BR>LC-52D62U TV | | Yes |
| [Sherwood](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sherwood.cpp) | **Sherwood** | RC-138 remote<BR>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<BR>WP-YK8 090218 remote | | - |
@ -75,10 +79,12 @@
| [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<BR>SAC9010QC remote | | 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<BR>RAS 18SKP-ES<BR>RAS-B13N3KV2<BR>RAS-B13N3KVP-E<BR>WC-L03SE<BR>WH-TA04NE | | Yes |
| [Trotec](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.cpp) | **[Unknown](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.h)** | | | 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 |
| [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<BR>DG11J1-3A remote<BR>DG11J1-91 remote<BR>SPIS409L A/C<BR>SPIS412L A/C<BR>SPIW409L A/C<BR>SPIW412L A/C<BR>SPIW418L A/C | DG11J13A<BR>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<BR>DRT-A3311(BG) floor fan | | - |
## Send only protocols:
@ -100,6 +106,7 @@
- CARRIER_AC40
- CARRIER_AC64
- COOLIX
- CORONA_AC
- DAIKIN
- DAIKIN128
- DAIKIN152
@ -124,6 +131,7 @@
- HITACHI_AC1
- HITACHI_AC2
- HITACHI_AC3
- HITACHI_AC344
- HITACHI_AC424
- INAX
- JVC
@ -135,6 +143,7 @@
- LUTRON
- MAGIQUEST
- MIDEA
- MIDEA24
- MITSUBISHI
- MITSUBISHI112
- MITSUBISHI136
@ -171,3 +180,4 @@
- VESTEL_AC
- WHIRLPOOL_AC
- WHYNTER
- ZEPEAL

View File

@ -0,0 +1,61 @@
# IRremoteESP8266 Library
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.
## 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.

View File

@ -0,0 +1,64 @@
# IRremoteESP8266 Library
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.
## 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.

View File

@ -0,0 +1,98 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRac.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">IRac.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceIRAcUtils"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceIRAcUtils.html">IRAcUtils</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ac3d2683bc26edc2bf58916187b5349c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceIRAcUtils.html#ac3d2683bc26edc2bf58916187b5349c3">IRAcUtils::resultAcToString</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const result)</td></tr>
<tr class="memdesc:ac3d2683bc26edc2bf58916187b5349c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Display the human readable state of an A/C message if we can. <a href="namespaceIRAcUtils.html#ac3d2683bc26edc2bf58916187b5349c3">More...</a><br /></td></tr>
<tr class="separator:ac3d2683bc26edc2bf58916187b5349c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5eb498bf12cb6cba023c9c1e9726949"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949">IRAcUtils::decodeToState</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *decode, <a class="el" href="structstdAc_1_1state__t.html">stdAc::state_t</a> *result, const <a class="el" href="structstdAc_1_1state__t.html">stdAc::state_t</a> *prev)</td></tr>
<tr class="memdesc:ac5eb498bf12cb6cba023c9c1e9726949"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a valid IR A/C remote message that we understand enough into a Common A/C state. <a href="namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949">More...</a><br /></td></tr>
<tr class="separator:ac5eb498bf12cb6cba023c9c1e9726949"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,127 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRac.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">IRac.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="IRac_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRac.html">IRac</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceIRAcUtils"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceIRAcUtils.html">IRAcUtils</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ac3d2683bc26edc2bf58916187b5349c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceIRAcUtils.html#ac3d2683bc26edc2bf58916187b5349c3">IRAcUtils::resultAcToString</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const result)</td></tr>
<tr class="memdesc:ac3d2683bc26edc2bf58916187b5349c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Display the human readable state of an A/C message if we can. <a href="namespaceIRAcUtils.html#ac3d2683bc26edc2bf58916187b5349c3">More...</a><br /></td></tr>
<tr class="separator:ac3d2683bc26edc2bf58916187b5349c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5eb498bf12cb6cba023c9c1e9726949"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949">IRAcUtils::decodeToState</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *decode, <a class="el" href="structstdAc_1_1state__t.html">stdAc::state_t</a> *result, const <a class="el" href="structstdAc_1_1state__t.html">stdAc::state_t</a> *prev)</td></tr>
<tr class="memdesc:ac5eb498bf12cb6cba023c9c1e9726949"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a valid IR A/C remote message that we understand enough into a Common A/C state. <a href="namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949">More...</a><br /></td></tr>
<tr class="separator:ac5eb498bf12cb6cba023c9c1e9726949"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:afd817f0bc02c516b6430098dcecde383"><td class="memItemLeft" align="right" valign="top">const int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRac_8h.html#afd817f0bc02c516b6430098dcecde383">kGpioUnused</a> = -1</td></tr>
<tr class="separator:afd817f0bc02c516b6430098dcecde383"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
<a id="afd817f0bc02c516b6430098dcecde383"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd817f0bc02c516b6430098dcecde383">&#9670;&nbsp;</a></span>kGpioUnused</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const int8_t kGpioUnused = -1</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,652 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRac.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">IRac.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="IRac_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef IRAC_H_</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define IRAC_H_</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; </div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Copyright 2019 David Conran</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#ifndef UNIT_TEST</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="IRremoteESP8266_8h.html">IRremoteESP8266.h</a>&quot;</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Amcor_8h.html">ir_Amcor.h</a>&quot;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Argo_8h.html">ir_Argo.h</a>&quot;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Carrier_8h.html">ir_Carrier.h</a>&quot;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Coolix_8h.html">ir_Coolix.h</a>&quot;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Corona_8h.html">ir_Corona.h</a>&quot;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Daikin_8h.html">ir_Daikin.h</a>&quot;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Delonghi_8h.html">ir_Delonghi.h</a>&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Fujitsu_8h.html">ir_Fujitsu.h</a>&quot;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Electra_8h.html">ir_Electra.h</a>&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Goodweather_8h.html">ir_Goodweather.h</a>&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Gree_8h.html">ir_Gree.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Haier_8h.html">ir_Haier.h</a>&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Hitachi_8h.html">ir_Hitachi.h</a>&quot;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Kelvinator_8h.html">ir_Kelvinator.h</a>&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__LG_8h.html">ir_LG.h</a>&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Midea_8h.html">ir_Midea.h</a>&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Mitsubishi_8h.html">ir_Mitsubishi.h</a>&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__MitsubishiHeavy_8h.html">ir_MitsubishiHeavy.h</a>&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Neoclima_8h.html">ir_Neoclima.h</a>&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Panasonic_8h.html">ir_Panasonic.h</a>&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Samsung_8h.html">ir_Samsung.h</a>&quot;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Sharp_8h.html">ir_Sharp.h</a>&quot;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Tcl_8h.html">ir_Tcl.h</a>&quot;</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Teco_8h.html">ir_Teco.h</a>&quot;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Toshiba_8h.html">ir_Toshiba.h</a>&quot;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Trotec_8h.html">ir_Trotec.h</a>&quot;</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Vestel_8h.html">ir_Vestel.h</a>&quot;</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ir__Whirlpool_8h.html">ir_Whirlpool.h</a>&quot;</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; </div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">// Constants</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="IRac_8h.html#afd817f0bc02c516b6430098dcecde383"> 40</a></span>&#160;<span class="keyword">const</span> int8_t <a class="code" href="IRac_8h.html#afd817f0bc02c516b6430098dcecde383">kGpioUnused</a> = -1;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; </div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">// Class</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classIRac.html"> 43</a></span>&#160;<span class="keyword">class </span><a class="code" href="classIRac.html">IRac</a> {</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classIRac.html#abb0864e277d4f6c68a92c2729112a40d">IRac</a>(<span class="keyword">const</span> uint16_t pin, <span class="keyword">const</span> <span class="keywordtype">bool</span> inverted = <span class="keyword">false</span>,</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> use_modulation = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classIRac.html#ad9c2fc9d07db70704f78a2d5f7be5b1c">isProtocolSupported</a>(<span class="keyword">const</span> <a class="code" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol);</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classIRac.html#af1c4ae70e61298c0be8d350d67e7c342">initState</a>(<a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> *state,</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <a class="code" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> vendor, <span class="keyword">const</span> int16_t model,</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> power, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <span class="keywordtype">bool</span> celsius,</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> econo,</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> light, <span class="keyword">const</span> <span class="keywordtype">bool</span> filter, <span class="keyword">const</span> <span class="keywordtype">bool</span> clean,</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> beep, <span class="keyword">const</span> int16_t sleep,</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> int16_t clock);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classIRac.html#af1c4ae70e61298c0be8d350d67e7c342">initState</a>(<a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> *state);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#ad0e45b13f477e29823b8c138704536c4">markAsSent</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRac.html#a0cea80b7bab92c9dc4f18c61f5762130">sendAc</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRac.html#a0cea80b7bab92c9dc4f18c61f5762130">sendAc</a>(<span class="keyword">const</span> <a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> desired, <span class="keyword">const</span> <a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> *prev = NULL);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRac.html#a0cea80b7bab92c9dc4f18c61f5762130">sendAc</a>(<span class="keyword">const</span> <a class="code" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> vendor, <span class="keyword">const</span> int16_t model,</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> power, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> celsius, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> econo,</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> light, <span class="keyword">const</span> <span class="keywordtype">bool</span> filter, <span class="keyword">const</span> <span class="keywordtype">bool</span> clean,</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> beep, <span class="keyword">const</span> int16_t sleep = -1,</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> int16_t clock = -1);</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classIRac.html#a3ba4eee08650dfcdd6d492a67c86f016">cmpStates</a>(<span class="keyword">const</span> <a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> a, <span class="keyword">const</span> <a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> b);</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classIRac.html#a3dba736fe25bd3a3a47b9ec7dae51728">strToBool</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keyword">const</span> <span class="keywordtype">bool</span> def = <span class="keyword">false</span>);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">static</span> int16_t <a class="code" href="classIRac.html#a7036fbbb918d644a98b5efa16374a256">strToModel</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keyword">const</span> int16_t def = -1);</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">static</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> <a class="code" href="classIRac.html#a251fa76ddacc84d2655bac723b7dea28">strToOpmode</a>(</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> def = <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444faa8c857c2f1b000c92f9794ebf53888d7">stdAc::opmode_t::kAuto</a>);</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">static</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> <a class="code" href="classIRac.html#a7173b12c155d04dd1db07a055f4ecb03">strToFanspeed</a>(</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *str,</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> def = <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa8c857c2f1b000c92f9794ebf53888d7">stdAc::fanspeed_t::kAuto</a>);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">static</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> <a class="code" href="classIRac.html#a538c861d79afabb11fb8becedd3962f8">strToSwingV</a>(</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> def = <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43acc9ab5e60ac2a9a675ba64bf4bb49dc8">stdAc::swingv_t::kOff</a>);</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">static</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> <a class="code" href="classIRac.html#a294d6040909519f465945245df56e56d">strToSwingH</a>(</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> def = <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147acc9ab5e60ac2a9a675ba64bf4bb49dc8">stdAc::swingh_t::kOff</a>);</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">static</span> <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="classIRac.html#a9bbd9e6b72e82a752df56e8c489668cf">boolToString</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> value);</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">static</span> <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="classIRac.html#a6dd1b87f2477bc3721d207b1fed482b8">opmodeToString</a>(<span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode);</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">static</span> <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="classIRac.html#ab8d8a1ce5de8970c07c90fb41731e2e6">fanspeedToString</a>(<span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> speed);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">static</span> <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="classIRac.html#a641b59e48183a8f6d9b739ce7210f142">swingvToString</a>(<span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv);</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">static</span> <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="classIRac.html#a21c9d71bbf229fd8369480e50a7c3689">swinghToString</a>(<span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh);</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> <a class="code" href="classIRac.html#af0122722691881b04c312bb30efcc3f2">getState</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> <a class="code" href="classIRac.html#adf582223eae0127491c7f1db38f101d3">getStatePrev</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRac.html#a35258c35a2d2b19886292b22b2aa053a">hasStateChanged</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classIRac.html#ae85d7ac0c58028b2547518f88d3e98fe"> 91</a></span>&#160; <a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> <a class="code" href="classIRac.html#ae85d7ac0c58028b2547518f88d3e98fe">next</a>; </div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor">#ifndef UNIT_TEST</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classIRac.html#aba78a2510d8cdcaf4c601e8b0574ae6c"> 96</a></span>&#160; uint16_t <a class="code" href="classIRac.html#aba78a2510d8cdcaf4c601e8b0574ae6c">_pin</a>;</div>
<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classIRac.html#a9cfaa0b92819f06b3aa5b3e9e48b9d51"> 97</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRac.html#a9cfaa0b92819f06b3aa5b3e9e48b9d51">_inverted</a>;</div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classIRac.html#acc6b7380f11c38d13fffa99ca2189a9b"> 98</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRac.html#acc6b7380f11c38d13fffa99ca2189a9b">_modulation</a>;</div>
<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classIRac.html#a8c63dc78c49f3714887fea0feefffd44"> 99</a></span>&#160; <a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> <a class="code" href="classIRac.html#a8c63dc78c49f3714887fea0feefffd44">_prev</a>; <span class="comment">// The state we expect the device to currently be in.</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="preprocessor">#if SEND_AMCOR</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a4bad16621b232572e14fe4a53f678131">amcor</a>(<a class="code" href="classIRAmcorAc.html">IRAmcorAc</a> *ac,</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan);</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor">#endif // SEND_AMCOR</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="preprocessor">#if SEND_ARGO</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#aa06ee1314529dbf96f4e6f3c28ea6821">argo</a>(<a class="code" href="classIRArgoAC.html">IRArgoAC</a> *ac,</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> int16_t sleep = -1);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor">#endif // SEND_ARGO</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor">#if SEND_CARRIER_AC64</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keywordtype">void</span> <a class="code" href="classIRac.html#a8090f2d79a31b81a0342b2e9efb9d555">carrier64</a>(<a class="code" href="classIRCarrierAc64.html">IRCarrierAc64</a> *ac,</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> int16_t sleep = -1);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="preprocessor">#endif // SEND_CARRIER_AC64</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor">#if SEND_COOLIX</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a4750db3b06db51f5a23c22538c41b7b3">coolix</a>(<a class="code" href="classIRCoolixAC.html">IRCoolixAC</a> *ac,</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> light, <span class="keyword">const</span> <span class="keywordtype">bool</span> clean,</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">const</span> int16_t sleep = -1);</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="preprocessor">#endif // SEND_COOLIX</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="preprocessor">#if SEND_CORONA_AC</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#adcf2bdb1ef6dc057532ae7d188557dac">corona</a>(<a class="code" href="classIRCoronaAc.html">IRCoronaAc</a> *ac,</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <span class="keywordtype">bool</span> econo);</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="preprocessor">#endif // SEND_CORONA_AC</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor">#if SEND_DAIKIN</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#afb6d77bbeb5b2465437cef4f58b83e0e">daikin</a>(<a class="code" href="classIRDaikinESP.html">IRDaikinESP</a> *ac,</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> econo,</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> clean);</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="preprocessor">#endif // SEND_DAIKIN</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="preprocessor">#if SEND_DAIKIN128</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a8fe7c254e1bcb32b6b6fdc1f91693a50">daikin128</a>(<a class="code" href="classIRDaikin128.html">IRDaikin128</a> *ac,</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> light,</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> econo, <span class="keyword">const</span> int16_t sleep = -1,</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">const</span> int16_t clock = -1);</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="preprocessor">#endif // SEND_DAIKIN128</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="preprocessor">#if SEND_DAIKIN152</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a6dff8e608e3e9fecffe71c3fd1ebe74e">daikin152</a>(<a class="code" href="classIRDaikin152.html">IRDaikin152</a> *ac,</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> econo);</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="preprocessor">#endif // SEND_DAIKIN152</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="preprocessor">#if SEND_DAIKIN160</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a3b34f44d713efa52f30d43405cde831c">daikin160</a>(<a class="code" href="classIRDaikin160.html">IRDaikin160</a> *ac,</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv);</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor">#endif // SEND_DAIKIN160</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor">#if SEND_DAIKIN176</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#aaae173fd58a7b53c3f4d2edbf7c4afe7">daikin176</a>(<a class="code" href="classIRDaikin176.html">IRDaikin176</a> *ac,</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh);</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor">#endif // SEND_DAIKIN176</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="preprocessor">#if SEND_DAIKIN2</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a89eddc0e1b3c41c608208d2752dc954c">daikin2</a>(<a class="code" href="classIRDaikin2.html">IRDaikin2</a> *ac,</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> light,</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> econo, <span class="keyword">const</span> <span class="keywordtype">bool</span> filter, <span class="keyword">const</span> <span class="keywordtype">bool</span> clean,</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> beep, <span class="keyword">const</span> int16_t sleep = -1,</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keyword">const</span> int16_t clock = -1);</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="preprocessor">#endif // SEND_DAIKIN2</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="preprocessor">#if SEND_DAIKIN216</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="keywordtype">void</span> <a class="code" href="classIRac.html#a101ac8b9e9564e557ef1a1f61ff111d9">daikin216</a>(<a class="code" href="classIRDaikin216.html">IRDaikin216</a> *ac,</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo);</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="preprocessor">#endif // SEND_DAIKIN216</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="preprocessor">#if SEND_DAIKIN64</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a074db6fc0cff2878d80a397020e1b249">daikin64</a>(<a class="code" href="classIRDaikin64.html">IRDaikin64</a> *ac,</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo,</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keyword">const</span> int16_t sleep = -1, <span class="keyword">const</span> int16_t clock = -1);</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="preprocessor">#endif // SEND_DAIKIN64</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="preprocessor">#if SEND_DELONGHI_AC</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#af290b0b08cff5121bb88c62051ed1074">delonghiac</a>(<a class="code" href="classIRDelonghiAc.html">IRDelonghiAc</a> *ac,</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">bool</span> celsius,</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> int16_t sleep = -1);</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="preprocessor">#endif // SEND_DELONGHI_AC</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="preprocessor">#if SEND_ELECTRA_AC</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="keywordtype">void</span> <a class="code" href="classIRac.html#abb847bd5e09feb293432b8a8cf0dd9de">electra</a>(<a class="code" href="classIRElectraAc.html">IRElectraAc</a> *ac,</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo,</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> lighttoggle, <span class="keyword">const</span> <span class="keywordtype">bool</span> clean);</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="preprocessor">#endif // SEND_ELECTRA_AC</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="preprocessor">#if SEND_FUJITSU_AC</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a23cf80270562ca28ae1f1da2bbb559e7">fujitsu</a>(<a class="code" href="classIRFujitsuAC.html">IRFujitsuAC</a> *ac, <span class="keyword">const</span> <a class="code" href="IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0">fujitsu_ac_remote_model_t</a> model,</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> econo,</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> filter, <span class="keyword">const</span> <span class="keywordtype">bool</span> clean);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="preprocessor">#endif // SEND_FUJITSU_AC</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor">#if SEND_GOODWEATHER</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#ac47ff5c6faf41e6fb37df258a8bafc08">goodweather</a>(<a class="code" href="classIRGoodweatherAc.html">IRGoodweatherAc</a> *ac,</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> light,</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keyword">const</span> int16_t sleep = -1);</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="preprocessor">#endif // SEND_GOODWEATHER</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="preprocessor">#if SEND_GREE</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#ab66e48b039c9990bf97cd8c2512a6c70">gree</a>(<a class="code" href="classIRGreeAC.html">IRGreeAC</a> *ac, <span class="keyword">const</span> <a class="code" href="IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9">gree_ac_remote_model_t</a> model,</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">bool</span> celsius,</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> light,</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> clean, <span class="keyword">const</span> int16_t sleep = -1);</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="preprocessor">#endif // SEND_GREE</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="preprocessor">#if SEND_HAIER_AC</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#ae0a29a4cb8c7a4707a7725c576822a58">haier</a>(<a class="code" href="classIRHaierAC.html">IRHaierAC</a> *ac,</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> filter, <span class="keyword">const</span> int16_t sleep = -1,</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keyword">const</span> int16_t clock = -1);</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="preprocessor">#endif // SEND_HAIER_AC</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="preprocessor">#if SEND_HAIER_AC_YRW02</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a7bc779a162dd9a1b4c925febec443353">haierYrwo2</a>(<a class="code" href="classIRHaierACYRW02.html">IRHaierACYRW02</a> *ac,</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> filter,</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keyword">const</span> int16_t sleep = -1);</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="preprocessor">#endif // SEND_HAIER_AC_YRW02</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="preprocessor">#if SEND_HITACHI_AC</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#acd0f2fcf03aabf947a19a195000add3c">hitachi</a>(<a class="code" href="classIRHitachiAc.html">IRHitachiAc</a> *ac,</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="preprocessor">#endif // SEND_HITACHI_AC</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="preprocessor">#if SEND_HITACHI_AC1</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#ac8807d62f6ae87af72d44b50bed3f17b">hitachi1</a>(<a class="code" href="classIRHitachiAc1.html">IRHitachiAc1</a> *ac, <span class="keyword">const</span> <a class="code" href="IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49">hitachi_ac1_remote_model_t</a> model,</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <span class="keywordtype">bool</span> power_toggle,</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> swing_toggle, <span class="keyword">const</span> int16_t sleep = -1);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="preprocessor">#endif // SEND_HITACHI_AC1</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="preprocessor">#if SEND_HITACHI_AC344</span></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a0bc34635a1a349816344916a82585460">hitachi344</a>(<a class="code" href="classIRHitachiAc344.html">IRHitachiAc344</a> *ac,</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh);</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="preprocessor">#endif // SEND_HITACHI_AC344</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="preprocessor">#if SEND_HITACHI_AC424</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#aec6de0752ddd3a3e7c6824cb1b692508">hitachi424</a>(<a class="code" href="classIRHitachiAc424.html">IRHitachiAc424</a> *ac,</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv);</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="preprocessor">#endif // SEND_HITACHI_AC424</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="preprocessor">#if SEND_KELVINATOR</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a6e4d8061841a7271205f81bd8e7d6171">kelvinator</a>(<a class="code" href="classIRKelvinatorAC.html">IRKelvinatorAC</a> *ac,</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> light,</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> filter, <span class="keyword">const</span> <span class="keywordtype">bool</span> clean);</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="preprocessor">#endif // SEND_KELVINATOR</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="preprocessor">#if SEND_LG</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#afad31ecf9eae573882d53dd6629485fb">lg</a>(<a class="code" href="classIRLgAc.html">IRLgAc</a> *ac, <span class="keyword">const</span> <a class="code" href="IRsend_8h.html#a50c54713e16502d280723334879dc83b">lg_ac_remote_model_t</a> model,</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan);</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="preprocessor">#endif // SEND_LG</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="preprocessor">#if SEND_MIDEA</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a5b9c72198497eca0121945b557691309">midea</a>(<a class="code" href="classIRMideaAC.html">IRMideaAC</a> *ac,</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">bool</span> celsius,</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> int16_t sleep = -1);</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="preprocessor">#endif // SEND_MIDEA</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="preprocessor">#if SEND_MITSUBISHI_AC</span></div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#aaa60bcac75dc5dda40c78f8c227b19a3">mitsubishi</a>(<a class="code" href="classIRMitsubishiAC.html">IRMitsubishiAC</a> *ac,</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet, <span class="keyword">const</span> int16_t clock = -1);</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="preprocessor">#endif // SEND_MITSUBISHI_AC</span></div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="preprocessor">#if SEND_MITSUBISHI112</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a2438b6e4403d5952adb299083e038e10">mitsubishi112</a>(<a class="code" href="classIRMitsubishi112.html">IRMitsubishi112</a> *ac,</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet);</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="preprocessor">#endif // SEND_MITSUBISHI112</span></div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="preprocessor">#if SEND_MITSUBISHI136</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#aa3033eb835cf3cd313ee2c2f38357e8e">mitsubishi136</a>(<a class="code" href="classIRMitsubishi136.html">IRMitsubishi136</a> *ac,</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet);</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="preprocessor">#endif // SEND_MITSUBISHI136</span></div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="preprocessor">#if SEND_MITSUBISHIHEAVY</span></div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#af6c9084c5e902f98a03ad0eaf3b9448e">mitsubishiHeavy88</a>(<a class="code" href="classIRMitsubishiHeavy88Ac.html">IRMitsubishiHeavy88Ac</a> *ac,</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> econo, <span class="keyword">const</span> <span class="keywordtype">bool</span> clean);</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a635b89320d878c1e3f270d7146cb9b00">mitsubishiHeavy152</a>(<a class="code" href="classIRMitsubishiHeavy152Ac.html">IRMitsubishiHeavy152Ac</a> *ac,</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> econo,</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> filter, <span class="keyword">const</span> <span class="keywordtype">bool</span> clean,</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keyword">const</span> int16_t sleep = -1);</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="preprocessor">#endif // SEND_MITSUBISHIHEAVY</span></div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="preprocessor">#if SEND_NEOCLIMA</span></div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a0e468b705922e58308c5e340499f2391">neoclima</a>(<a class="code" href="classIRNeoclimaAc.html">IRNeoclimaAc</a> *ac, <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> light, <span class="keyword">const</span> <span class="keywordtype">bool</span> filter,</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keyword">const</span> int16_t sleep = -1);</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="preprocessor">#endif // SEND_NEOCLIMA</span></div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="preprocessor">#if SEND_PANASONIC_AC</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#af873db2b9735127eb6f079861daed67a">panasonic</a>(<a class="code" href="classIRPanasonicAc.html">IRPanasonicAc</a> *ac, <span class="keyword">const</span> <a class="code" href="IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6f">panasonic_ac_remote_model_t</a> model,</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> filter,</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keyword">const</span> int16_t clock = -1);</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="preprocessor">#endif // SEND_PANASONIC_AC</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="preprocessor">#if SEND_SAMSUNG_AC</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a619c659a11c258ea9623eaa37689ba4c">samsung</a>(<a class="code" href="classIRSamsungAc.html">IRSamsungAc</a> *ac,</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> light,</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> filter, <span class="keyword">const</span> <span class="keywordtype">bool</span> clean,</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> beep, <span class="keyword">const</span> <span class="keywordtype">bool</span> prevpower = <span class="keyword">true</span>,</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> forcepower = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="preprocessor">#endif // SEND_SAMSUNG_AC</span></div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="preprocessor">#if SEND_SHARP_AC</span></div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a7b6d8b4e554a89f339f896fe4233ed15">sharp</a>(<a class="code" href="classIRSharpAc.html">IRSharpAc</a> *ac,</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <span class="keywordtype">bool</span> prev_power, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode,</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> degrees, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> filter,</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> clean);</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="preprocessor">#endif // SEND_SHARP_AC</span></div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="preprocessor">#if SEND_TCL112AC</span></div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a3028bd9e83956d57b592bb96638b3f59">tcl112</a>(<a class="code" href="classIRTcl112Ac.html">IRTcl112Ac</a> *ac,</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan,</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> swingh,</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> light, <span class="keyword">const</span> <span class="keywordtype">bool</span> econo,</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> filter);</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="preprocessor">#endif // SEND_TCL112AC</span></div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="preprocessor">#if SEND_TECO</span></div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a9e612e04e270dd5710e8a63a64b56064">teco</a>(<a class="code" href="classIRTecoAc.html">IRTecoAc</a> *ac,</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> light, <span class="keyword">const</span> int16_t sleep = -1);</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="preprocessor">#endif // SEND_TECO</span></div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="preprocessor">#if SEND_TOSHIBA_AC</span></div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a384e62cc56ebbdd790ebcd500ce56fc5">toshiba</a>(<a class="code" href="classIRToshibaAC.html">IRToshibaAC</a> *ac,</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan);</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="preprocessor">#endif // SEND_TOSHIBA_AC</span></div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="preprocessor">#if SEND_TROTEC</span></div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#aed1a012c0546c2b1d53e86871a42ba1a">trotec</a>(<a class="code" href="classIRTrotecESP.html">IRTrotecESP</a> *ac,</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan, <span class="keyword">const</span> int16_t sleep = -1);</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="preprocessor">#endif // SEND_TROTEC</span></div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="preprocessor">#if SEND_VESTEL_AC</span></div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#a9b1cd1a4d44bc56e62128b9dbc178bba">vestel</a>(<a class="code" href="classIRVestelAc.html">IRVestelAc</a> *ac,</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> filter,</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">const</span> int16_t sleep = -1, <span class="keyword">const</span> int16_t clock = -1,</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> sendNormal = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="preprocessor">#endif // SEND_VESTEL_AC</span></div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="preprocessor">#if SEND_WHIRLPOOL_AC</span></div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRac.html#ae5f7a03589f614c03c5ad8629100b05a">whirlpool</a>(<a class="code" href="classIRWhirlpoolAc.html">IRWhirlpoolAc</a> *ac, <span class="keyword">const</span> <a class="code" href="IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2">whirlpool_ac_remote_model_t</a> model,</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode, <span class="keyword">const</span> <span class="keywordtype">float</span> degrees,</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> fan, <span class="keyword">const</span> <a class="code" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> swingv,</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> turbo, <span class="keyword">const</span> <span class="keywordtype">bool</span> light,</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keyword">const</span> int16_t sleep = -1, <span class="keyword">const</span> int16_t clock = -1);</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="preprocessor">#endif // SEND_WHIRLPOOL_AC</span></div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="keyword">static</span> <a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> <a class="code" href="classIRac.html#aad988dc123495012758307213a933f37">cleanState</a>(<span class="keyword">const</span> <a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> state);</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="keyword">static</span> <a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> <a class="code" href="classIRac.html#a36833999dce4ad608a5a0f084988cfd1">handleToggles</a>(<span class="keyword">const</span> <a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> desired,</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keyword">const</span> <a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> *prev = NULL);</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;}; <span class="comment">// IRac class</span></div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; </div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceIRAcUtils.html">IRAcUtils</a> {</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="namespaceIRAcUtils.html#ac3d2683bc26edc2bf58916187b5349c3">resultAcToString</a>(<span class="keyword">const</span> <a class="code" href="classdecode__results.html">decode_results</a> * <span class="keyword">const</span> results);</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949">decodeToState</a>(<span class="keyword">const</span> <a class="code" href="classdecode__results.html">decode_results</a> *decode, <a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> *result,</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keyword">const</span> <a class="code" href="structstdAc_1_1state__t.html">stdAc::state_t</a> *prev = NULL);</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;} <span class="comment">// namespace IRAcUtils</span></div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="preprocessor">#endif // IRAC_H_</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassIRPanasonicAc_html"><div class="ttname"><a href="classIRPanasonicAc.html">IRPanasonicAc</a></div><div class="ttdoc">Class for handling detailed Panasonic A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Panasonic.h:98</div></div>
<div class="ttc" id="air__Kelvinator_8h_html"><div class="ttname"><a href="ir__Kelvinator_8h.html">ir_Kelvinator.h</a></div><div class="ttdoc">Support for Kelvinator A/C protocols.</div></div>
<div class="ttc" id="aclassIRSamsungAc_html"><div class="ttname"><a href="classIRSamsungAc.html">IRSamsungAc</a></div><div class="ttdoc">Class for handling detailed Samsung A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Samsung.h:95</div></div>
<div class="ttc" id="aclassIRac_html_acd0f2fcf03aabf947a19a195000add3c"><div class="ttname"><a href="classIRac.html#acd0f2fcf03aabf947a19a195000add3c">IRac::hitachi</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Hitachi A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1020</div></div>
<div class="ttc" id="aclassIRToshibaAC_html"><div class="ttname"><a href="classIRToshibaAC.html">IRToshibaAC</a></div><div class="ttdoc">Class for handling detailed Toshiba A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Toshiba.h:62</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_ad5b287a488a8c1b7b8661f029ab56fad"><div class="ttname"><a href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a></div><div class="ttdeci">decode_type_t</div><div class="ttdoc">Enumerator for defining and numbering of supported IR protocol.</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:714</div></div>
<div class="ttc" id="aclassIRac_html_adf582223eae0127491c7f1db38f101d3"><div class="ttname"><a href="classIRac.html#adf582223eae0127491c7f1db38f101d3">IRac::getStatePrev</a></div><div class="ttdeci">stdAc::state_t getStatePrev(void)</div><div class="ttdoc">Get the previous internal A/C climate state that should have already been sent to the device....</div><div class="ttdef"><b>Definition:</b> IRac.cpp:128</div></div>
<div class="ttc" id="aclassIRac_html_af0122722691881b04c312bb30efcc3f2"><div class="ttname"><a href="classIRac.html#af0122722691881b04c312bb30efcc3f2">IRac::getState</a></div><div class="ttdeci">stdAc::state_t getState(void)</div><div class="ttdoc">Get the current internal A/C climate state.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:123</div></div>
<div class="ttc" id="aclassIRMitsubishiHeavy152Ac_html"><div class="ttname"><a href="classIRMitsubishiHeavy152Ac.html">IRMitsubishiHeavy152Ac</a></div><div class="ttdoc">Class for handling detailed Mitsubishi Heavy 152-bit A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_MitsubishiHeavy.h:133</div></div>
<div class="ttc" id="aclassIRac_html_a294d6040909519f465945245df56e56d"><div class="ttname"><a href="classIRac.html#a294d6040909519f465945245df56e56d">IRac::strToSwingH</a></div><div class="ttdeci">static stdAc::swingh_t strToSwingH(const char *str, const stdAc::swingh_t def=stdAc::swingh_t::kOff)</div><div class="ttdoc">Convert the supplied str into the appropriate enum.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2499</div></div>
<div class="ttc" id="aclassIRac_html_a0bc34635a1a349816344916a82585460"><div class="ttname"><a href="classIRac.html#a0bc34635a1a349816344916a82585460">IRac::hitachi344</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Hitachi 344-bit A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1096</div></div>
<div class="ttc" id="anamespacestdAc_html_a99ad268c783486f9b3207cb78f48444faa8c857c2f1b000c92f9794ebf53888d7"><div class="ttname"><a href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444faa8c857c2f1b000c92f9794ebf53888d7">stdAc::opmode_t::kAuto</a></div><div class="ttdeci">@ kAuto</div></div>
<div class="ttc" id="air__Electra_8h_html"><div class="ttname"><a href="ir__Electra_8h.html">ir_Electra.h</a></div><div class="ttdoc">Support for Electra A/C protocols.</div></div>
<div class="ttc" id="aclassIRac_html_ad0e45b13f477e29823b8c138704536c4"><div class="ttname"><a href="classIRac.html#ad0e45b13f477e29823b8c138704536c4">IRac::markAsSent</a></div><div class="ttdeci">void markAsSent(void)</div><div class="ttdoc">Update the previous state to the current one.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2362</div></div>
<div class="ttc" id="anamespacestdAc_html_ac07f224c7bb47cac55dd01f24770ef43"><div class="ttname"><a href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a></div><div class="ttdeci">swingv_t</div><div class="ttdoc">Common A/C settings for Vertical Swing.</div><div class="ttdef"><b>Definition:</b> IRsend.h:70</div></div>
<div class="ttc" id="aclassIRac_html_a89eddc0e1b3c41c608208d2752dc954c"><div class="ttname"><a href="classIRac.html#a89eddc0e1b3c41c608208d2752dc954c">IRac::daikin2</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Daikin2 A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:640</div></div>
<div class="ttc" id="air__Trotec_8h_html"><div class="ttname"><a href="ir__Trotec_8h.html">ir_Trotec.h</a></div><div class="ttdoc">Support for Trotec protocols.</div></div>
<div class="ttc" id="aclassIRDaikinESP_html"><div class="ttname"><a href="classIRDaikinESP.html">IRDaikinESP</a></div><div class="ttdoc">Class for handling detailed Daikin 280-bit A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Daikin.h:520</div></div>
<div class="ttc" id="aclassIRac_html_afad31ecf9eae573882d53dd6629485fb"><div class="ttname"><a href="classIRac.html#afad31ecf9eae573882d53dd6629485fb">IRac::lg</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a LG A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1202</div></div>
<div class="ttc" id="aclassIRDelonghiAc_html"><div class="ttname"><a href="classIRDelonghiAc.html">IRDelonghiAc</a></div><div class="ttdoc">Class for handling detailed Delonghi A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Delonghi.h:102</div></div>
<div class="ttc" id="aclassIRCoronaAc_html"><div class="ttname"><a href="classIRCoronaAc.html">IRCoronaAc</a></div><div class="ttdoc">Class for handling detailed Corona A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Corona.h:93</div></div>
<div class="ttc" id="aclassIRac_html_a6e4d8061841a7271205f81bd8e7d6171"><div class="ttname"><a href="classIRac.html#a6e4d8061841a7271205f81bd8e7d6171">IRac::kelvinator</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Kelvinator A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1168</div></div>
<div class="ttc" id="aclassIRDaikin2_html"><div class="ttname"><a href="classIRDaikin2.html">IRDaikin2</a></div><div class="ttdoc">Class for handling detailed Daikin 312-bit A/C messages. Code by crankyoldgit, Reverse engineering an...</div><div class="ttdef"><b>Definition:</b> ir_Daikin.h:602</div></div>
<div class="ttc" id="air__Neoclima_8h_html"><div class="ttname"><a href="ir__Neoclima_8h.html">ir_Neoclima.h</a></div><div class="ttdoc">Support for Neoclima protocols. Analysis by crankyoldgit &amp; AndreyShpilevoy.</div></div>
<div class="ttc" id="aclassIRDaikin128_html"><div class="ttname"><a href="classIRDaikin128.html">IRDaikin128</a></div><div class="ttdoc">Class for handling detailed Daikin 128-bit A/C messages. Code by crankyoldgit. Analysis by Daniel Ven...</div><div class="ttdef"><b>Definition:</b> ir_Daikin.h:864</div></div>
<div class="ttc" id="anamespacestdAc_html_a8bb0dbf18fe69f639f4ac0b3ff133383"><div class="ttname"><a href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a></div><div class="ttdeci">fanspeed_t</div><div class="ttdoc">Common A/C settings for Fan Speeds.</div><div class="ttdef"><b>Definition:</b> IRsend.h:58</div></div>
<div class="ttc" id="air__Sharp_8h_html"><div class="ttname"><a href="ir__Sharp_8h.html">ir_Sharp.h</a></div><div class="ttdoc">Support for Sharp protocols.</div></div>
<div class="ttc" id="aclassIRac_html_ab8d8a1ce5de8970c07c90fb41731e2e6"><div class="ttname"><a href="classIRac.html#ab8d8a1ce5de8970c07c90fb41731e2e6">IRac::fanspeedToString</a></div><div class="ttdeci">static String fanspeedToString(const stdAc::fanspeed_t speed)</div><div class="ttdoc">Convert the supplied fan speed enum into the appropriate String.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2641</div></div>
<div class="ttc" id="aIRsend_8h_html_ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2"><div class="ttname"><a href="IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2">whirlpool_ac_remote_model_t</a></div><div class="ttdeci">whirlpool_ac_remote_model_t</div><div class="ttdoc">Whirlpool A/C model numbers.</div><div class="ttdef"><b>Definition:</b> IRsend.h:152</div></div>
<div class="ttc" id="air__Carrier_8h_html"><div class="ttname"><a href="ir__Carrier_8h.html">ir_Carrier.h</a></div><div class="ttdoc">Carrier A/C.</div></div>
<div class="ttc" id="aclassIRac_html_ae5f7a03589f614c03c5ad8629100b05a"><div class="ttname"><a href="classIRac.html#ae5f7a03589f614c03c5ad8629100b05a">IRac::whirlpool</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Whirlpool A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1814</div></div>
<div class="ttc" id="aclassdecode__results_html"><div class="ttname"><a href="classdecode__results.html">decode_results</a></div><div class="ttdoc">Results returned from the decoder.</div><div class="ttdef"><b>Definition:</b> IRrecv.h:92</div></div>
<div class="ttc" id="aclassIRac_html_a074db6fc0cff2878d80a397020e1b249"><div class="ttname"><a href="classIRac.html#a074db6fc0cff2878d80a397020e1b249">IRac::daikin64</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Daikin 64-bit A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:709</div></div>
<div class="ttc" id="aclassIRac_html_a3028bd9e83956d57b592bb96638b3f59"><div class="ttname"><a href="classIRac.html#a3028bd9e83956d57b592bb96638b3f59">IRac::tcl112</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a TCL 112-bit A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1640</div></div>
<div class="ttc" id="aclassIRac_html_a0cea80b7bab92c9dc4f18c61f5762130"><div class="ttname"><a href="classIRac.html#a0cea80b7bab92c9dc4f18c61f5762130">IRac::sendAc</a></div><div class="ttdeci">bool sendAc(void)</div><div class="ttdoc">Send an A/C message based soley on our internal state.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2368</div></div>
<div class="ttc" id="aclassIRac_html_a3ba4eee08650dfcdd6d492a67c86f016"><div class="ttname"><a href="classIRac.html#a3ba4eee08650dfcdd6d492a67c86f016">IRac::cmpStates</a></div><div class="ttdeci">static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b)</div><div class="ttdoc">Compare two AirCon states.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2379</div></div>
<div class="ttc" id="air__Midea_8h_html"><div class="ttname"><a href="ir__Midea_8h.html">ir_Midea.h</a></div><div class="ttdoc">Support for Midea protocols. Midea added by crankyoldgit &amp; bwze.</div></div>
<div class="ttc" id="air__Daikin_8h_html"><div class="ttname"><a href="ir__Daikin_8h.html">ir_Daikin.h</a></div><div class="ttdoc">Support for Daikin A/C protocols.</div></div>
<div class="ttc" id="aIRsend_8h_html_af65070c92b97fa00b2de3818c46039c9"><div class="ttname"><a href="IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9">gree_ac_remote_model_t</a></div><div class="ttdeci">gree_ac_remote_model_t</div><div class="ttdoc">Gree A/C model numbers.</div><div class="ttdef"><b>Definition:</b> IRsend.h:129</div></div>
<div class="ttc" id="aclassIRDaikin64_html"><div class="ttname"><a href="classIRDaikin64.html">IRDaikin64</a></div><div class="ttdoc">Class for handling detailed Daikin 64-bit A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Daikin.h:998</div></div>
<div class="ttc" id="air__Coolix_8h_html"><div class="ttname"><a href="ir__Coolix_8h.html">ir_Coolix.h</a></div></div>
<div class="ttc" id="aclassIRac_html_a9b1cd1a4d44bc56e62128b9dbc178bba"><div class="ttname"><a href="classIRac.html#a9b1cd1a4d44bc56e62128b9dbc178bba">IRac::vestel</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Vestel A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1773</div></div>
<div class="ttc" id="aclassIRHitachiAc424_html"><div class="ttname"><a href="classIRHitachiAc424.html">IRHitachiAc424</a></div><div class="ttdoc">Class for handling detailed Hitachi 53-byte/424-bit A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Hitachi.h:313</div></div>
<div class="ttc" id="aclassIRac_html_afb6d77bbeb5b2465437cef4f58b83e0e"><div class="ttname"><a href="classIRac.html#afb6d77bbeb5b2465437cef4f58b83e0e">IRac::daikin</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Daikin A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:476</div></div>
<div class="ttc" id="aclassIRac_html_abb0864e277d4f6c68a92c2729112a40d"><div class="ttname"><a href="classIRac.html#abb0864e277d4f6c68a92c2729112a40d">IRac::IRac</a></div><div class="ttdeci">IRac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)</div><div class="ttdoc">Class constructor.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:49</div></div>
<div class="ttc" id="aclassIRDaikin216_html"><div class="ttname"><a href="classIRDaikin216.html">IRDaikin216</a></div><div class="ttdoc">Class for handling detailed Daikin 216-bit A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Daikin.h:698</div></div>
<div class="ttc" id="aIRsend_8h_html_acd0c6107b5a6cab2080b18a8de14ea49"><div class="ttname"><a href="IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49">hitachi_ac1_remote_model_t</a></div><div class="ttdeci">hitachi_ac1_remote_model_t</div><div class="ttdoc">HITACHI_AC1 A/C model numbers.</div><div class="ttdef"><b>Definition:</b> IRsend.h:135</div></div>
<div class="ttc" id="aclassIRac_html_a619c659a11c258ea9623eaa37689ba4c"><div class="ttname"><a href="classIRac.html#a619c659a11c258ea9623eaa37689ba4c">IRac::samsung</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Samsung A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1544</div></div>
<div class="ttc" id="aclassIRac_html_a8fe7c254e1bcb32b6b6fdc1f91693a50"><div class="ttname"><a href="classIRac.html#a8fe7c254e1bcb32b6b6fdc1f91693a50">IRac::daikin128</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Daikin 128-bit A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:516</div></div>
<div class="ttc" id="aclassIRHitachiAc_html"><div class="ttname"><a href="classIRHitachiAc.html">IRHitachiAc</a></div><div class="ttdoc">Class for handling detailed Hitachi 224-bit A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Hitachi.h:188</div></div>
<div class="ttc" id="aIRac_8h_html_afd817f0bc02c516b6430098dcecde383"><div class="ttname"><a href="IRac_8h.html#afd817f0bc02c516b6430098dcecde383">kGpioUnused</a></div><div class="ttdeci">const int8_t kGpioUnused</div><div class="ttdef"><b>Definition:</b> IRac.h:40</div></div>
<div class="ttc" id="anamespaceIRAcUtils_html"><div class="ttname"><a href="namespaceIRAcUtils.html">IRAcUtils</a></div><div class="ttdef"><b>Definition:</b> IRac.cpp:2710</div></div>
<div class="ttc" id="aclassIRac_html_ae0a29a4cb8c7a4707a7725c576822a58"><div class="ttname"><a href="classIRac.html#ae0a29a4cb8c7a4707a7725c576822a58">IRac::haier</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Haier A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:951</div></div>
<div class="ttc" id="aclassIRWhirlpoolAc_html"><div class="ttname"><a href="classIRWhirlpoolAc.html">IRWhirlpoolAc</a></div><div class="ttdoc">Class for handling detailed Whirlpool A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Whirlpool.h:91</div></div>
<div class="ttc" id="aclassIRHitachiAc344_html"><div class="ttname"><a href="classIRHitachiAc344.html">IRHitachiAc344</a></div><div class="ttdoc">Class for handling detailed Hitachi 344-bit A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Hitachi.h:401</div></div>
<div class="ttc" id="aclassIRac_html_a9bbd9e6b72e82a752df56e8c489668cf"><div class="ttname"><a href="classIRac.html#a9bbd9e6b72e82a752df56e8c489668cf">IRac::boolToString</a></div><div class="ttdeci">static String boolToString(const bool value)</div><div class="ttdoc">Convert the supplied boolean into the appropriate String.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2612</div></div>
<div class="ttc" id="aclassIRac_html_ae85d7ac0c58028b2547518f88d3e98fe"><div class="ttname"><a href="classIRac.html#ae85d7ac0c58028b2547518f88d3e98fe">IRac::next</a></div><div class="ttdeci">stdAc::state_t next</div><div class="ttdoc">The state we want the device to be in after we send.</div><div class="ttdef"><b>Definition:</b> IRac.h:91</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_afbeda3fd1bdc8c37d01bdf9f5c8274ff"><div class="ttname"><a href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a></div><div class="ttdeci">std::string String</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:1093</div></div>
<div class="ttc" id="aclassIRMitsubishiAC_html"><div class="ttname"><a href="classIRMitsubishiAC.html">IRMitsubishiAC</a></div><div class="ttdoc">Class for handling detailed Mitsubishi 144-bit A/C messages. Inspired and derived from the work done ...</div><div class="ttdef"><b>Definition:</b> ir_Mitsubishi.h:168</div></div>
<div class="ttc" id="aclassIRac_html_aed1a012c0546c2b1d53e86871a42ba1a"><div class="ttname"><a href="classIRac.html#aed1a012c0546c2b1d53e86871a42ba1a">IRac::trotec</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Trotec A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1736</div></div>
<div class="ttc" id="aclassIRac_html_a7036fbbb918d644a98b5efa16374a256"><div class="ttname"><a href="classIRac.html#a7036fbbb918d644a98b5efa16374a256">IRac::strToModel</a></div><div class="ttdeci">static int16_t strToModel(const char *str, const int16_t def=-1)</div><div class="ttdoc">Convert the supplied str into the appropriate enum.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2539</div></div>
<div class="ttc" id="aclassIRAmcorAc_html"><div class="ttname"><a href="classIRAmcorAc.html">IRAmcorAc</a></div><div class="ttdoc">Class for handling detailed Amcor A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Amcor.h:81</div></div>
<div class="ttc" id="aclassIRMitsubishi112_html"><div class="ttname"><a href="classIRMitsubishi112.html">IRMitsubishi112</a></div><div class="ttdef"><b>Definition:</b> ir_Mitsubishi.h:286</div></div>
<div class="ttc" id="aclassIRTcl112Ac_html"><div class="ttname"><a href="classIRTcl112Ac.html">IRTcl112Ac</a></div><div class="ttdoc">Class for handling detailed TCL A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Tcl.h:63</div></div>
<div class="ttc" id="aclassIRac_html_aaae173fd58a7b53c3f4d2edbf7c4afe7"><div class="ttname"><a href="classIRac.html#aaae173fd58a7b53c3f4d2edbf7c4afe7">IRac::daikin176</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Daikin 176-bit A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:608</div></div>
<div class="ttc" id="aclassIRElectraAc_html"><div class="ttname"><a href="classIRElectraAc.html">IRElectraAc</a></div><div class="ttdoc">Class for handling detailed Electra A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Electra.h:80</div></div>
<div class="ttc" id="air__Tcl_8h_html"><div class="ttname"><a href="ir__Tcl_8h.html">ir_Tcl.h</a></div><div class="ttdoc">Support for TCL protocols.</div></div>
<div class="ttc" id="aclassIRac_html_a35258c35a2d2b19886292b22b2aa053a"><div class="ttname"><a href="classIRac.html#a35258c35a2d2b19886292b22b2aa053a">IRac::hasStateChanged</a></div><div class="ttdeci">bool hasStateChanged(void)</div><div class="ttdoc">Check if the internal state has changed from what was previously sent.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2391</div></div>
<div class="ttc" id="aclassIRac_html_a7bc779a162dd9a1b4c925febec443353"><div class="ttname"><a href="classIRac.html#a7bc779a162dd9a1b4c925febec443353">IRac::haierYrwo2</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Haier YRWO2 A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:988</div></div>
<div class="ttc" id="aclassIRac_html_a101ac8b9e9564e557ef1a1f61ff111d9"><div class="ttname"><a href="classIRac.html#a101ac8b9e9564e557ef1a1f61ff111d9">IRac::daikin216</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Daikin 216-bit A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:679</div></div>
<div class="ttc" id="air__Hitachi_8h_html"><div class="ttname"><a href="ir__Hitachi_8h.html">ir_Hitachi.h</a></div><div class="ttdoc">Support for Hitachi A/C protocols.</div></div>
<div class="ttc" id="air__Panasonic_8h_html"><div class="ttname"><a href="ir__Panasonic_8h.html">ir_Panasonic.h</a></div><div class="ttdoc">Support for Panasonic protocols.</div></div>
<div class="ttc" id="aclassIRac_html_a36833999dce4ad608a5a0f084988cfd1"><div class="ttname"><a href="classIRac.html#a36833999dce4ad608a5a0f084988cfd1">IRac::handleToggles</a></div><div class="ttdeci">static stdAc::state_t handleToggles(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)</div><div class="ttdoc">Create a new state base on desired &amp; previous states but handle any state changes for options that ne...</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1858</div></div>
<div class="ttc" id="aclassIRMitsubishi136_html"><div class="ttname"><a href="classIRMitsubishi136.html">IRMitsubishi136</a></div><div class="ttdoc">Class for handling detailed Mitsubishi 136-bit A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Mitsubishi.h:232</div></div>
<div class="ttc" id="aIRsend_8h_html_a1b797a5e5176ac0eef49810bf7f40e6f"><div class="ttname"><a href="IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6f">panasonic_ac_remote_model_t</a></div><div class="ttdeci">panasonic_ac_remote_model_t</div><div class="ttdoc">Panasonic A/C model numbers.</div><div class="ttdef"><b>Definition:</b> IRsend.h:141</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html"><div class="ttname"><a href="IRremoteESP8266_8h.html">IRremoteESP8266.h</a></div></div>
<div class="ttc" id="anamespacestdAc_html_aae50ee315fa9c9ec1a4078da40d6b147"><div class="ttname"><a href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a></div><div class="ttdeci">swingh_t</div><div class="ttdoc">Common A/C settings for Horizontal Swing.</div><div class="ttdef"><b>Definition:</b> IRsend.h:83</div></div>
<div class="ttc" id="aclassIRac_html_a2438b6e4403d5952adb299083e038e10"><div class="ttname"><a href="classIRac.html#a2438b6e4403d5952adb299083e038e10">IRac::mitsubishi112</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Mitsubishi 112-bit A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1306</div></div>
<div class="ttc" id="anamespaceIRAcUtils_html_ac5eb498bf12cb6cba023c9c1e9726949"><div class="ttname"><a href="namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949">IRAcUtils::decodeToState</a></div><div class="ttdeci">bool decodeToState(const decode_results *decode, stdAc::state_t *result, const stdAc::state_t *prev)</div><div class="ttdoc">Convert a valid IR A/C remote message that we understand enough into a Common A/C state.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:3033</div></div>
<div class="ttc" id="aclassIRHitachiAc1_html"><div class="ttname"><a href="classIRHitachiAc1.html">IRHitachiAc1</a></div><div class="ttdoc">Class for handling detailed Hitachi 104-bit A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Hitachi.h:245</div></div>
<div class="ttc" id="aclassIRac_html_aec6de0752ddd3a3e7c6824cb1b692508"><div class="ttname"><a href="classIRac.html#aec6de0752ddd3a3e7c6824cb1b692508">IRac::hitachi424</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Hitachi 424-bit A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1130</div></div>
<div class="ttc" id="air__Samsung_8h_html"><div class="ttname"><a href="ir__Samsung_8h.html">ir_Samsung.h</a></div><div class="ttdoc">Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRre...</div></div>
<div class="ttc" id="anamespaceIRAcUtils_html_ac3d2683bc26edc2bf58916187b5349c3"><div class="ttname"><a href="namespaceIRAcUtils.html#ac3d2683bc26edc2bf58916187b5349c3">IRAcUtils::resultAcToString</a></div><div class="ttdeci">String resultAcToString(const decode_results *const result)</div><div class="ttdoc">Display the human readable state of an A/C message if we can.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2716</div></div>
<div class="ttc" id="aclassIRac_html_a6dff8e608e3e9fecffe71c3fd1ebe74e"><div class="ttname"><a href="classIRac.html#a6dff8e608e3e9fecffe71c3fd1ebe74e">IRac::daikin152</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Daikin 152-bit A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:553</div></div>
<div class="ttc" id="aIRsend_8h_html_a7204e78a1fe37a819c0b66f87a685dc0"><div class="ttname"><a href="IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0">fujitsu_ac_remote_model_t</a></div><div class="ttdeci">fujitsu_ac_remote_model_t</div><div class="ttdoc">Fujitsu A/C model numbers.</div><div class="ttdef"><b>Definition:</b> IRsend.h:120</div></div>
<div class="ttc" id="air__Gree_8h_html"><div class="ttname"><a href="ir__Gree_8h.html">ir_Gree.h</a></div><div class="ttdoc">Support for Gree A/C protocols.</div></div>
<div class="ttc" id="aclassIRCarrierAc64_html"><div class="ttname"><a href="classIRCarrierAc64.html">IRCarrierAc64</a></div><div class="ttdoc">Class for handling detailed Carrier 64 bit A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Carrier.h:74</div></div>
<div class="ttc" id="aclassIRMideaAC_html"><div class="ttname"><a href="classIRMideaAC.html">IRMideaAC</a></div><div class="ttdoc">Class for handling detailed Midea A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Midea.h:73</div></div>
<div class="ttc" id="aclassIRKelvinatorAC_html"><div class="ttname"><a href="classIRKelvinatorAC.html">IRKelvinatorAC</a></div><div class="ttdoc">Class for handling detailed Kelvinator A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Kelvinator.h:137</div></div>
<div class="ttc" id="aclassIRac_html_a9cfaa0b92819f06b3aa5b3e9e48b9d51"><div class="ttname"><a href="classIRac.html#a9cfaa0b92819f06b3aa5b3e9e48b9d51">IRac::_inverted</a></div><div class="ttdeci">bool _inverted</div><div class="ttdef"><b>Definition:</b> IRac.h:97</div></div>
<div class="ttc" id="aclassIRFujitsuAC_html"><div class="ttname"><a href="classIRFujitsuAC.html">IRFujitsuAC</a></div><div class="ttdoc">Class for handling detailed Fujitsu A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Fujitsu.h:101</div></div>
<div class="ttc" id="air__MitsubishiHeavy_8h_html"><div class="ttname"><a href="ir__MitsubishiHeavy_8h.html">ir_MitsubishiHeavy.h</a></div><div class="ttdoc">Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR r...</div></div>
<div class="ttc" id="aclassIRCoolixAC_html"><div class="ttname"><a href="classIRCoolixAC.html">IRCoolixAC</a></div><div class="ttdoc">Class for handling detailed Coolix A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Coolix.h:105</div></div>
<div class="ttc" id="aclassIRac_html_af873db2b9735127eb6f079861daed67a"><div class="ttname"><a href="classIRac.html#af873db2b9735127eb6f079861daed67a">IRac::panasonic</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Panasonic A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1500</div></div>
<div class="ttc" id="aclassIRac_html_a641b59e48183a8f6d9b739ce7210f142"><div class="ttname"><a href="classIRac.html#a641b59e48183a8f6d9b739ce7210f142">IRac::swingvToString</a></div><div class="ttdeci">static String swingvToString(const stdAc::swingv_t swingv)</div><div class="ttdoc">Convert the supplied enum into the appropriate String.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2663</div></div>
<div class="ttc" id="air__Mitsubishi_8h_html"><div class="ttname"><a href="ir__Mitsubishi_8h.html">ir_Mitsubishi.h</a></div><div class="ttdoc">Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github....</div></div>
<div class="ttc" id="aclassIRac_html_a5b9c72198497eca0121945b557691309"><div class="ttname"><a href="classIRac.html#a5b9c72198497eca0121945b557691309">IRac::midea</a></div><div class="ttdeci">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 int16_t sleep=-1)</div><div class="ttdoc">Send a Midea A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1235</div></div>
<div class="ttc" id="aclassIRac_html"><div class="ttname"><a href="classIRac.html">IRac</a></div><div class="ttdef"><b>Definition:</b> IRac.h:43</div></div>
<div class="ttc" id="air__Teco_8h_html"><div class="ttname"><a href="ir__Teco_8h.html">ir_Teco.h</a></div><div class="ttdoc">Support for Teco protocols.</div></div>
<div class="ttc" id="aclassIRac_html_ab66e48b039c9990bf97cd8c2512a6c70"><div class="ttname"><a href="classIRac.html#ab66e48b039c9990bf97cd8c2512a6c70">IRac::gree</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Gree A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:913</div></div>
<div class="ttc" id="air__Delonghi_8h_html"><div class="ttname"><a href="ir__Delonghi_8h.html">ir_Delonghi.h</a></div><div class="ttdoc">Delonghi A/C.</div></div>
<div class="ttc" id="aclassIRac_html_abb847bd5e09feb293432b8a8cf0dd9de"><div class="ttname"><a href="classIRac.html#abb847bd5e09feb293432b8a8cf0dd9de">IRac::electra</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send an Electra A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:766</div></div>
<div class="ttc" id="aclassIRac_html_aad988dc123495012758307213a933f37"><div class="ttname"><a href="classIRac.html#aad988dc123495012758307213a933f37">IRac::cleanState</a></div><div class="ttdeci">static stdAc::state_t cleanState(const stdAc::state_t state)</div><div class="ttdoc">Create a new state base on the provided state that has been suitably fixed.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1845</div></div>
<div class="ttc" id="air__Argo_8h_html"><div class="ttname"><a href="ir__Argo_8h.html">ir_Argo.h</a></div><div class="ttdoc">Support for Argo Ulisse 13 DCI Mobile Split ACs.</div></div>
<div class="ttc" id="aclassIRac_html_aaa60bcac75dc5dda40c78f8c227b19a3"><div class="ttname"><a href="classIRac.html#aaa60bcac75dc5dda40c78f8c227b19a3">IRac::mitsubishi</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Mitsubishi A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1271</div></div>
<div class="ttc" id="aclassIRac_html_a4bad16621b232572e14fe4a53f678131"><div class="ttname"><a href="classIRac.html#a4bad16621b232572e14fe4a53f678131">IRac::amcor</a></div><div class="ttdeci">void amcor(IRAmcorAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)</div><div class="ttdoc">Send an Amcor A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:279</div></div>
<div class="ttc" id="aclassIRDaikin152_html"><div class="ttname"><a href="classIRDaikin152.html">IRDaikin152</a></div><div class="ttdoc">Class for handling detailed Daikin 152-bit A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Daikin.h:938</div></div>
<div class="ttc" id="aclassIRLgAc_html"><div class="ttname"><a href="classIRLgAc.html">IRLgAc</a></div><div class="ttdoc">Class for handling detailed LG A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_LG.h:63</div></div>
<div class="ttc" id="air__Fujitsu_8h_html"><div class="ttname"><a href="ir__Fujitsu_8h.html">ir_Fujitsu.h</a></div><div class="ttdoc">Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham.</div></div>
<div class="ttc" id="aclassIRHaierAC_html"><div class="ttname"><a href="classIRHaierAC.html">IRHaierAC</a></div><div class="ttdoc">Class for handling detailed Haier A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Haier.h:217</div></div>
<div class="ttc" id="aclassIRDaikin160_html"><div class="ttname"><a href="classIRDaikin160.html">IRDaikin160</a></div><div class="ttdoc">Class for handling detailed Daikin 160-bit A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Daikin.h:754</div></div>
<div class="ttc" id="aclassIRac_html_a6dd1b87f2477bc3721d207b1fed482b8"><div class="ttname"><a href="classIRac.html#a6dd1b87f2477bc3721d207b1fed482b8">IRac::opmodeToString</a></div><div class="ttdeci">static String opmodeToString(const stdAc::opmode_t mode)</div><div class="ttdoc">Convert the supplied operation mode into the appropriate String.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2619</div></div>
<div class="ttc" id="aclassIRSharpAc_html"><div class="ttname"><a href="classIRSharpAc.html">IRSharpAc</a></div><div class="ttdoc">Class for handling detailed Sharp A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Sharp.h:108</div></div>
<div class="ttc" id="air__Goodweather_8h_html"><div class="ttname"><a href="ir__Goodweather_8h.html">ir_Goodweather.h</a></div><div class="ttdoc">Support for Goodweather compatible HVAC protocols.</div></div>
<div class="ttc" id="aclassIRac_html_aa06ee1314529dbf96f4e6f3c28ea6821"><div class="ttname"><a href="classIRac.html#aa06ee1314529dbf96f4e6f3c28ea6821">IRac::argo</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send an Argo A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:311</div></div>
<div class="ttc" id="aIRsend_8h_html_a50c54713e16502d280723334879dc83b"><div class="ttname"><a href="IRsend_8h.html#a50c54713e16502d280723334879dc83b">lg_ac_remote_model_t</a></div><div class="ttdeci">lg_ac_remote_model_t</div><div class="ttdoc">LG A/C model numbers.</div><div class="ttdef"><b>Definition:</b> IRsend.h:158</div></div>
<div class="ttc" id="aclassIRac_html_aa3033eb835cf3cd313ee2c2f38357e8e"><div class="ttname"><a href="classIRac.html#aa3033eb835cf3cd313ee2c2f38357e8e">IRac::mitsubishi136</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Mitsubishi 136-bit A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1342</div></div>
<div class="ttc" id="anamespacestdAc_html_a8bb0dbf18fe69f639f4ac0b3ff133383aa8c857c2f1b000c92f9794ebf53888d7"><div class="ttname"><a href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa8c857c2f1b000c92f9794ebf53888d7">stdAc::fanspeed_t::kAuto</a></div><div class="ttdeci">@ kAuto</div></div>
<div class="ttc" id="aclassIRac_html_acc6b7380f11c38d13fffa99ca2189a9b"><div class="ttname"><a href="classIRac.html#acc6b7380f11c38d13fffa99ca2189a9b">IRac::_modulation</a></div><div class="ttdeci">bool _modulation</div><div class="ttdef"><b>Definition:</b> IRac.h:98</div></div>
<div class="ttc" id="aclassIRac_html_a9e612e04e270dd5710e8a63a64b56064"><div class="ttname"><a href="classIRac.html#a9e612e04e270dd5710e8a63a64b56064">IRac::teco</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Teco A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1676</div></div>
<div class="ttc" id="aclassIRac_html_a251fa76ddacc84d2655bac723b7dea28"><div class="ttname"><a href="classIRac.html#a251fa76ddacc84d2655bac723b7dea28">IRac::strToOpmode</a></div><div class="ttdeci">static stdAc::opmode_t strToOpmode(const char *str, const stdAc::opmode_t def=stdAc::opmode_t::kAuto)</div><div class="ttdoc">Convert the supplied str into the appropriate enum.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2397</div></div>
<div class="ttc" id="aclassIRac_html_ac8807d62f6ae87af72d44b50bed3f17b"><div class="ttname"><a href="classIRac.html#ac8807d62f6ae87af72d44b50bed3f17b">IRac::hitachi1</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Hitachi1 A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1057</div></div>
<div class="ttc" id="anamespacestdAc_html_aae50ee315fa9c9ec1a4078da40d6b147acc9ab5e60ac2a9a675ba64bf4bb49dc8"><div class="ttname"><a href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147acc9ab5e60ac2a9a675ba64bf4bb49dc8">stdAc::swingh_t::kOff</a></div><div class="ttdeci">@ kOff</div></div>
<div class="ttc" id="air__Whirlpool_8h_html"><div class="ttname"><a href="ir__Whirlpool_8h.html">ir_Whirlpool.h</a></div><div class="ttdoc">Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea.</div></div>
<div class="ttc" id="aclassIRac_html_a3dba736fe25bd3a3a47b9ec7dae51728"><div class="ttname"><a href="classIRac.html#a3dba736fe25bd3a3a47b9ec7dae51728">IRac::strToBool</a></div><div class="ttdeci">static bool strToBool(const char *str, const bool def=false)</div><div class="ttdoc">Convert the supplied str into the appropriate boolean value.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2594</div></div>
<div class="ttc" id="aclassIRac_html_a384e62cc56ebbdd790ebcd500ce56fc5"><div class="ttname"><a href="classIRac.html#a384e62cc56ebbdd790ebcd500ce56fc5">IRac::toshiba</a></div><div class="ttdeci">void toshiba(IRToshibaAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)</div><div class="ttdoc">Send a Toshiba A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1706</div></div>
<div class="ttc" id="aclassIRac_html_af6c9084c5e902f98a03ad0eaf3b9448e"><div class="ttname"><a href="classIRac.html#af6c9084c5e902f98a03ad0eaf3b9448e">IRac::mitsubishiHeavy88</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Mitsubishi Heavy 88-bit A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1377</div></div>
<div class="ttc" id="aclassIRac_html_a538c861d79afabb11fb8becedd3962f8"><div class="ttname"><a href="classIRac.html#a538c861d79afabb11fb8becedd3962f8">IRac::strToSwingV</a></div><div class="ttdeci">static stdAc::swingv_t strToSwingV(const char *str, const stdAc::swingv_t def=stdAc::swingv_t::kOff)</div><div class="ttdoc">Convert the supplied str into the appropriate enum.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2458</div></div>
<div class="ttc" id="aclassIRVestelAc_html"><div class="ttname"><a href="classIRVestelAc.html">IRVestelAc</a></div><div class="ttdoc">Class for handling detailed Vestel A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Vestel.h:116</div></div>
<div class="ttc" id="aclassIRac_html_a0e468b705922e58308c5e340499f2391"><div class="ttname"><a href="classIRac.html#a0e468b705922e58308c5e340499f2391">IRac::neoclima</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Neoclima A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1460</div></div>
<div class="ttc" id="aclassIRTrotecESP_html"><div class="ttname"><a href="classIRTrotecESP.html">IRTrotecESP</a></div><div class="ttdoc">Class for handling detailed Trotec A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Trotec.h:76</div></div>
<div class="ttc" id="aclassIRTecoAc_html"><div class="ttname"><a href="classIRTecoAc.html">IRTecoAc</a></div><div class="ttdoc">Class for handling detailed Teco A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Teco.h:107</div></div>
<div class="ttc" id="aclassIRac_html_a21c9d71bbf229fd8369480e50a7c3689"><div class="ttname"><a href="classIRac.html#a21c9d71bbf229fd8369480e50a7c3689">IRac::swinghToString</a></div><div class="ttdeci">static String swinghToString(const stdAc::swingh_t swingh)</div><div class="ttdoc">Convert the supplied enum into the appropriate String.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2687</div></div>
<div class="ttc" id="aclassIRac_html_af290b0b08cff5121bb88c62051ed1074"><div class="ttname"><a href="classIRac.html#af290b0b08cff5121bb88c62051ed1074">IRac::delonghiac</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Delonghi A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:739</div></div>
<div class="ttc" id="aclassIRac_html_a8c63dc78c49f3714887fea0feefffd44"><div class="ttname"><a href="classIRac.html#a8c63dc78c49f3714887fea0feefffd44">IRac::_prev</a></div><div class="ttdeci">stdAc::state_t _prev</div><div class="ttdef"><b>Definition:</b> IRac.h:99</div></div>
<div class="ttc" id="aclassIRHaierACYRW02_html"><div class="ttname"><a href="classIRHaierACYRW02.html">IRHaierACYRW02</a></div><div class="ttdoc">Class for handling detailed Haier ACYRW02 A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Haier.h:289</div></div>
<div class="ttc" id="aclassIRac_html_a3b34f44d713efa52f30d43405cde831c"><div class="ttname"><a href="classIRac.html#a3b34f44d713efa52f30d43405cde831c">IRac::daikin160</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Daikin 160-bit A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:586</div></div>
<div class="ttc" id="aclassIRac_html_adcf2bdb1ef6dc057532ae7d188557dac"><div class="ttname"><a href="classIRac.html#adcf2bdb1ef6dc057532ae7d188557dac">IRac::corona</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Corona A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:441</div></div>
<div class="ttc" id="aclassIRac_html_af1c4ae70e61298c0be8d350d67e7c342"><div class="ttname"><a href="classIRac.html#af1c4ae70e61298c0be8d350d67e7c342">IRac::initState</a></div><div class="ttdeci">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)</div><div class="ttdoc">Initialse the given state with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:80</div></div>
<div class="ttc" id="aclassIRac_html_a635b89320d878c1e3f270d7146cb9b00"><div class="ttname"><a href="classIRac.html#a635b89320d878c1e3f270d7146cb9b00">IRac::mitsubishiHeavy152</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Mitsubishi Heavy 152-bit A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1418</div></div>
<div class="ttc" id="anamespacestdAc_html_ac07f224c7bb47cac55dd01f24770ef43acc9ab5e60ac2a9a675ba64bf4bb49dc8"><div class="ttname"><a href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43acc9ab5e60ac2a9a675ba64bf4bb49dc8">stdAc::swingv_t::kOff</a></div><div class="ttdeci">@ kOff</div></div>
<div class="ttc" id="air__Haier_8h_html"><div class="ttname"><a href="ir__Haier_8h.html">ir_Haier.h</a></div><div class="ttdoc">Support for Haier A/C protocols. The specifics of reverse engineering the protocols details:</div></div>
<div class="ttc" id="aclassIRMitsubishiHeavy88Ac_html"><div class="ttname"><a href="classIRMitsubishiHeavy88Ac.html">IRMitsubishiHeavy88Ac</a></div><div class="ttdoc">Class for handling detailed Mitsubishi Heavy 88-bit A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_MitsubishiHeavy.h:220</div></div>
<div class="ttc" id="aclassIRGreeAC_html"><div class="ttname"><a href="classIRGreeAC.html">IRGreeAC</a></div><div class="ttdoc">Class for handling detailed Gree A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Gree.h:117</div></div>
<div class="ttc" id="aclassIRac_html_a4750db3b06db51f5a23c22538c41b7b3"><div class="ttname"><a href="classIRac.html#a4750db3b06db51f5a23c22538c41b7b3">IRac::coolix</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Coolix A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:380</div></div>
<div class="ttc" id="aclassIRac_html_a7173b12c155d04dd1db07a055f4ecb03"><div class="ttname"><a href="classIRac.html#a7173b12c155d04dd1db07a055f4ecb03">IRac::strToFanspeed</a></div><div class="ttdeci">static stdAc::fanspeed_t strToFanspeed(const char *str, const stdAc::fanspeed_t def=stdAc::fanspeed_t::kAuto)</div><div class="ttdoc">Convert the supplied str into the appropriate enum.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:2427</div></div>
<div class="ttc" id="air__Toshiba_8h_html"><div class="ttname"><a href="ir__Toshiba_8h.html">ir_Toshiba.h</a></div><div class="ttdoc">Support for Toshiba protocols.</div></div>
<div class="ttc" id="aclassIRac_html_a7b6d8b4e554a89f339f896fe4233ed15"><div class="ttname"><a href="classIRac.html#a7b6d8b4e554a89f339f896fe4233ed15">IRac::sharp</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Sharp A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:1588</div></div>
<div class="ttc" id="aclassIRac_html_ac47ff5c6faf41e6fb37df258a8bafc08"><div class="ttname"><a href="classIRac.html#ac47ff5c6faf41e6fb37df258a8bafc08">IRac::goodweather</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Goodweather A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:871</div></div>
<div class="ttc" id="astructstdAc_1_1state__t_html"><div class="ttname"><a href="structstdAc_1_1state__t.html">stdAc::state_t</a></div><div class="ttdoc">Structure to hold a common A/C state.</div><div class="ttdef"><b>Definition:</b> IRsend.h:97</div></div>
<div class="ttc" id="aclassIRGoodweatherAc_html"><div class="ttname"><a href="classIRGoodweatherAc.html">IRGoodweatherAc</a></div><div class="ttdoc">Class for handling detailed Goodweather A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Goodweather.h:90</div></div>
<div class="ttc" id="air__Vestel_8h_html"><div class="ttname"><a href="ir__Vestel_8h.html">ir_Vestel.h</a></div><div class="ttdoc">Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.</div></div>
<div class="ttc" id="air__Corona_8h_html"><div class="ttname"><a href="ir__Corona_8h.html">ir_Corona.h</a></div></div>
<div class="ttc" id="aclassIRArgoAC_html"><div class="ttname"><a href="classIRArgoAC.html">IRArgoAC</a></div><div class="ttdoc">Class for handling detailed Argo A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Argo.h:129</div></div>
<div class="ttc" id="aclassIRac_html_a23cf80270562ca28ae1f1da2bbb559e7"><div class="ttname"><a href="classIRac.html#a23cf80270562ca28ae1f1da2bbb559e7">IRac::fujitsu</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Fujitsu A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:808</div></div>
<div class="ttc" id="aclassIRNeoclimaAc_html"><div class="ttname"><a href="classIRNeoclimaAc.html">IRNeoclimaAc</a></div><div class="ttdoc">Class for handling detailed Neoclima A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Neoclima.h:86</div></div>
<div class="ttc" id="aclassIRac_html_ad9c2fc9d07db70704f78a2d5f7be5b1c"><div class="ttname"><a href="classIRac.html#ad9c2fc9d07db70704f78a2d5f7be5b1c">IRac::isProtocolSupported</a></div><div class="ttdeci">static bool isProtocolSupported(const decode_type_t protocol)</div><div class="ttdoc">Is the given protocol supported by the IRac class?</div><div class="ttdef"><b>Definition:</b> IRac.cpp:133</div></div>
<div class="ttc" id="aclassIRDaikin176_html"><div class="ttname"><a href="classIRDaikin176.html">IRDaikin176</a></div><div class="ttdoc">Class for handling detailed Daikin 176-bit A/C messages.</div><div class="ttdef"><b>Definition:</b> ir_Daikin.h:806</div></div>
<div class="ttc" id="air__Amcor_8h_html"><div class="ttname"><a href="ir__Amcor_8h.html">ir_Amcor.h</a></div><div class="ttdoc">Amcor A/C protocol.</div></div>
<div class="ttc" id="aclassIRac_html_aba78a2510d8cdcaf4c601e8b0574ae6c"><div class="ttname"><a href="classIRac.html#aba78a2510d8cdcaf4c601e8b0574ae6c">IRac::_pin</a></div><div class="ttdeci">uint16_t _pin</div><div class="ttdef"><b>Definition:</b> IRac.h:96</div></div>
<div class="ttc" id="air__LG_8h_html"><div class="ttname"><a href="ir__LG_8h.html">ir_LG.h</a></div><div class="ttdoc">Support for LG protocols.</div></div>
<div class="ttc" id="aclassIRac_html_a8090f2d79a31b81a0342b2e9efb9d555"><div class="ttname"><a href="classIRac.html#a8090f2d79a31b81a0342b2e9efb9d555">IRac::carrier64</a></div><div class="ttdeci">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)</div><div class="ttdoc">Send a Carrier 64-bit A/C message with the supplied settings.</div><div class="ttdef"><b>Definition:</b> IRac.cpp:343</div></div>
<div class="ttc" id="anamespacestdAc_html_a99ad268c783486f9b3207cb78f48444f"><div class="ttname"><a href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a></div><div class="ttdeci">opmode_t</div><div class="ttdoc">Common A/C settings for A/C operating modes.</div><div class="ttdef"><b>Definition:</b> IRsend.h:46</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,135 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRrecv.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">IRrecv.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ad2612f65707186ef7df0179d3636b4ea"><td class="memItemLeft" align="right" valign="top">portMUX_TYPE&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8cpp.html#ad2612f65707186ef7df0179d3636b4ea">irremote_mux</a> = portMUX_INITIALIZER_UNLOCKED</td></tr>
<tr class="separator:ad2612f65707186ef7df0179d3636b4ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5620be27a7445f25d43dbe3432ed6fd1"><td class="memItemLeft" align="right" valign="top">volatile <a class="el" href="structirparams__t.html">irparams_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8cpp.html#a5620be27a7445f25d43dbe3432ed6fd1">irparams</a></td></tr>
<tr class="separator:a5620be27a7445f25d43dbe3432ed6fd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96e84ae171529ee954c53e2e938dd998"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structirparams__t.html">irparams_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8cpp.html#a96e84ae171529ee954c53e2e938dd998">irparams_save</a></td></tr>
<tr class="separator:a96e84ae171529ee954c53e2e938dd998"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a5620be27a7445f25d43dbe3432ed6fd1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5620be27a7445f25d43dbe3432ed6fd1">&#9670;&nbsp;</a></span>irparams</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">volatile <a class="el" href="structirparams__t.html">irparams_t</a> irparams</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a96e84ae171529ee954c53e2e938dd998"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96e84ae171529ee954c53e2e938dd998">&#9670;&nbsp;</a></span>irparams_save</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structirparams__t.html">irparams_t</a>* irparams_save</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad2612f65707186ef7df0179d3636b4ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad2612f65707186ef7df0179d3636b4ea">&#9670;&nbsp;</a></span>irremote_mux</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">portMUX_TYPE irremote_mux = portMUX_INITIALIZER_UNLOCKED</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,425 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRrecv.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">IRrecv.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="IRrecv_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structirparams__t.html">irparams_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Information for the interrupt handler. <a href="structirparams__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmatch__result__t.html">match_result_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Results from a data match. <a href="structmatch__result__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdecode__results.html">decode_results</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Results returned from the decoder. <a href="classdecode__results.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRrecv.html">IRrecv</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class for receiving IR messages. <a href="classIRrecv.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a0eac186845b9b998a252a3bdfa72e8ed"><td class="memItemLeft" align="right" valign="top">const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#a0eac186845b9b998a252a3bdfa72e8ed">kHeader</a> = 2</td></tr>
<tr class="separator:a0eac186845b9b998a252a3bdfa72e8ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5abb2b821f207ee9cf35f889f86d0ea3"><td class="memItemLeft" align="right" valign="top">const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#a5abb2b821f207ee9cf35f889f86d0ea3">kFooter</a> = 2</td></tr>
<tr class="separator:a5abb2b821f207ee9cf35f889f86d0ea3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44a836a34428f8f75b1ae566de4bb972"><td class="memItemLeft" align="right" valign="top">const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a> = 1</td></tr>
<tr class="separator:a44a836a34428f8f75b1ae566de4bb972"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99bbffe986ad7ba86d2b11e75f4aa50e"><td class="memItemLeft" align="right" valign="top">const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e">kMarkExcess</a> = 50</td></tr>
<tr class="separator:a99bbffe986ad7ba86d2b11e75f4aa50e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aadfa37def10a1adeaf2cf4c09d7504e3"><td class="memItemLeft" align="right" valign="top">const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#aadfa37def10a1adeaf2cf4c09d7504e3">kRawBuf</a> = 100</td></tr>
<tr class="separator:aadfa37def10a1adeaf2cf4c09d7504e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8b11750ba7f2e2d56343f770720ed89"><td class="memItemLeft" align="right" valign="top">const uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#ae8b11750ba7f2e2d56343f770720ed89">kRepeat</a> = UINT64_MAX</td></tr>
<tr class="separator:ae8b11750ba7f2e2d56343f770720ed89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6b5a940c7a0432aa82a8d823202cd7f"><td class="memItemLeft" align="right" valign="top">const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#aa6b5a940c7a0432aa82a8d823202cd7f">kUnknownThreshold</a> = 6</td></tr>
<tr class="separator:aa6b5a940c7a0432aa82a8d823202cd7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabba6fe7d7b97c45173eb7781a5d99bf"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#aabba6fe7d7b97c45173eb7781a5d99bf">kIdleState</a> = 2</td></tr>
<tr class="separator:aabba6fe7d7b97c45173eb7781a5d99bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc85ad22929660bdc17fe185d87edfb2"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#acc85ad22929660bdc17fe185d87edfb2">kMarkState</a> = 3</td></tr>
<tr class="separator:acc85ad22929660bdc17fe185d87edfb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc0d1931164a8967c210eb03a2d03e2a"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#acc0d1931164a8967c210eb03a2d03e2a">kSpaceState</a> = 4</td></tr>
<tr class="separator:acc0d1931164a8967c210eb03a2d03e2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e87ae8496a061e394bc9f7f3415a9b3"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#a0e87ae8496a061e394bc9f7f3415a9b3">kStopState</a> = 5</td></tr>
<tr class="separator:a0e87ae8496a061e394bc9f7f3415a9b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7884008b3a738dfc7bd8658655e10272"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#a7884008b3a738dfc7bd8658655e10272">kTolerance</a> = 25</td></tr>
<tr class="separator:a7884008b3a738dfc7bd8658655e10272"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05025e8bd724ae2d0c7fea6e924ca84c"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a> = 255</td></tr>
<tr class="separator:a05025e8bd724ae2d0c7fea6e924ca84c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a373dde69c312b0122665e581eea1297b"><td class="memItemLeft" align="right" valign="top">const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#a373dde69c312b0122665e581eea1297b">kRawTick</a> = 2</td></tr>
<tr class="separator:a373dde69c312b0122665e581eea1297b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad37e9659aaef29c541802d9759e0ab7b"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#ad37e9659aaef29c541802d9759e0ab7b">kTimeoutMs</a> = 15</td></tr>
<tr class="separator:ad37e9659aaef29c541802d9759e0ab7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73391726d7caccb9b498bba73a969784"><td class="memItemLeft" align="right" valign="top">const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#a73391726d7caccb9b498bba73a969784">kMaxTimeoutMs</a> = <a class="el" href="IRrecv_8h.html#a373dde69c312b0122665e581eea1297b">kRawTick</a> * (UINT16_MAX / MS_TO_USEC(1))</td></tr>
<tr class="separator:a73391726d7caccb9b498bba73a969784"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcfcce36d3e2faef742aa3529c22f23f"><td class="memItemLeft" align="right" valign="top">const uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#abcfcce36d3e2faef742aa3529c22f23f">kFnvPrime32</a> = 16777619UL</td></tr>
<tr class="separator:abcfcce36d3e2faef742aa3529c22f23f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04d9b0c909b377b36af3ece668482ca3"><td class="memItemLeft" align="right" valign="top">const uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#a04d9b0c909b377b36af3ece668482ca3">kFnvBasis32</a> = 2166136261UL</td></tr>
<tr class="separator:a04d9b0c909b377b36af3ece668482ca3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80a2d3445a1752d18caf307d7677b709"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#a80a2d3445a1752d18caf307d7677b709">kDefaultESP32Timer</a> = 3</td></tr>
<tr class="separator:a80a2d3445a1752d18caf307d7677b709"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7d82cf4c0937c9b1d59d75f6f347ab2"><td class="memItemLeft" align="right" valign="top">const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRrecv_8h.html#ab7d82cf4c0937c9b1d59d75f6f347ab2">kStateSizeMax</a> = <a class="el" href="IRremoteESP8266_8h.html#a10377a40053a12e091dbff2869db0352">kHitachiAc2StateLength</a></td></tr>
<tr class="separator:ab7d82cf4c0937c9b1d59d75f6f347ab2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a80a2d3445a1752d18caf307d7677b709"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80a2d3445a1752d18caf307d7677b709">&#9670;&nbsp;</a></span>kDefaultESP32Timer</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kDefaultESP32Timer = 3</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a04d9b0c909b377b36af3ece668482ca3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a04d9b0c909b377b36af3ece668482ca3">&#9670;&nbsp;</a></span>kFnvBasis32</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint32_t kFnvBasis32 = 2166136261UL</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abcfcce36d3e2faef742aa3529c22f23f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abcfcce36d3e2faef742aa3529c22f23f">&#9670;&nbsp;</a></span>kFnvPrime32</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint32_t kFnvPrime32 = 16777619UL</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5abb2b821f207ee9cf35f889f86d0ea3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5abb2b821f207ee9cf35f889f86d0ea3">&#9670;&nbsp;</a></span>kFooter</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint16_t kFooter = 2</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0eac186845b9b998a252a3bdfa72e8ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0eac186845b9b998a252a3bdfa72e8ed">&#9670;&nbsp;</a></span>kHeader</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint16_t kHeader = 2</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aabba6fe7d7b97c45173eb7781a5d99bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aabba6fe7d7b97c45173eb7781a5d99bf">&#9670;&nbsp;</a></span>kIdleState</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kIdleState = 2</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a99bbffe986ad7ba86d2b11e75f4aa50e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99bbffe986ad7ba86d2b11e75f4aa50e">&#9670;&nbsp;</a></span>kMarkExcess</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint16_t kMarkExcess = 50</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acc85ad22929660bdc17fe185d87edfb2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc85ad22929660bdc17fe185d87edfb2">&#9670;&nbsp;</a></span>kMarkState</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kMarkState = 3</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a73391726d7caccb9b498bba73a969784"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73391726d7caccb9b498bba73a969784">&#9670;&nbsp;</a></span>kMaxTimeoutMs</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint16_t kMaxTimeoutMs = <a class="el" href="IRrecv_8h.html#a373dde69c312b0122665e581eea1297b">kRawTick</a> * (UINT16_MAX / MS_TO_USEC(1))</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aadfa37def10a1adeaf2cf4c09d7504e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aadfa37def10a1adeaf2cf4c09d7504e3">&#9670;&nbsp;</a></span>kRawBuf</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint16_t kRawBuf = 100</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a373dde69c312b0122665e581eea1297b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a373dde69c312b0122665e581eea1297b">&#9670;&nbsp;</a></span>kRawTick</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint16_t kRawTick = 2</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae8b11750ba7f2e2d56343f770720ed89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8b11750ba7f2e2d56343f770720ed89">&#9670;&nbsp;</a></span>kRepeat</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint64_t kRepeat = UINT64_MAX</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acc0d1931164a8967c210eb03a2d03e2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc0d1931164a8967c210eb03a2d03e2a">&#9670;&nbsp;</a></span>kSpaceState</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kSpaceState = 4</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a44a836a34428f8f75b1ae566de4bb972"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a44a836a34428f8f75b1ae566de4bb972">&#9670;&nbsp;</a></span>kStartOffset</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint16_t kStartOffset = 1</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab7d82cf4c0937c9b1d59d75f6f347ab2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab7d82cf4c0937c9b1d59d75f6f347ab2">&#9670;&nbsp;</a></span>kStateSizeMax</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint16_t kStateSizeMax = <a class="el" href="IRremoteESP8266_8h.html#a10377a40053a12e091dbff2869db0352">kHitachiAc2StateLength</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0e87ae8496a061e394bc9f7f3415a9b3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e87ae8496a061e394bc9f7f3415a9b3">&#9670;&nbsp;</a></span>kStopState</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kStopState = 5</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad37e9659aaef29c541802d9759e0ab7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad37e9659aaef29c541802d9759e0ab7b">&#9670;&nbsp;</a></span>kTimeoutMs</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kTimeoutMs = 15</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7884008b3a738dfc7bd8658655e10272"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7884008b3a738dfc7bd8658655e10272">&#9670;&nbsp;</a></span>kTolerance</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kTolerance = 25</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa6b5a940c7a0432aa82a8d823202cd7f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6b5a940c7a0432aa82a8d823202cd7f">&#9670;&nbsp;</a></span>kUnknownThreshold</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint16_t kUnknownThreshold = 6</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a05025e8bd724ae2d0c7fea6e924ca84c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a05025e8bd724ae2d0c7fea6e924ca84c">&#9670;&nbsp;</a></span>kUseDefTol</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kUseDefTol = 255</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,972 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRrecv.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">IRrecv.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="IRrecv_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright 2009 Ken Shirriff</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright 2015 Mark Szabo</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright 2015 Sebastien Warin</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Copyright 2017 David Conran</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#ifndef IRRECV_H_</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#define IRRECV_H_</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; </div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef UNIT_TEST</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;stddef.h&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#define __STDC_LIMIT_MACROS</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="IRremoteESP8266_8h.html">IRremoteESP8266.h</a>&quot;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// Constants</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#a0eac186845b9b998a252a3bdfa72e8ed"> 18</a></span>&#160;<span class="keyword">const</span> uint16_t <a class="code" href="IRrecv_8h.html#a0eac186845b9b998a252a3bdfa72e8ed">kHeader</a> = 2; <span class="comment">// Usual nr. of header entries.</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#a5abb2b821f207ee9cf35f889f86d0ea3"> 19</a></span>&#160;<span class="keyword">const</span> uint16_t <a class="code" href="IRrecv_8h.html#a5abb2b821f207ee9cf35f889f86d0ea3">kFooter</a> = 2; <span class="comment">// Usual nr. of footer (stop bits) entries.</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972"> 20</a></span>&#160;<span class="keyword">const</span> uint16_t <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a> = 1; <span class="comment">// Usual rawbuf entry to start from.</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#define MS_TO_USEC(x) (x * 1000U) // Convert milli-Seconds to micro-Seconds.</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// Marks tend to be 100us too long, and spaces 100us too short</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// when received due to sensor lag.</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e"> 24</a></span>&#160;<span class="keyword">const</span> uint16_t <a class="code" href="IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e">kMarkExcess</a> = 50;</div>
<div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#aadfa37def10a1adeaf2cf4c09d7504e3"> 25</a></span>&#160;<span class="keyword">const</span> uint16_t <a class="code" href="IRrecv_8h.html#aadfa37def10a1adeaf2cf4c09d7504e3">kRawBuf</a> = 100; <span class="comment">// Default length of raw capture buffer</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#ae8b11750ba7f2e2d56343f770720ed89"> 26</a></span>&#160;<span class="keyword">const</span> uint64_t <a class="code" href="IRrecv_8h.html#ae8b11750ba7f2e2d56343f770720ed89">kRepeat</a> = UINT64_MAX;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// Default min size of reported UNKNOWN messages.</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#aa6b5a940c7a0432aa82a8d823202cd7f"> 28</a></span>&#160;<span class="keyword">const</span> uint16_t <a class="code" href="IRrecv_8h.html#aa6b5a940c7a0432aa82a8d823202cd7f">kUnknownThreshold</a> = 6;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">// receiver states</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#aabba6fe7d7b97c45173eb7781a5d99bf"> 31</a></span>&#160;<span class="keyword">const</span> uint8_t <a class="code" href="IRrecv_8h.html#aabba6fe7d7b97c45173eb7781a5d99bf">kIdleState</a> = 2;</div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#acc85ad22929660bdc17fe185d87edfb2"> 32</a></span>&#160;<span class="keyword">const</span> uint8_t <a class="code" href="IRrecv_8h.html#acc85ad22929660bdc17fe185d87edfb2">kMarkState</a> = 3;</div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#acc0d1931164a8967c210eb03a2d03e2a"> 33</a></span>&#160;<span class="keyword">const</span> uint8_t <a class="code" href="IRrecv_8h.html#acc0d1931164a8967c210eb03a2d03e2a">kSpaceState</a> = 4;</div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#a0e87ae8496a061e394bc9f7f3415a9b3"> 34</a></span>&#160;<span class="keyword">const</span> uint8_t <a class="code" href="IRrecv_8h.html#a0e87ae8496a061e394bc9f7f3415a9b3">kStopState</a> = 5;</div>
<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#a7884008b3a738dfc7bd8658655e10272"> 35</a></span>&#160;<span class="keyword">const</span> uint8_t <a class="code" href="IRrecv_8h.html#a7884008b3a738dfc7bd8658655e10272">kTolerance</a> = 25; <span class="comment">// default percent tolerance in measurements.</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c"> 36</a></span>&#160;<span class="keyword">const</span> uint8_t <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a> = 255; <span class="comment">// Indicate to use the class default tolerance.</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#a373dde69c312b0122665e581eea1297b"> 37</a></span>&#160;<span class="keyword">const</span> uint16_t <a class="code" href="IRrecv_8h.html#a373dde69c312b0122665e581eea1297b">kRawTick</a> = 2; <span class="comment">// Capture tick to uSec factor.</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#define RAWTICK kRawTick // Deprecated. For legacy user code support only.</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">// How long (ms) before we give up wait for more data?</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">// Don&#39;t exceed kMaxTimeoutMs without a good reason.</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">// That is the capture buffers maximum value size. (UINT16_MAX / kRawTick)</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">// Typically messages/protocols tend to repeat around the 100ms timeframe,</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">// thus we should timeout before that to give us some time to try to decode</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">// before we need to start capturing a possible new message.</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">// Typically 15ms suits most applications. However, some protocols demand a</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">// higher value. e.g. 90ms for XMP-1 and some aircon units.</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#ad37e9659aaef29c541802d9759e0ab7b"> 47</a></span>&#160;<span class="keyword">const</span> uint8_t <a class="code" href="IRrecv_8h.html#ad37e9659aaef29c541802d9759e0ab7b">kTimeoutMs</a> = 15; <span class="comment">// In MilliSeconds.</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#define TIMEOUT_MS kTimeoutMs // For legacy documentation.</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#a73391726d7caccb9b498bba73a969784"> 49</a></span>&#160;<span class="keyword">const</span> uint16_t <a class="code" href="IRrecv_8h.html#a73391726d7caccb9b498bba73a969784">kMaxTimeoutMs</a> = <a class="code" href="IRrecv_8h.html#a373dde69c312b0122665e581eea1297b">kRawTick</a> * (UINT16_MAX / MS_TO_USEC(1));</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; </div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">// Use FNV hash algorithm: http://isthe.com/chongo/tech/comp/fnv/#FNV-param</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#abcfcce36d3e2faef742aa3529c22f23f"> 52</a></span>&#160;<span class="keyword">const</span> uint32_t <a class="code" href="IRrecv_8h.html#abcfcce36d3e2faef742aa3529c22f23f">kFnvPrime32</a> = 16777619UL;</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#a04d9b0c909b377b36af3ece668482ca3"> 53</a></span>&#160;<span class="keyword">const</span> uint32_t <a class="code" href="IRrecv_8h.html#a04d9b0c909b377b36af3ece668482ca3">kFnvBasis32</a> = 2166136261UL;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">// Which of the ESP32 timers to use by default. (0-3)</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#a80a2d3445a1752d18caf307d7677b709"> 56</a></span>&#160;<span class="keyword">const</span> uint8_t <a class="code" href="IRrecv_8h.html#a80a2d3445a1752d18caf307d7677b709">kDefaultESP32Timer</a> = 3;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; </div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#if DECODE_AC</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment">// Hitachi AC is the current largest state size.</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="IRrecv_8h.html#ab7d82cf4c0937c9b1d59d75f6f347ab2"> 60</a></span>&#160;<span class="keyword">const</span> uint16_t <a class="code" href="IRrecv_8h.html#ab7d82cf4c0937c9b1d59d75f6f347ab2">kStateSizeMax</a> = <a class="code" href="IRremoteESP8266_8h.html#a10377a40053a12e091dbff2869db0352">kHitachiAc2StateLength</a>;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment">// Just define something</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keyword">const</span> uint16_t <a class="code" href="IRrecv_8h.html#ab7d82cf4c0937c9b1d59d75f6f347ab2">kStateSizeMax</a> = 0;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; </div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">// Types</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="structirparams__t.html"> 69</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="structirparams__t.html#a50da5aa1c42a69b01d50ea688db67d14"> 70</a></span>&#160; uint8_t <a class="code" href="structirparams__t.html#a50da5aa1c42a69b01d50ea688db67d14">recvpin</a>; <span class="comment">// pin for IR data from detector</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="structirparams__t.html#a63354788dab4569f4092cd05e77f0260"> 71</a></span>&#160; uint8_t <a class="code" href="structirparams__t.html#a63354788dab4569f4092cd05e77f0260">rcvstate</a>; <span class="comment">// state machine</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="structirparams__t.html#a6d4594a4d6bf8a2587095be7adfc018d"> 72</a></span>&#160; uint16_t <a class="code" href="structirparams__t.html#a6d4594a4d6bf8a2587095be7adfc018d">timer</a>; <span class="comment">// state timer, counts 50uS ticks.</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="structirparams__t.html#a2b34d697b85ee6a0ce08344c941e50ec"> 73</a></span>&#160; uint16_t <a class="code" href="structirparams__t.html#a2b34d697b85ee6a0ce08344c941e50ec">bufsize</a>; <span class="comment">// max. nr. of entries in the capture buffer.</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="structirparams__t.html#a6f8a82b51fa206a8cb195e5838aa0cb3"> 74</a></span>&#160; uint16_t *<a class="code" href="structirparams__t.html#a6f8a82b51fa206a8cb195e5838aa0cb3">rawbuf</a>; <span class="comment">// raw data</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">// uint16_t is used for rawlen as it saves 3 bytes of iram in the interrupt</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">// handler. Don&#39;t ask why, I don&#39;t know. It just does.</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="structirparams__t.html#a08e83386c65a90038e0d4922f1f6aa84"> 77</a></span>&#160; uint16_t <a class="code" href="structirparams__t.html#a08e83386c65a90038e0d4922f1f6aa84">rawlen</a>; <span class="comment">// counter of entries in rawbuf.</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="structirparams__t.html#aa39b4f38e0ffcd470766373e03548e58"> 78</a></span>&#160; uint8_t <a class="code" href="structirparams__t.html#aa39b4f38e0ffcd470766373e03548e58">overflow</a>; <span class="comment">// Buffer overflow indicator.</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="structirparams__t.html#a132d6448ad59f03f6b35c4b04a6d1af4"> 79</a></span>&#160; uint8_t <a class="code" href="structirparams__t.html#a132d6448ad59f03f6b35c4b04a6d1af4">timeout</a>; <span class="comment">// Nr. of milliSeconds before we give up.</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;} <a class="code" href="structirparams__t.html">irparams_t</a>;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="structmatch__result__t.html"> 83</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="structmatch__result__t.html#a13fe18ae6cf89364df443a64295b2f90"> 84</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structmatch__result__t.html#a13fe18ae6cf89364df443a64295b2f90">success</a>; <span class="comment">// Was the match successful?</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="structmatch__result__t.html#ae88be61a6d1ffa7c3525aa958f4c0d25"> 85</a></span>&#160; uint64_t <a class="code" href="structmatch__result__t.html#ae88be61a6d1ffa7c3525aa958f4c0d25">data</a>; <span class="comment">// The data found.</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="structmatch__result__t.html#a26cea305aa83ed65b88ac0b6ed6de54a"> 86</a></span>&#160; uint16_t <a class="code" href="structmatch__result__t.html#a26cea305aa83ed65b88ac0b6ed6de54a">used</a>; <span class="comment">// How many buffer positions were used.</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;} <a class="code" href="structmatch__result__t.html">match_result_t</a>;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">// Classes</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classdecode__results.html"> 92</a></span>&#160;<span class="keyword">class </span><a class="code" href="classdecode__results.html">decode_results</a> {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classdecode__results.html#a9c0e9f161b9c90dc10b7561d4c0b50fa"> 94</a></span>&#160; <a class="code" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> <a class="code" href="classdecode__results.html#a9c0e9f161b9c90dc10b7561d4c0b50fa">decode_type</a>; <span class="comment">// NEC, SONY, RC5, UNKNOWN</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// value, address, &amp; command are all mutually exclusive with state.</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// i.e. They MUST NOT be used at the same time as state, so we can use a union</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">// structure to save us a handful of valuable bytes of memory.</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">union </span>{</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classdecode__results.html#a033502b7a6b4b0412e5a2062e33c5f47"> 100</a></span>&#160; uint64_t <a class="code" href="classdecode__results.html#a033502b7a6b4b0412e5a2062e33c5f47">value</a>; <span class="comment">// Decoded value</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classdecode__results.html#a2858c3a5e28eccca95d44aaa87b70e9e"> 101</a></span>&#160; uint32_t <a class="code" href="classdecode__results.html#a2858c3a5e28eccca95d44aaa87b70e9e">address</a>; <span class="comment">// Decoded device address.</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classdecode__results.html#a9b750d09f713b0693472f815fd0fd402"> 102</a></span>&#160; uint32_t <a class="code" href="classdecode__results.html#a9b750d09f713b0693472f815fd0fd402">command</a>; <span class="comment">// Decoded command.</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; };</div>
<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classdecode__results.html#aaeb4b1b2e950bdd181582c385b2f4305"> 104</a></span>&#160; uint8_t <a class="code" href="classdecode__results.html#aaeb4b1b2e950bdd181582c385b2f4305">state</a>[<a class="code" href="IRrecv_8h.html#ab7d82cf4c0937c9b1d59d75f6f347ab2">kStateSizeMax</a>]; <span class="comment">// Multi-byte results.</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; };</div>
<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classdecode__results.html#aa5ba2fd53bdb36bdc120d8eabd9f36d7"> 106</a></span>&#160; uint16_t <a class="code" href="classdecode__results.html#aa5ba2fd53bdb36bdc120d8eabd9f36d7">bits</a>; <span class="comment">// Number of bits in decoded value</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classdecode__results.html#a19043dc161cd5e0d3dcc82b5a7470e49"> 107</a></span>&#160; <span class="keyword">volatile</span> uint16_t *<a class="code" href="classdecode__results.html#a19043dc161cd5e0d3dcc82b5a7470e49">rawbuf</a>; <span class="comment">// Raw intervals in .5 us ticks</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classdecode__results.html#a913e19fc5032fa1f97cf8afe0fa450ec"> 108</a></span>&#160; uint16_t <a class="code" href="classdecode__results.html#a913e19fc5032fa1f97cf8afe0fa450ec">rawlen</a>; <span class="comment">// Number of records in rawbuf.</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classdecode__results.html#a821bc53c006bab3283c6b8592f0c43d3"> 109</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classdecode__results.html#a821bc53c006bab3283c6b8592f0c43d3">overflow</a>;</div>
<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classdecode__results.html#a09da48786fe3966cd5621840fd771bfa"> 110</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classdecode__results.html#a09da48786fe3966cd5621840fd771bfa">repeat</a>; <span class="comment">// Is the result a repeat code?</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;};</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; </div>
<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classIRrecv.html"> 114</a></span>&#160;<span class="keyword">class </span><a class="code" href="classIRrecv.html">IRrecv</a> {</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="preprocessor">#if defined(ESP32)</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classIRrecv.html#a8fe4d26ef1f863db1db9994fed5fc209">IRrecv</a>(<span class="keyword">const</span> uint16_t recvpin, <span class="keyword">const</span> uint16_t bufsize = <a class="code" href="IRrecv_8h.html#aadfa37def10a1adeaf2cf4c09d7504e3">kRawBuf</a>,</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> uint8_t timeout = <a class="code" href="IRrecv_8h.html#ad37e9659aaef29c541802d9759e0ab7b">kTimeoutMs</a>,</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> save_buffer = <span class="keyword">false</span>,</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">const</span> uint8_t timer_num = <a class="code" href="IRrecv_8h.html#a80a2d3445a1752d18caf307d7677b709">kDefaultESP32Timer</a>); <span class="comment">// Constructor</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor">#else // ESP32</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classIRrecv.html#a8fe4d26ef1f863db1db9994fed5fc209">IRrecv</a>(<span class="keyword">const</span> uint16_t recvpin, <span class="keyword">const</span> uint16_t bufsize = <a class="code" href="IRrecv_8h.html#aadfa37def10a1adeaf2cf4c09d7504e3">kRawBuf</a>,</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">const</span> uint8_t timeout = <a class="code" href="IRrecv_8h.html#ad37e9659aaef29c541802d9759e0ab7b">kTimeoutMs</a>,</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> save_buffer = <span class="keyword">false</span>); <span class="comment">// Constructor</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="preprocessor">#endif // ESP32</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="classIRrecv.html#a87d4cca5e350177cb0922842dda1eb5b">~IRrecv</a>(<span class="keywordtype">void</span>); <span class="comment">// Destructor</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRrecv.html#aa091c449db70c65fd0221669df7438ea">setTolerance</a>(<span class="keyword">const</span> uint8_t percent = <a class="code" href="IRrecv_8h.html#a7884008b3a738dfc7bd8658655e10272">kTolerance</a>);</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; uint8_t <a class="code" href="classIRrecv.html#a144f64da3b44708394c06b0fbefb6347">getTolerance</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#aeaa5c07a8b46f8fbb982f996cc1f9f4b">decode</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, <a class="code" href="structirparams__t.html">irparams_t</a> *save = NULL,</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; uint8_t max_skip = 0, uint16_t noise_floor = 0);</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRrecv.html#a52c05ec6d8f3dbfb75f21f3b4fe7be3d">enableIRIn</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> pullup = <span class="keyword">false</span>);</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRrecv.html#a9f4a719e756ad78c7dd47186f8bef087">disableIRIn</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRrecv.html#a6b5beb7348d807d8d98ae929d005510e">resume</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; uint16_t <a class="code" href="classIRrecv.html#a69ab02ea6823ccf18d1f6be87ca1b92e">getBufSize</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="preprocessor">#if DECODE_HASH</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRrecv.html#a02693553aad1decd67bdae60402e48bf">setUnknownThreshold</a>(<span class="keyword">const</span> uint16_t length);</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a8bc218dae714ab189a3da4fff269cdaa">match</a>(<span class="keyword">const</span> uint32_t measured, <span class="keyword">const</span> uint32_t desired,</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">const</span> uint8_t tolerance = <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a>,</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">const</span> uint16_t delta = 0);</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#ae78ef12b8194db5d3cb5a2605d29830d">matchMark</a>(<span class="keyword">const</span> uint32_t measured, <span class="keyword">const</span> uint32_t desired,</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">const</span> uint8_t tolerance = <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a>,</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> int16_t excess = <a class="code" href="IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e">kMarkExcess</a>);</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a9fd363e8b2edee2ed3c473349ecc58fc">matchSpace</a>(<span class="keyword">const</span> uint32_t measured, <span class="keyword">const</span> uint32_t desired,</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">const</span> uint8_t tolerance = <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a>,</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">const</span> int16_t excess = <a class="code" href="IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e">kMarkExcess</a>);</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="preprocessor">#ifndef UNIT_TEST</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; </div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classIRrecv.html#a6fdac84ce51ce119972bf121ccc95aab"> 151</a></span>&#160; <a class="code" href="structirparams__t.html">irparams_t</a> *<a class="code" href="classIRrecv.html#a6fdac84ce51ce119972bf121ccc95aab">irparams_save</a>;</div>
<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classIRrecv.html#a0459a65dd31b215713ad66a1e4f3540e"> 152</a></span>&#160; uint8_t <a class="code" href="classIRrecv.html#a0459a65dd31b215713ad66a1e4f3540e">_tolerance</a>;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="preprocessor">#if defined(ESP32)</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classIRrecv.html#aff11c0c20735b16ce411088003607911"> 154</a></span>&#160; uint8_t <a class="code" href="classIRrecv.html#aff11c0c20735b16ce411088003607911">_timer_num</a>;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="preprocessor">#endif // defined(ESP32)</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="preprocessor">#if DECODE_HASH</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classIRrecv.html#adb8cbc5c1cb739f33f5be25b3a6c79bd"> 157</a></span>&#160; uint16_t <a class="code" href="classIRrecv.html#adb8cbc5c1cb739f33f5be25b3a6c79bd">_unknown_threshold</a>;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// These are called by decode</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; uint8_t <a class="code" href="classIRrecv.html#a0b4221970de0d027b5ae99648fa1c003">_validTolerance</a>(<span class="keyword">const</span> uint8_t percentage);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRrecv.html#ab017a0f9256954bb7d943e3c6b7e31bf">copyIrParams</a>(<span class="keyword">volatile</span> <a class="code" href="structirparams__t.html">irparams_t</a> *src, <a class="code" href="structirparams__t.html">irparams_t</a> *dst);</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; uint16_t <a class="code" href="classIRrecv.html#ad7347c72b14d9f2f20f65bcf235ab3dc">compare</a>(<span class="keyword">const</span> uint16_t oldval, <span class="keyword">const</span> uint16_t newval);</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; uint32_t <a class="code" href="classIRrecv.html#ac08e50c5eec10c0095157f4bdd4051c8">ticksLow</a>(<span class="keyword">const</span> uint32_t usecs,</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">const</span> uint8_t tolerance = <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a>,</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> uint16_t delta = 0);</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; uint32_t <a class="code" href="classIRrecv.html#a573dbb20695f2ffc808623df8c36280c">ticksHigh</a>(<span class="keyword">const</span> uint32_t usecs,</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">const</span> uint8_t tolerance = <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a>,</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keyword">const</span> uint16_t delta = 0);</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#ae7bfd4ff689c7563c65c4e6e8c58187a">matchAtLeast</a>(<span class="keyword">const</span> uint32_t measured, <span class="keyword">const</span> uint32_t desired,</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">const</span> uint8_t tolerance = <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a>,</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">const</span> uint16_t delta = 0);</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; uint16_t <a class="code" href="classIRrecv.html#af0b300fe6fdff58324525e8208be3024">_matchGeneric</a>(<span class="keyword">volatile</span> uint16_t *data_ptr,</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; uint64_t *result_bits_ptr,</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; uint8_t *result_ptr,</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> use_bits,</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keyword">const</span> uint16_t remaining,</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">const</span> uint16_t required,</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> uint16_t hdrmark,</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">const</span> uint32_t hdrspace,</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">const</span> uint16_t onemark,</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">const</span> uint32_t onespace,</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">const</span> uint16_t zeromark,</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">const</span> uint32_t zerospace,</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">const</span> uint16_t footermark,</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">const</span> uint32_t footerspace,</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> atleast = <span class="keyword">false</span>,</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keyword">const</span> uint8_t tolerance = <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a>,</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keyword">const</span> int16_t excess = <a class="code" href="IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e">kMarkExcess</a>,</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> MSBfirst = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="structmatch__result__t.html">match_result_t</a> <a class="code" href="classIRrecv.html#a5361439cb69b1069553544e486502d2e">matchData</a>(<span class="keyword">volatile</span> uint16_t *data_ptr, <span class="keyword">const</span> uint16_t nbits,</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">const</span> uint16_t onemark, <span class="keyword">const</span> uint32_t onespace,</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keyword">const</span> uint16_t zeromark, <span class="keyword">const</span> uint32_t zerospace,</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">const</span> uint8_t tolerance = <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a>,</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">const</span> int16_t excess = <a class="code" href="IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e">kMarkExcess</a>,</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> MSBfirst = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; uint16_t <a class="code" href="classIRrecv.html#adc2c9bc4c4e5741cfac7468126bf8ca6">matchBytes</a>(<span class="keyword">volatile</span> uint16_t *data_ptr, uint8_t *result_ptr,</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keyword">const</span> uint16_t remaining, <span class="keyword">const</span> uint16_t nbytes,</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keyword">const</span> uint16_t onemark, <span class="keyword">const</span> uint32_t onespace,</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keyword">const</span> uint16_t zeromark, <span class="keyword">const</span> uint32_t zerospace,</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keyword">const</span> uint8_t tolerance = <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a>,</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keyword">const</span> int16_t excess = <a class="code" href="IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e">kMarkExcess</a>,</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> MSBfirst = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; uint16_t <a class="code" href="classIRrecv.html#ab783f52acc2ff4052313d6947563e4fd">matchGeneric</a>(<span class="keyword">volatile</span> uint16_t *data_ptr,</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; uint64_t *result_ptr,</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keyword">const</span> uint16_t remaining, <span class="keyword">const</span> uint16_t nbits,</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keyword">const</span> uint16_t hdrmark, <span class="keyword">const</span> uint32_t hdrspace,</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keyword">const</span> uint16_t onemark, <span class="keyword">const</span> uint32_t onespace,</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keyword">const</span> uint16_t zeromark, <span class="keyword">const</span> uint32_t zerospace,</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keyword">const</span> uint16_t footermark, <span class="keyword">const</span> uint32_t footerspace,</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> atleast = <span class="keyword">false</span>,</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">const</span> uint8_t tolerance = <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a>,</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keyword">const</span> int16_t excess = <a class="code" href="IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e">kMarkExcess</a>,</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> MSBfirst = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; uint16_t <a class="code" href="classIRrecv.html#ab783f52acc2ff4052313d6947563e4fd">matchGeneric</a>(<span class="keyword">volatile</span> uint16_t *data_ptr, uint8_t *result_ptr,</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keyword">const</span> uint16_t remaining, <span class="keyword">const</span> uint16_t nbits,</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keyword">const</span> uint16_t hdrmark, <span class="keyword">const</span> uint32_t hdrspace,</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keyword">const</span> uint16_t onemark, <span class="keyword">const</span> uint32_t onespace,</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keyword">const</span> uint16_t zeromark, <span class="keyword">const</span> uint32_t zerospace,</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keyword">const</span> uint16_t footermark,</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keyword">const</span> uint32_t footerspace,</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> atleast = <span class="keyword">false</span>,</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keyword">const</span> uint8_t tolerance = <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a>,</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keyword">const</span> int16_t excess = <a class="code" href="IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e">kMarkExcess</a>,</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> MSBfirst = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; uint16_t <a class="code" href="classIRrecv.html#a4582d75ef1d11aee35fce86c38dcccf0">matchGenericConstBitTime</a>(<span class="keyword">volatile</span> uint16_t *data_ptr,</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; uint64_t *result_ptr,</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keyword">const</span> uint16_t remaining,</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keyword">const</span> uint16_t nbits,</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keyword">const</span> uint16_t hdrmark,</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keyword">const</span> uint32_t hdrspace,</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keyword">const</span> uint16_t one,</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keyword">const</span> uint32_t zero,</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keyword">const</span> uint16_t footermark,</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keyword">const</span> uint32_t footerspace,</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> atleast = <span class="keyword">false</span>,</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keyword">const</span> uint8_t tolerance = <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a>,</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keyword">const</span> int16_t excess = <a class="code" href="IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e">kMarkExcess</a>,</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> MSBfirst = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; uint16_t <a class="code" href="classIRrecv.html#ab44403411a217eb8ea75271575f8ab83">matchManchesterData</a>(<span class="keyword">volatile</span> <span class="keyword">const</span> uint16_t *data_ptr,</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; uint64_t *result_ptr,</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keyword">const</span> uint16_t remaining,</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keyword">const</span> uint16_t nbits,</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keyword">const</span> uint16_t half_period,</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keyword">const</span> uint16_t starting_balance = 0,</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">const</span> uint8_t tolerance = <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a>,</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keyword">const</span> int16_t excess = <a class="code" href="IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e">kMarkExcess</a>,</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> MSBfirst = <span class="keyword">true</span>,</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> GEThomas = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; uint16_t <a class="code" href="classIRrecv.html#ade70777ad0e047e11b99b03d8f5e3728">matchManchester</a>(<span class="keyword">volatile</span> <span class="keyword">const</span> uint16_t *data_ptr,</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; uint64_t *result_ptr,</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">const</span> uint16_t remaining,</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">const</span> uint16_t nbits,</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">const</span> uint16_t hdrmark,</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keyword">const</span> uint32_t hdrspace,</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">const</span> uint16_t clock_period,</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">const</span> uint16_t footermark,</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keyword">const</span> uint32_t footerspace,</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> atleast = <span class="keyword">false</span>,</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keyword">const</span> uint8_t tolerance = <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a>,</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keyword">const</span> int16_t excess = <a class="code" href="IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e">kMarkExcess</a>,</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> MSBfirst = <span class="keyword">true</span>,</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> GEThomas = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRrecv.html#ae833bdb8fccc676043fc4ccae432fab1">crudeNoiseFilter</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, <span class="keyword">const</span> uint16_t floor = 0);</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a7c15fbfa7936ca474712a1953911fd06">decodeHash</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results);</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="preprocessor">#if (DECODE_NEC || DECODE_SHERWOOD || DECODE_AIWA_RC_T501 || DECODE_SANYO)</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a52b844f80df7f64edf9ce9cc189ac5b9">decodeNEC</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a65e03baf646815b4b02f943bdd74a097">kNECBits</a>, <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="preprocessor">#if DECODE_ARGO</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a94f12dc000a6e7b75ea8680fd48fc487">decodeArgo</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a351efcd1805c87bd338de81dab3f8fb2">kArgoBits</a>, <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="preprocessor">#endif // DECODE_ARGO</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="preprocessor">#if DECODE_SONY</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#ab03227955cf7d1d00c1620c55d7f9f18">decodeSony</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a6f0794107a7643e0bec8de6de9e7621b">kSonyMinBits</a>,</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">false</span>);</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="preprocessor">#if DECODE_SANYO</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="comment">// DISABLED due to poor quality.</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="comment">// bool decodeSanyo(decode_results *results, uint16_t offset = kStartOffset,</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="comment">// uint16_t nbits = kSanyoSA8650BBits,</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="comment">// bool strict = false);</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a201a5a78f43c2ac216fae4a2ba4d14ec">decodeSanyoLC7461</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results,</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#ad067db05b273337e0df38d529094c9e8">kSanyoLC7461Bits</a>,</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="preprocessor">#if DECODE_MITSUBISHI</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a6efe3be80f0ebef3ff94ed0e56c5c52a">decodeMitsubishi</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#abd2187340d0b94996136081413e2ad22">kMitsubishiBits</a>,</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="preprocessor">#if DECODE_MITSUBISHI2</span></div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a9514197850491a5b8c30ae9ffc89d895">decodeMitsubishi2</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results,</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#abd2187340d0b94996136081413e2ad22">kMitsubishiBits</a>,</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="preprocessor">#if DECODE_MITSUBISHI_AC</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a942c5f41df5cbff32a8b7703673cb621">decodeMitsubishiAC</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results,</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a911a47148656b26da2e094a7ced1fc8b">kMitsubishiACBits</a>,</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">false</span>);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="preprocessor">#if DECODE_MITSUBISHI136</span></div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a87b3ee57dbdf762a0e305ddd43eec629">decodeMitsubishi136</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results,</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#aa19f0122b2f906e5473a6ea232c38974">kMitsubishi136Bits</a>,</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="preprocessor">#if DECODE_MITSUBISHI112</span></div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#ae0690ff3cb5a5cdcdb6a514bb7bf0cdd">decodeMitsubishi112</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results,</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#ae8349abe183be965e3d051cb736773a8">kMitsubishi112Bits</a>,</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="preprocessor">#if DECODE_MITSUBISHIHEAVY</span></div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#aef9cedf79793806df4cc5376710781bc">decodeMitsubishiHeavy</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results,</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#ab973b35583dabc7e04b12018fac04cc9">kMitsubishiHeavy152Bits</a>,</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="preprocessor">#if (DECODE_RC5 || DECODE_R6 || DECODE_LASERTAG || DECODE_MWM)</span></div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; int16_t <a class="code" href="classIRrecv.html#a8e32daaa903a8e42dad7faaf405b33dc">getRClevel</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t *offset, uint16_t *used,</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; uint16_t bitTime, <span class="keyword">const</span> uint8_t tolerance = <a class="code" href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a>,</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keyword">const</span> int16_t excess = <a class="code" href="IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e">kMarkExcess</a>,</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keyword">const</span> uint16_t delta = 0, <span class="keyword">const</span> uint8_t maxwidth = 3);</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="preprocessor">#if DECODE_RC5</span></div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#adab9dffbeceee514520fababd0e721bd">decodeRC5</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#abec3ebb217126560e824fa8b66d495bc">kRC5XBits</a>,</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="preprocessor">#if DECODE_RC6</span></div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a67316499ef37db82e3b3ecaac25c5980">decodeRC6</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a84a6d3e15e98f7a4917d252d5665534a">kRC6Mode0Bits</a>,</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">false</span>);</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="preprocessor">#if DECODE_RCMM</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a0e7bf769cb5bebf174e852e4b0b08cf3">decodeRCMM</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a2bfaf393c2d77a594f2a0a5a763e84f5">kRCMMBits</a>,</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">false</span>);</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="preprocessor">#if (DECODE_PANASONIC || DECODE_DENON)</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#aa8dd5f24d28576c6db03cc463bd0a865">decodePanasonic</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#aa148f54492be1cf8a8b285a96861a0b7">kPanasonicBits</a>,</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">false</span>,</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keyword">const</span> uint32_t manufacturer = <a class="code" href="IRremoteESP8266_8h.html#a1dd1a9799e5d20d39e82ff678bf07b47">kPanasonicManufacturer</a>);</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="preprocessor">#if DECODE_LG</span></div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#afe70015c36b1477a5de0c193163e13a7">decodeLG</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a256bd6093034b3e4c33324680f3a7102">kLgBits</a>,</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">false</span>);</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="preprocessor">#if DECODE_INAX</span></div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a94545c6a8da027b9cb0e23ecba4c29d8">decodeInax</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#af8441f25b32d113096adeaff331c126a">kInaxBits</a>,</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="preprocessor">#endif // DECODE_INAX</span></div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="preprocessor">#if DECODE_JVC</span></div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a25ab71efc223a418e9630d8421f44bc9">decodeJVC</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a7c28467832e7480864a6be0ce87c608f">kJvcBits</a>,</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="preprocessor">#if DECODE_SAMSUNG</span></div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a18b6cf177364faf11b9a076dd2025eec">decodeSAMSUNG</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a7c1c015cce09284799cbf5a2f21ee170">kSamsungBits</a>,</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="preprocessor">#if DECODE_SAMSUNG</span></div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a290a9e6a0b12ef1fe02a92a456c8ad57">decodeSamsung36</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a5e1e6f30a41f0d94652429a9e1034179">kSamsung36Bits</a>,</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="preprocessor">#if DECODE_SAMSUNG_AC</span></div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#ae779c76ebd0f3cd1fc13abaa55f80d67">decodeSamsungAC</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#adebe85ab48eb876ec15daacca246797c">kSamsungAcBits</a>,</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="preprocessor">#if DECODE_WHYNTER</span></div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a66289f6a462557ad26e6c0a64f36cf02">decodeWhynter</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a4553f6670e241a67104d45216a4ebd98">kWhynterBits</a>,</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="preprocessor">#if DECODE_COOLIX</span></div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a964af7e72e2133688f0596c718cb98ca">decodeCOOLIX</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#aed48c68a637e4b45b80bbf4964ea79f9">kCoolixBits</a>,</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="preprocessor">#if DECODE_DENON</span></div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a0b1bd1c817cb43bc3755126191b7f4a2">decodeDenon</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a29160117e25f3dfc1cb899a4a53bc238">kDenonBits</a>,</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="preprocessor">#if DECODE_DISH</span></div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a851776d9178aeb706d9a1abd3f254e31">decodeDISH</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#aea0cc15e1c7a6edcd6b60d9ac62d4831">kDishBits</a>,</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="preprocessor">#if (DECODE_SHARP || DECODE_DENON)</span></div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a3390d63ba21a835d7c74c261532a22a7">decodeSharp</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a8a74f9d7cec751cc0945fd89fa6237ae">kSharpBits</a>,</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>, <span class="keyword">const</span> <span class="keywordtype">bool</span> expansion = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="preprocessor">#if DECODE_SHARP_AC</span></div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a8a9b920079f783e236f8a938e20b9743">decodeSharpAc</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a6c106a982acced5d8aeef98644002ca2">kSharpAcBits</a>,</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="preprocessor">#if DECODE_AIWA_RC_T501</span></div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#aa4d678376a4c0f8ea953474a6f5ef9d2">decodeAiwaRCT501</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a9078adf040d21c9c3eb10ed69f9dced6">kAiwaRcT501Bits</a>,</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="preprocessor">#if DECODE_NIKAI</span></div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#abbcbf5fc07d7e37d7724acc37bb5f592">decodeNikai</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a9fce002592f9e2488b1b717d0b1a6a40">kNikaiBits</a>,</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="preprocessor">#if DECODE_MAGIQUEST</span></div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a6f3bfcc6767484151dee758bcf94fb0b">decodeMagiQuest</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#ad756bfec6eabbe2ac10b7847f87fb751">kMagiquestBits</a>,</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="preprocessor">#if DECODE_KELVINATOR</span></div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a0ac82f20b48b2d71ee07eb392578b226">decodeKelvinator</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#acfa71cb3caf4964829bb1f557dee5b86">kKelvinatorBits</a>,</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="preprocessor">#if DECODE_DAIKIN</span></div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a141f0de9f4cae8daeb025aff3904ecaa">decodeDaikin</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a657f8e60bc1f896d4a46ec101c289485">kDaikinBits</a>,</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;<span class="preprocessor">#if DECODE_DAIKIN64</span></div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a030701f081a9c6eab0c07b75433b524c">decodeDaikin64</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a89266e9211a81eda22475fb5a258484f">kDaikin64Bits</a>,</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;<span class="preprocessor">#endif // DECODE_DAIKIN64</span></div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;<span class="preprocessor">#if DECODE_DAIKIN128</span></div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#ac7188577c874d9f8f19304a3ec775415">decodeDaikin128</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a5bb2e6f8acbc0123de5ac0fd76e1646a">kDaikin128Bits</a>,</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;<span class="preprocessor">#endif // DECODE_DAIKIN128</span></div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="preprocessor">#if DECODE_DAIKIN152</span></div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#ab20a6586b4e56cc428012ec96f5ccc2c">decodeDaikin152</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#af056e1ac2d00c6d6440c3dd2ae283f09">kDaikin152Bits</a>,</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;<span class="preprocessor">#endif // DECODE_DAIKIN152</span></div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;<span class="preprocessor">#if DECODE_DAIKIN160</span></div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#af0b9822defe6b29099079d664d9dc413">decodeDaikin160</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#aa6f1d6dded2ae3500cd52aa0c482a1b6">kDaikin160Bits</a>,</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="preprocessor">#endif // DECODE_DAIKIN160</span></div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="preprocessor">#if DECODE_DAIKIN176</span></div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#aa142d1340201b6fdc5b462f46fe21ee0">decodeDaikin176</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a78baf9c97c548618428d2fcfd7cc91d7">kDaikin176Bits</a>,</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="preprocessor">#endif // DECODE_DAIKIN176</span></div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="preprocessor">#if DECODE_DAIKIN2</span></div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a4c4799a0d45ea5562159c46939617d80">decodeDaikin2</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#affd9b805fff390d05a83ff4eaa1c98de">kDaikin2Bits</a>,</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="preprocessor">#if DECODE_DAIKIN216</span></div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a7f860686a5c58aa8f4d1842cfb15b2f9">decodeDaikin216</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a317bf475ee4c6ddd802995dc535377d9">kDaikin216Bits</a>,</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="preprocessor">#if DECODE_TOSHIBA_AC</span></div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a01228e51ede905beac689967bb14b538">decodeToshibaAC</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keyword">const</span> uint16_t nbytes = <a class="code" href="IRremoteESP8266_8h.html#a172dde7867fa9a68902c3ad7ea9629b0">kToshibaACBits</a>,</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="preprocessor">#if DECODE_TROTEC</span></div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#ae2920c488173f3fa37f5325438157ced">decodeTrotec</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#ab819cb0a34937714dcb10059799c26e2">kTrotecBits</a>,</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="preprocessor">#endif // DECODE_TROTEC</span></div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="preprocessor">#if DECODE_MIDEA</span></div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a255b15601f7439a09ab5e77ad78816fb">decodeMidea</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#afc98096b1e2945e2eaeb07d70d511239">kMideaBits</a>,</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="preprocessor">#endif // DECODE_MIDEA</span></div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="preprocessor">#if DECODE_MIDEA24</span></div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a62a04019308b29ae2aea4b3a83ba9155">decodeMidea24</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#aff132faa67b1d07890378df5c9b52a14">kMidea24Bits</a>,</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;<span class="preprocessor">#endif // DECODE_MIDEA24</span></div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="preprocessor">#if DECODE_FUJITSU_AC</span></div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#aa3778bdf994bf9c99ac48ef95434a826">decodeFujitsuAC</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#aecd63891cac014d1b7e344638086ad47">kFujitsuAcBits</a>,</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">false</span>);</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="preprocessor">#if DECODE_LASERTAG</span></div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#ae4af614a45ea65cb3304ef5bd7965122">decodeLasertag</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a3ea0e89a8b6a3ffa4a2d346abeed851e">kLasertagBits</a>,</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="preprocessor">#if DECODE_CARRIER_AC</span></div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#acf3d1c37038120a5c0996d92577ce74a">decodeCarrierAC</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a668d9ac84f7dae61c35534b842d4956b">kCarrierAcBits</a>,</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="preprocessor">#endif // DECODE_CARRIER_AC</span></div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;<span class="preprocessor">#if DECODE_CARRIER_AC40</span></div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a4bdb35ec34f49401a6b9becd15b8a3b5">decodeCarrierAC40</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results,</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a56d1176a7b3fe59aeb3f4f39926c617d">kCarrierAc40Bits</a>,</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="preprocessor">#endif // DECODE_CARRIER_AC40</span></div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="preprocessor">#if DECODE_CARRIER_AC64</span></div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a79d03c31da48a385ab47cc8f342ef9b3">decodeCarrierAC64</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results,</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a41bc7ab7289e499ad33901da3eab661a">kCarrierAc64Bits</a>,</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="preprocessor">#endif // DECODE_CARRIER_AC64</span></div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="preprocessor">#if DECODE_GOODWEATHER</span></div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a64650ce7dbaf5fc860a6a253d906e9de">decodeGoodweather</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results,</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#afa2675ce42d00175ec95caa6cd87a425">kGoodweatherBits</a>,</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="preprocessor">#endif // DECODE_GOODWEATHER</span></div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;<span class="preprocessor">#if DECODE_GREE</span></div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a2e756342d7524a13d53d6c656700638c">decodeGree</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#acadcc5d03e09784642f008d4d2913c7d">kGreeBits</a>,</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="preprocessor">#if (DECODE_HAIER_AC | DECODE_HAIER_AC_YRW02)</span></div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#ad97403174f05197a7fa9a4a0107e3111">decodeHaierAC</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#ad44cfa0951c24d1f0c67b2fba997f720">kHaierACBits</a>,</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="preprocessor">#if DECODE_HAIER_AC_YRW02</span></div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a281fb9d972fee75db49209c42f649822">decodeHaierACYRW02</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results,</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#aab346c5ad482113978e5a2cbb7a06f27">kHaierACYRW02Bits</a>,</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="preprocessor">#if (DECODE_HITACHI_AC || DECODE_HITACHI_AC2 || DECODE_HITACHI_AC344)</span></div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#aa42facfffc0e304005272b6ddd4583c8">decodeHitachiAC</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#aec91e459b1e52765c700f8f7a4723f3b">kHitachiAcBits</a>,</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>, <span class="keyword">const</span> <span class="keywordtype">bool</span> MSBfirst = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="preprocessor">#if DECODE_HITACHI_AC1</span></div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a122e0dcbf14c90ec2d77399acce21459">decodeHitachiAC1</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#aae6947c431d2c9da4fe2fdd9428012c1">kHitachiAc1Bits</a>,</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="preprocessor">#if DECODE_HITACHI_AC3</span></div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a113bc834eff00f55d5545ce3fa1ab203">decodeHitachiAc3</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results,</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#ac26b896cdc17018269fa881e10e3aabb">kHitachiAc3Bits</a>,</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;<span class="preprocessor">#endif // DECODE_HITACHI_AC3</span></div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;<span class="preprocessor">#if DECODE_HITACHI_AC424</span></div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a01c3dda56d6d916076fa1affa2213129">decodeHitachiAc424</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results,</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#ab466e28528a0d688a1b91e8af69025cb">kHitachiAc424Bits</a>,</div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;<span class="preprocessor">#endif // DECODE_HITACHI_AC424</span></div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;<span class="preprocessor">#if DECODE_GICABLE</span></div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#afade8dac9b1d023e5e0946e6b2c08aea">decodeGICable</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#aceb5cbd7ba5d8bc11560ba29137b10fa">kGicableBits</a>,</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="preprocessor">#if DECODE_WHIRLPOOL_AC</span></div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a0d1eec83cf092f5621cb34b3e94777c4">decodeWhirlpoolAC</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results,</div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a149bd4f3fb9c83e683095d393209ede3">kWhirlpoolAcBits</a>,</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="preprocessor">#if DECODE_LUTRON</span></div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a6093c4404a9a9d415c5bfeab5ec53be5">decodeLutron</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a814dfab515b91887c494237b1f6ebd99">kLutronBits</a>,</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;<span class="preprocessor">#if DECODE_ELECTRA_AC</span></div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#ad3a7be8afc36451c8e28e27f3c3e9aaa">decodeElectraAC</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#aa46876681f26ccf39c6d341fef041a16">kElectraAcBits</a>,</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;<span class="preprocessor">#if DECODE_PANASONIC_AC</span></div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a0f78e180ed731e8fb16d1c85aa721c95">decodePanasonicAC</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results,</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a210f5c78b0f90b64dd5037698141433a">kPanasonicAcBits</a>,</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;<span class="preprocessor">#if DECODE_PIONEER</span></div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a78a9487cbe8a562392a07a4090b3091e">decodePioneer</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a6a7ccd31e0a6f967a219b1a53b89653b">kPioneerBits</a>,</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="preprocessor">#if DECODE_MWM</span></div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a27518b5d792cdf3ab333b324f409f328">decodeMWM</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keyword">const</span> uint16_t nbits = 24,</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;<span class="preprocessor">#if DECODE_VESTEL_AC</span></div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a5d48b3c91434c18c7726cca504d75b73">decodeVestelAc</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#ae31945a1ce90b2d4c33b5c91d980d3a7">kVestelAcBits</a>,</div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="preprocessor">#if DECODE_TECO</span></div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a950711d7df8dfe4cda86f53650cd9f56">decodeTeco</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#aee01958e9d97a70a6881cf560ca0ca9d">kTecoBits</a>,</div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">false</span>);</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;<span class="preprocessor">#if DECODE_LEGOPF</span></div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#aea75ad0ba1d8fec33de16501940f2553">decodeLegoPf</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a8a7c7659250a81c7c84fc739eafed13e">kLegoPfBits</a>,</div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="preprocessor">#if DECODE_NEOCLIMA</span></div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a4729ee949e533448b481ae33bbbf1adf">decodeNeoclima</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#afff9132e57296b4d7e04ec9e1e5ab04f">kNeoclimaBits</a>,</div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;<span class="preprocessor">#endif // DECODE_NEOCLIMA</span></div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;<span class="preprocessor">#if DECODE_AMCOR</span></div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a8d81fcfb47e36925975d313027689a44">decodeAmcor</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a34bcab75a8ab94adfd46a245dd0748db">kAmcorBits</a>,</div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;<span class="preprocessor">#endif // DECODE_AMCOR</span></div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;<span class="preprocessor">#if DECODE_EPSON</span></div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#aaadef8415f273ba25f4086fecd681d2e">decodeEpson</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a77a0ed1143f5bfec87e0c9fde5c2c425">kEpsonBits</a>,</div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;<span class="preprocessor">#endif // DECODE_EPSON</span></div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;<span class="preprocessor">#if DECODE_SYMPHONY</span></div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a61cdf4d891654521afbc6ca9fb415745">decodeSymphony</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#abb5b89578ab0757999530c0383f38533">kSymphonyBits</a>,</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;<span class="preprocessor">#endif // DECODE_SYMPHONY</span></div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;<span class="preprocessor">#if DECODE_AIRWELL</span></div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#acf4635d5ee146a82498cb0c269b6af41">decodeAirwell</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a570219a14f2d19c7a6ce0aecd37a3b1f">kAirwellBits</a>,</div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;<span class="preprocessor">#endif // DECODE_AIRWELL</span></div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;<span class="preprocessor">#if DECODE_DELONGHI_AC</span></div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a8c91cc83770d243e942387cc16e9ca6f">decodeDelonghiAc</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a7b9fba82b602cf38147f0586e037f909">kDelonghiAcBits</a>,</div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;<span class="preprocessor">#endif // DECODE_DELONGHI_AC</span></div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;<span class="preprocessor">#if DECODE_DOSHISHA</span></div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a675c45e6b32aaeca3de734ccf2f0c819">decodeDoshisha</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#aedc53534cf6a40144be80abeee498362">kDoshishaBits</a>,</div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;<span class="preprocessor">#endif // DECODE_DOSHISHA</span></div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;<span class="preprocessor">#if DECODE_MULTIBRACKETS</span></div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#af61afacc9865232643164ba824e665ab">decodeMultibrackets</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results,</div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#aad7be0971479839493615cafcd654fc1">kMultibracketsBits</a>,</div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="preprocessor">#endif // DECODE_MULTIBRACKETS</span></div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;<span class="preprocessor">#if DECODE_CORONA_AC</span></div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a981cba14551c93af57f9c1c0e1775d12">decodeCoronaAc</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#a1191a9293b03aa14426083b6f411a4e3">kCoronaAcBitsShort</a>,</div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;<span class="preprocessor">#endif // DECODE_CORONA_AC</span></div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;<span class="preprocessor">#if DECODE_ZEPEAL</span></div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classIRrecv.html#a72afd857c8b2e0192021a40afc96c2d8">decodeZepeal</a>(<a class="code" href="classdecode__results.html">decode_results</a> *results, uint16_t offset = <a class="code" href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a>,</div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keyword">const</span> uint16_t nbits = <a class="code" href="IRremoteESP8266_8h.html#af09c9402a1c4fa24f692994498641296">kZepealBits</a>,</div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;<span class="preprocessor">#endif // DECODE_ZEPEAL</span></div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;};</div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; </div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="preprocessor">#endif // IRRECV_H_</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassIRrecv_html_af61afacc9865232643164ba824e665ab"><div class="ttname"><a href="classIRrecv.html#af61afacc9865232643164ba824e665ab">IRrecv::decodeMultibrackets</a></div><div class="ttdeci">bool decodeMultibrackets(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMultibracketsBits, const bool strict=true)</div><div class="ttdoc">Decode the Multibrackets message. Status: BETA / Appears to be working.</div><div class="ttdef"><b>Definition:</b> ir_Multibrackets.cpp:59</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a7b9fba82b602cf38147f0586e037f909"><div class="ttname"><a href="IRremoteESP8266_8h.html#a7b9fba82b602cf38147f0586e037f909">kDelonghiAcBits</a></div><div class="ttdeci">const uint16_t kDelonghiAcBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:861</div></div>
<div class="ttc" id="aclassIRrecv_html_a6efe3be80f0ebef3ff94ed0e56c5c52a"><div class="ttname"><a href="classIRrecv.html#a6efe3be80f0ebef3ff94ed0e56c5c52a">IRrecv::decodeMitsubishi</a></div><div class="ttdeci">bool decodeMitsubishi(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Mitsubishi 16-bit message. Status: STABLE / Working.</div><div class="ttdef"><b>Definition:</b> ir_Mitsubishi.cpp:123</div></div>
<div class="ttc" id="aclassIRrecv_html_ad97403174f05197a7fa9a4a0107e3111"><div class="ttname"><a href="classIRrecv.html#ad97403174f05197a7fa9a4a0107e3111">IRrecv::decodeHaierAC</a></div><div class="ttdeci">bool decodeHaierAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierACBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Haier HSU07-HEA03 remote message. Status: STABLE / Known to be working.</div><div class="ttdef"><b>Definition:</b> ir_Haier.cpp:993</div></div>
<div class="ttc" id="aclassIRrecv_html_a52b844f80df7f64edf9ce9cc189ac5b9"><div class="ttname"><a href="classIRrecv.html#a52b844f80df7f64edf9ce9cc189ac5b9">IRrecv::decodeNEC</a></div><div class="ttdeci">bool decodeNEC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNECBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied NEC (Renesas) message. Status: STABLE / Known good.</div><div class="ttdef"><b>Definition:</b> ir_NEC.cpp:81</div></div>
<div class="ttc" id="aIRrecv_8h_html_abcfcce36d3e2faef742aa3529c22f23f"><div class="ttname"><a href="IRrecv_8h.html#abcfcce36d3e2faef742aa3529c22f23f">kFnvPrime32</a></div><div class="ttdeci">const uint32_t kFnvPrime32</div><div class="ttdef"><b>Definition:</b> IRrecv.h:52</div></div>
<div class="ttc" id="aclassdecode__results_html_a821bc53c006bab3283c6b8592f0c43d3"><div class="ttname"><a href="classdecode__results.html#a821bc53c006bab3283c6b8592f0c43d3">decode_results::overflow</a></div><div class="ttdeci">bool overflow</div><div class="ttdef"><b>Definition:</b> IRrecv.h:109</div></div>
<div class="ttc" id="aclassIRrecv_html_ac7188577c874d9f8f19304a3ec775415"><div class="ttname"><a href="classIRrecv.html#ac7188577c874d9f8f19304a3ec775415">IRrecv::decodeDaikin128</a></div><div class="ttdeci">bool decodeDaikin128(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin128Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Daikin 128-bit message. (DAIKIN128) Status: STABLE / Known Working.</div><div class="ttdef"><b>Definition:</b> ir_Daikin.cpp:3109</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_aceb5cbd7ba5d8bc11560ba29137b10fa"><div class="ttname"><a href="IRremoteESP8266_8h.html#aceb5cbd7ba5d8bc11560ba29137b10fa">kGicableBits</a></div><div class="ttdeci">const uint16_t kGicableBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:879</div></div>
<div class="ttc" id="aclassIRrecv_html_ab783f52acc2ff4052313d6947563e4fd"><div class="ttname"><a href="classIRrecv.html#ab783f52acc2ff4052313d6947563e4fd">IRrecv::matchGeneric</a></div><div class="ttdeci">uint16_t matchGeneric(volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)</div><div class="ttdoc">Match &amp; decode a generic/typical &lt;= 64bit IR message. The data is stored at result_ptr.</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:1268</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_ad5b287a488a8c1b7b8661f029ab56fad"><div class="ttname"><a href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a></div><div class="ttdeci">decode_type_t</div><div class="ttdoc">Enumerator for defining and numbering of supported IR protocol.</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:714</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a668d9ac84f7dae61c35534b842d4956b"><div class="ttname"><a href="IRremoteESP8266_8h.html#a668d9ac84f7dae61c35534b842d4956b">kCarrierAcBits</a></div><div class="ttdeci">const uint16_t kCarrierAcBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:826</div></div>
<div class="ttc" id="aclassIRrecv_html_a8e32daaa903a8e42dad7faaf405b33dc"><div class="ttname"><a href="classIRrecv.html#a8e32daaa903a8e42dad7faaf405b33dc">IRrecv::getRClevel</a></div><div class="ttdeci">int16_t getRClevel(decode_results *results, uint16_t *offset, uint16_t *used, uint16_t bitTime, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const uint16_t delta=0, const uint8_t maxwidth=3)</div><div class="ttdoc">Gets one undecoded level at a time from the raw buffer. The RC5/6 decoding is easier if the data is b...</div><div class="ttdef"><b>Definition:</b> ir_RC5_RC6.cpp:243</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_aad7be0971479839493615cafcd654fc1"><div class="ttname"><a href="IRremoteESP8266_8h.html#aad7be0971479839493615cafcd654fc1">kMultibracketsBits</a></div><div class="ttdeci">const uint16_t kMultibracketsBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:945</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a6c106a982acced5d8aeef98644002ca2"><div class="ttname"><a href="IRremoteESP8266_8h.html#a6c106a982acced5d8aeef98644002ca2">kSharpAcBits</a></div><div class="ttdeci">const uint16_t kSharpAcBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:983</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a4553f6670e241a67104d45216a4ebd98"><div class="ttname"><a href="IRremoteESP8266_8h.html#a4553f6670e241a67104d45216a4ebd98">kWhynterBits</a></div><div class="ttdeci">const uint16_t kWhynterBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:1008</div></div>
<div class="ttc" id="astructirparams__t_html_aa39b4f38e0ffcd470766373e03548e58"><div class="ttname"><a href="structirparams__t.html#aa39b4f38e0ffcd470766373e03548e58">irparams_t::overflow</a></div><div class="ttdeci">uint8_t overflow</div><div class="ttdef"><b>Definition:</b> IRrecv.h:78</div></div>
<div class="ttc" id="aclassIRrecv_html_a9514197850491a5b8c30ae9ffc89d895"><div class="ttname"><a href="classIRrecv.html#a9514197850491a5b8c30ae9ffc89d895">IRrecv::decodeMitsubishi2</a></div><div class="ttdeci">bool decodeMitsubishi2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied second variation of a Mitsubishi 16-bit message. Status: STABLE / Working.</div><div class="ttdef"><b>Definition:</b> ir_Mitsubishi.cpp:188</div></div>
<div class="ttc" id="aclassIRrecv_html_a2e756342d7524a13d53d6c656700638c"><div class="ttname"><a href="classIRrecv.html#a2e756342d7524a13d53d6c656700638c">IRrecv::decodeGree</a></div><div class="ttdeci">bool decodeGree(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGreeBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Gree HVAC message. Status: STABLE / Working.</div><div class="ttdef"><b>Definition:</b> ir_Gree.cpp:673</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a570219a14f2d19c7a6ce0aecd37a3b1f"><div class="ttname"><a href="IRremoteESP8266_8h.html#a570219a14f2d19c7a6ce0aecd37a3b1f">kAirwellBits</a></div><div class="ttdeci">const uint16_t kAirwellBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:813</div></div>
<div class="ttc" id="aclassIRrecv_html_a6fdac84ce51ce119972bf121ccc95aab"><div class="ttname"><a href="classIRrecv.html#a6fdac84ce51ce119972bf121ccc95aab">IRrecv::irparams_save</a></div><div class="ttdeci">irparams_t * irparams_save</div><div class="ttdef"><b>Definition:</b> IRrecv.h:151</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a911a47148656b26da2e094a7ced1fc8b"><div class="ttname"><a href="IRremoteESP8266_8h.html#a911a47148656b26da2e094a7ced1fc8b">kMitsubishiACBits</a></div><div class="ttdeci">const uint16_t kMitsubishiACBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:931</div></div>
<div class="ttc" id="aclassIRrecv_html_aa3778bdf994bf9c99ac48ef95434a826"><div class="ttname"><a href="classIRrecv.html#aa3778bdf994bf9c99ac48ef95434a826">IRrecv::decodeFujitsuAC</a></div><div class="ttdeci">bool decodeFujitsuAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kFujitsuAcBits, const bool strict=false)</div><div class="ttdoc">Decode the supplied Fujitsu AC IR message if possible. Status: STABLE / Working.</div><div class="ttdef"><b>Definition:</b> ir_Fujitsu.cpp:745</div></div>
<div class="ttc" id="aclassIRrecv_html_ae2920c488173f3fa37f5325438157ced"><div class="ttname"><a href="classIRrecv.html#ae2920c488173f3fa37f5325438157ced">IRrecv::decodeTrotec</a></div><div class="ttdeci">bool decodeTrotec(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTrotecBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Trotec message. Status: STABLE / Works. Untested on real devices.</div><div class="ttdef"><b>Definition:</b> ir_Trotec.cpp:313</div></div>
<div class="ttc" id="aclassIRrecv_html_a4729ee949e533448b481ae33bbbf1adf"><div class="ttname"><a href="classIRrecv.html#a4729ee949e533448b481ae33bbbf1adf">IRrecv::decodeNeoclima</a></div><div class="ttdeci">bool decodeNeoclima(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNeoclimaBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Neoclima message. Status: STABLE / Known working.</div><div class="ttdef"><b>Definition:</b> ir_Neoclima.cpp:548</div></div>
<div class="ttc" id="aclassIRrecv_html_ae0690ff3cb5a5cdcdb6a514bb7bf0cdd"><div class="ttname"><a href="classIRrecv.html#ae0690ff3cb5a5cdcdb6a514bb7bf0cdd">IRrecv::decodeMitsubishi112</a></div><div class="ttdeci">bool decodeMitsubishi112(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishi112Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Mitsubishi/TCL 112-bit A/C message. (MITSUBISHI112, TCL112AC) Status: STABLE / Re...</div><div class="ttdef"><b>Definition:</b> ir_Mitsubishi.cpp:1216</div></div>
<div class="ttc" id="aclassIRrecv_html_ae779c76ebd0f3cd1fc13abaa55f80d67"><div class="ttname"><a href="classIRrecv.html#ae779c76ebd0f3cd1fc13abaa55f80d67">IRrecv::decodeSamsungAC</a></div><div class="ttdeci">bool decodeSamsungAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsungAcBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Samsung A/C message. Status: Stable / Known to be working.</div><div class="ttdef"><b>Definition:</b> ir_Samsung.cpp:781</div></div>
<div class="ttc" id="aclassIRrecv_html_acf4635d5ee146a82498cb0c269b6af41"><div class="ttname"><a href="classIRrecv.html#acf4635d5ee146a82498cb0c269b6af41">IRrecv::decodeAirwell</a></div><div class="ttdeci">bool decodeAirwell(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAirwellBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Airwell &quot;Manchester code&quot; message.</div><div class="ttdef"><b>Definition:</b> ir_Airwell.cpp:50</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_abec3ebb217126560e824fa8b66d495bc"><div class="ttname"><a href="IRremoteESP8266_8h.html#abec3ebb217126560e824fa8b66d495bc">kRC5XBits</a></div><div class="ttdeci">const uint16_t kRC5XBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:963</div></div>
<div class="ttc" id="aclassIRrecv_html_a6f3bfcc6767484151dee758bcf94fb0b"><div class="ttname"><a href="classIRrecv.html#a6f3bfcc6767484151dee758bcf94fb0b">IRrecv::decodeMagiQuest</a></div><div class="ttdeci">bool decodeMagiQuest(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMagiquestBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied MagiQuest message. Status: Beta / Should work.</div><div class="ttdef"><b>Definition:</b> ir_Magiquest.cpp:69</div></div>
<div class="ttc" id="astructirparams__t_html_a08e83386c65a90038e0d4922f1f6aa84"><div class="ttname"><a href="structirparams__t.html#a08e83386c65a90038e0d4922f1f6aa84">irparams_t::rawlen</a></div><div class="ttdeci">uint16_t rawlen</div><div class="ttdef"><b>Definition:</b> IRrecv.h:77</div></div>
<div class="ttc" id="aIRrecv_8h_html_a05025e8bd724ae2d0c7fea6e924ca84c"><div class="ttname"><a href="IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c">kUseDefTol</a></div><div class="ttdeci">const uint8_t kUseDefTol</div><div class="ttdef"><b>Definition:</b> IRrecv.h:36</div></div>
<div class="ttc" id="aclassIRrecv_html_a8c91cc83770d243e942387cc16e9ca6f"><div class="ttname"><a href="classIRrecv.html#a8c91cc83770d243e942387cc16e9ca6f">IRrecv::decodeDelonghiAc</a></div><div class="ttdeci">bool decodeDelonghiAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDelonghiAcBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Delonghi A/C message. Status: STABLE / Expected to be working.</div><div class="ttdef"><b>Definition:</b> ir_Delonghi.cpp:60</div></div>
<div class="ttc" id="aclassIRrecv_html"><div class="ttname"><a href="classIRrecv.html">IRrecv</a></div><div class="ttdoc">Class for receiving IR messages.</div><div class="ttdef"><b>Definition:</b> IRrecv.h:114</div></div>
<div class="ttc" id="astructirparams__t_html_a2b34d697b85ee6a0ce08344c941e50ec"><div class="ttname"><a href="structirparams__t.html#a2b34d697b85ee6a0ce08344c941e50ec">irparams_t::bufsize</a></div><div class="ttdeci">uint16_t bufsize</div><div class="ttdef"><b>Definition:</b> IRrecv.h:73</div></div>
<div class="ttc" id="aclassdecode__results_html"><div class="ttname"><a href="classdecode__results.html">decode_results</a></div><div class="ttdoc">Results returned from the decoder.</div><div class="ttdef"><b>Definition:</b> IRrecv.h:92</div></div>
<div class="ttc" id="aclassIRrecv_html_a4582d75ef1d11aee35fce86c38dcccf0"><div class="ttname"><a href="classIRrecv.html#a4582d75ef1d11aee35fce86c38dcccf0">IRrecv::matchGenericConstBitTime</a></div><div class="ttdeci">uint16_t matchGenericConstBitTime(volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t one, const uint32_t zero, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)</div><div class="ttdoc">Match &amp; decode a generic/typical constant bit time &lt;= 64bit IR message. The data is stored at result_...</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:1362</div></div>
<div class="ttc" id="aclassIRrecv_html_a79d03c31da48a385ab47cc8f342ef9b3"><div class="ttname"><a href="classIRrecv.html#a79d03c31da48a385ab47cc8f342ef9b3">IRrecv::decodeCarrierAC64</a></div><div class="ttdeci">bool decodeCarrierAC64(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc64Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Carrier 64-bit HVAC message. Status: STABLE / Known to be working.</div><div class="ttdef"><b>Definition:</b> ir_Carrier.cpp:197</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_aed48c68a637e4b45b80bbf4964ea79f9"><div class="ttname"><a href="IRremoteESP8266_8h.html#aed48c68a637e4b45b80bbf4964ea79f9">kCoolixBits</a></div><div class="ttdeci">const uint16_t kCoolixBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:824</div></div>
<div class="ttc" id="aclassIRrecv_html_a94f12dc000a6e7b75ea8680fd48fc487"><div class="ttname"><a href="classIRrecv.html#a94f12dc000a6e7b75ea8680fd48fc487">IRrecv::decodeArgo</a></div><div class="ttdeci">bool decodeArgo(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kArgoBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Argo message. Status: BETA / Probably works.</div><div class="ttdef"><b>Definition:</b> ir_Argo.cpp:459</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a1191a9293b03aa14426083b6f411a4e3"><div class="ttname"><a href="IRremoteESP8266_8h.html#a1191a9293b03aa14426083b6f411a4e3">kCoronaAcBitsShort</a></div><div class="ttdeci">const uint16_t kCoronaAcBitsShort</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:834</div></div>
<div class="ttc" id="astructmatch__result__t_html_ae88be61a6d1ffa7c3525aa958f4c0d25"><div class="ttname"><a href="structmatch__result__t.html#ae88be61a6d1ffa7c3525aa958f4c0d25">match_result_t::data</a></div><div class="ttdeci">uint64_t data</div><div class="ttdef"><b>Definition:</b> IRrecv.h:85</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a5e1e6f30a41f0d94652429a9e1034179"><div class="ttname"><a href="IRremoteESP8266_8h.html#a5e1e6f30a41f0d94652429a9e1034179">kSamsung36Bits</a></div><div class="ttdeci">const uint16_t kSamsung36Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:968</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_ad756bfec6eabbe2ac10b7847f87fb751"><div class="ttname"><a href="IRremoteESP8266_8h.html#ad756bfec6eabbe2ac10b7847f87fb751">kMagiquestBits</a></div><div class="ttdeci">const uint16_t kMagiquestBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:921</div></div>
<div class="ttc" id="astructirparams__t_html_a6f8a82b51fa206a8cb195e5838aa0cb3"><div class="ttname"><a href="structirparams__t.html#a6f8a82b51fa206a8cb195e5838aa0cb3">irparams_t::rawbuf</a></div><div class="ttdeci">uint16_t * rawbuf</div><div class="ttdef"><b>Definition:</b> IRrecv.h:74</div></div>
<div class="ttc" id="astructirparams__t_html"><div class="ttname"><a href="structirparams__t.html">irparams_t</a></div><div class="ttdoc">Information for the interrupt handler.</div><div class="ttdef"><b>Definition:</b> IRrecv.h:69</div></div>
<div class="ttc" id="aclassIRrecv_html_a69ab02ea6823ccf18d1f6be87ca1b92e"><div class="ttname"><a href="classIRrecv.html#a69ab02ea6823ccf18d1f6be87ca1b92e">IRrecv::getBufSize</a></div><div class="ttdeci">uint16_t getBufSize(void)</div><div class="ttdoc">Obtain the maximum number of entries possible in the capture buffer. i.e. It's size.</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:319</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_ad067db05b273337e0df38d529094c9e8"><div class="ttname"><a href="IRremoteESP8266_8h.html#ad067db05b273337e0df38d529094c9e8">kSanyoLC7461Bits</a></div><div class="ttdeci">const uint16_t kSanyoLC7461Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:977</div></div>
<div class="ttc" id="aclassIRrecv_html_a01228e51ede905beac689967bb14b538"><div class="ttname"><a href="classIRrecv.html#a01228e51ede905beac689967bb14b538">IRrecv::decodeToshibaAC</a></div><div class="ttdeci">bool decodeToshibaAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbytes=kToshibaACBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Toshiba A/C message. Status: STABLE / Working.</div><div class="ttdef"><b>Definition:</b> ir_Toshiba.cpp:322</div></div>
<div class="ttc" id="aclassdecode__results_html_a09da48786fe3966cd5621840fd771bfa"><div class="ttname"><a href="classdecode__results.html#a09da48786fe3966cd5621840fd771bfa">decode_results::repeat</a></div><div class="ttdeci">bool repeat</div><div class="ttdef"><b>Definition:</b> IRrecv.h:110</div></div>
<div class="ttc" id="aclassIRrecv_html_aa42facfffc0e304005272b6ddd4583c8"><div class="ttname"><a href="classIRrecv.html#aa42facfffc0e304005272b6ddd4583c8">IRrecv::decodeHitachiAC</a></div><div class="ttdeci">bool decodeHitachiAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAcBits, const bool strict=true, const bool MSBfirst=true)</div><div class="ttdoc">Decode the supplied Hitachi A/C message. Status: STABLE / Expected to work.</div><div class="ttdef"><b>Definition:</b> ir_Hitachi.cpp:868</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_ab819cb0a34937714dcb10059799c26e2"><div class="ttname"><a href="IRremoteESP8266_8h.html#ab819cb0a34937714dcb10059799c26e2">kTrotecBits</a></div><div class="ttdeci">const uint16_t kTrotecBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:1003</div></div>
<div class="ttc" id="aclassIRrecv_html_a5d48b3c91434c18c7726cca504d75b73"><div class="ttname"><a href="classIRrecv.html#a5d48b3c91434c18c7726cca504d75b73">IRrecv::decodeVestelAc</a></div><div class="ttdeci">bool decodeVestelAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kVestelAcBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Vestel message. Status: Alpha / Needs testing against a real device.</div><div class="ttdef"><b>Definition:</b> ir_Vestel.cpp:572</div></div>
<div class="ttc" id="aIRrecv_8h_html_aabba6fe7d7b97c45173eb7781a5d99bf"><div class="ttname"><a href="IRrecv_8h.html#aabba6fe7d7b97c45173eb7781a5d99bf">kIdleState</a></div><div class="ttdeci">const uint8_t kIdleState</div><div class="ttdef"><b>Definition:</b> IRrecv.h:31</div></div>
<div class="ttc" id="aclassIRrecv_html_a8d81fcfb47e36925975d313027689a44"><div class="ttname"><a href="classIRrecv.html#a8d81fcfb47e36925975d313027689a44">IRrecv::decodeAmcor</a></div><div class="ttdeci">bool decodeAmcor(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAmcorBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Amcor HVAC message. Status: STABLE / Reported as working.</div><div class="ttdef"><b>Definition:</b> ir_Amcor.cpp:59</div></div>
<div class="ttc" id="aclassIRrecv_html_a141f0de9f4cae8daeb025aff3904ecaa"><div class="ttname"><a href="classIRrecv.html#a141f0de9f4cae8daeb025aff3904ecaa">IRrecv::decodeDaikin</a></div><div class="ttdeci">bool decodeDaikin(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikinBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Daikin 280-bit message. (DAIKIN) Status: STABLE / Reported as working.</div><div class="ttdef"><b>Definition:</b> ir_Daikin.cpp:619</div></div>
<div class="ttc" id="astructirparams__t_html_a50da5aa1c42a69b01d50ea688db67d14"><div class="ttname"><a href="structirparams__t.html#a50da5aa1c42a69b01d50ea688db67d14">irparams_t::recvpin</a></div><div class="ttdeci">uint8_t recvpin</div><div class="ttdef"><b>Definition:</b> IRrecv.h:70</div></div>
<div class="ttc" id="astructirparams__t_html_a6d4594a4d6bf8a2587095be7adfc018d"><div class="ttname"><a href="structirparams__t.html#a6d4594a4d6bf8a2587095be7adfc018d">irparams_t::timer</a></div><div class="ttdeci">uint16_t timer</div><div class="ttdef"><b>Definition:</b> IRrecv.h:72</div></div>
<div class="ttc" id="aclassIRrecv_html_a030701f081a9c6eab0c07b75433b524c"><div class="ttname"><a href="classIRrecv.html#a030701f081a9c6eab0c07b75433b524c">IRrecv::decodeDaikin64</a></div><div class="ttdeci">bool decodeDaikin64(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin64Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Daikin 64-bit message. (DAIKIN64) Status: Beta / Probably Working.</div><div class="ttdef"><b>Definition:</b> ir_Daikin.cpp:3591</div></div>
<div class="ttc" id="astructmatch__result__t_html_a13fe18ae6cf89364df443a64295b2f90"><div class="ttname"><a href="structmatch__result__t.html#a13fe18ae6cf89364df443a64295b2f90">match_result_t::success</a></div><div class="ttdeci">bool success</div><div class="ttdef"><b>Definition:</b> IRrecv.h:84</div></div>
<div class="ttc" id="aclassIRrecv_html_a4c4799a0d45ea5562159c46939617d80"><div class="ttname"><a href="classIRrecv.html#a4c4799a0d45ea5562159c46939617d80">IRrecv::decodeDaikin2</a></div><div class="ttdeci">bool decodeDaikin2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin2Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Daikin 312-bit message. (DAIKIN2) Status: STABLE / Works as expected.</div><div class="ttdef"><b>Definition:</b> ir_Daikin.cpp:1415</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_aa46876681f26ccf39c6d341fef041a16"><div class="ttname"><a href="IRremoteESP8266_8h.html#aa46876681f26ccf39c6d341fef041a16">kElectraAcBits</a></div><div class="ttdeci">const uint16_t kElectraAcBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:872</div></div>
<div class="ttc" id="aclassIRrecv_html_a9fd363e8b2edee2ed3c473349ecc58fc"><div class="ttname"><a href="classIRrecv.html#a9fd363e8b2edee2ed3c473349ecc58fc">IRrecv::matchSpace</a></div><div class="ttdeci">bool matchSpace(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)</div><div class="ttdoc">Check if we match a space signal(measured) with the desired within +/-tolerance percent,...</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:1000</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a6f0794107a7643e0bec8de6de9e7621b"><div class="ttname"><a href="IRremoteESP8266_8h.html#a6f0794107a7643e0bec8de6de9e7621b">kSonyMinBits</a></div><div class="ttdeci">const uint16_t kSonyMinBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:990</div></div>
<div class="ttc" id="aIRrecv_8h_html_a0e87ae8496a061e394bc9f7f3415a9b3"><div class="ttname"><a href="IRrecv_8h.html#a0e87ae8496a061e394bc9f7f3415a9b3">kStopState</a></div><div class="ttdeci">const uint8_t kStopState</div><div class="ttdef"><b>Definition:</b> IRrecv.h:34</div></div>
<div class="ttc" id="aclassdecode__results_html_a913e19fc5032fa1f97cf8afe0fa450ec"><div class="ttname"><a href="classdecode__results.html#a913e19fc5032fa1f97cf8afe0fa450ec">decode_results::rawlen</a></div><div class="ttdeci">uint16_t rawlen</div><div class="ttdef"><b>Definition:</b> IRrecv.h:108</div></div>
<div class="ttc" id="aIRrecv_8h_html_a73391726d7caccb9b498bba73a969784"><div class="ttname"><a href="IRrecv_8h.html#a73391726d7caccb9b498bba73a969784">kMaxTimeoutMs</a></div><div class="ttdeci">const uint16_t kMaxTimeoutMs</div><div class="ttdef"><b>Definition:</b> IRrecv.h:49</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_affd9b805fff390d05a83ff4eaa1c98de"><div class="ttname"><a href="IRremoteESP8266_8h.html#affd9b805fff390d05a83ff4eaa1c98de">kDaikin2Bits</a></div><div class="ttdeci">const uint16_t kDaikin2Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:842</div></div>
<div class="ttc" id="aclassIRrecv_html_aa8dd5f24d28576c6db03cc463bd0a865"><div class="ttname"><a href="classIRrecv.html#aa8dd5f24d28576c6db03cc463bd0a865">IRrecv::decodePanasonic</a></div><div class="ttdeci">bool decodePanasonic(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicBits, const bool strict=false, const uint32_t manufacturer=kPanasonicManufacturer)</div><div class="ttdoc">Decode the supplied Panasonic message. Status: STABLE / Should be working.</div><div class="ttdef"><b>Definition:</b> ir_Panasonic.cpp:130</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_aae6947c431d2c9da4fe2fdd9428012c1"><div class="ttname"><a href="IRremoteESP8266_8h.html#aae6947c431d2c9da4fe2fdd9428012c1">kHitachiAc1Bits</a></div><div class="ttdeci">const uint16_t kHitachiAc1Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:896</div></div>
<div class="ttc" id="aclassIRrecv_html_ad3a7be8afc36451c8e28e27f3c3e9aaa"><div class="ttname"><a href="classIRrecv.html#ad3a7be8afc36451c8e28e27f3c3e9aaa">IRrecv::decodeElectraAC</a></div><div class="ttdeci">bool decodeElectraAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kElectraAcBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Electra A/C message. Status: STABLE / Known working.</div><div class="ttdef"><b>Definition:</b> ir_Electra.cpp:377</div></div>
<div class="ttc" id="aclassIRrecv_html_a7f860686a5c58aa8f4d1842cfb15b2f9"><div class="ttname"><a href="classIRrecv.html#a7f860686a5c58aa8f4d1842cfb15b2f9">IRrecv::decodeDaikin216</a></div><div class="ttdeci">bool decodeDaikin216(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin216Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Daikin 216-bit message. (DAIKIN216) Status: STABLE / Should be working.</div><div class="ttdef"><b>Definition:</b> ir_Daikin.cpp:1789</div></div>
<div class="ttc" id="aclassIRrecv_html_ab20a6586b4e56cc428012ec96f5ccc2c"><div class="ttname"><a href="classIRrecv.html#ab20a6586b4e56cc428012ec96f5ccc2c">IRrecv::decodeDaikin152</a></div><div class="ttdeci">bool decodeDaikin152(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin152Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Daikin 152-bit message. (DAIKIN152) Status: STABLE / Known Working.</div><div class="ttdef"><b>Definition:</b> ir_Daikin.cpp:3198</div></div>
<div class="ttc" id="aclassIRrecv_html_a0b1bd1c817cb43bc3755126191b7f4a2"><div class="ttname"><a href="classIRrecv.html#a0b1bd1c817cb43bc3755126191b7f4a2">IRrecv::decodeDenon</a></div><div class="ttdeci">bool decodeDenon(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDenonBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Delonghi A/C message. Status: STABLE / Should work fine.</div><div class="ttdef"><b>Definition:</b> ir_Denon.cpp:70</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_aa148f54492be1cf8a8b285a96861a0b7"><div class="ttname"><a href="IRremoteESP8266_8h.html#aa148f54492be1cf8a8b285a96861a0b7">kPanasonicBits</a></div><div class="ttdeci">const uint16_t kPanasonicBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:952</div></div>
<div class="ttc" id="aclassIRrecv_html_a201a5a78f43c2ac216fae4a2ba4d14ec"><div class="ttname"><a href="classIRrecv.html#a201a5a78f43c2ac216fae4a2ba4d14ec">IRrecv::decodeSanyoLC7461</a></div><div class="ttdeci">bool decodeSanyoLC7461(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoLC7461Bits, bool strict=true)</div><div class="ttdoc">Decode the supplied SANYO LC7461 message. Status: BETA / Probably works.</div><div class="ttdef"><b>Definition:</b> ir_Sanyo.cpp:117</div></div>
<div class="ttc" id="aclassdecode__results_html_a9c0e9f161b9c90dc10b7561d4c0b50fa"><div class="ttname"><a href="classdecode__results.html#a9c0e9f161b9c90dc10b7561d4c0b50fa">decode_results::decode_type</a></div><div class="ttdeci">decode_type_t decode_type</div><div class="ttdef"><b>Definition:</b> IRrecv.h:94</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a210f5c78b0f90b64dd5037698141433a"><div class="ttname"><a href="IRremoteESP8266_8h.html#a210f5c78b0f90b64dd5037698141433a">kPanasonicAcBits</a></div><div class="ttdeci">const uint16_t kPanasonicAcBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:956</div></div>
<div class="ttc" id="aIRrecv_8h_html_ae8b11750ba7f2e2d56343f770720ed89"><div class="ttname"><a href="IRrecv_8h.html#ae8b11750ba7f2e2d56343f770720ed89">kRepeat</a></div><div class="ttdeci">const uint64_t kRepeat</div><div class="ttdef"><b>Definition:</b> IRrecv.h:26</div></div>
<div class="ttc" id="aclassIRrecv_html_aa091c449db70c65fd0221669df7438ea"><div class="ttname"><a href="classIRrecv.html#aa091c449db70c65fd0221669df7438ea">IRrecv::setTolerance</a></div><div class="ttdeci">void setTolerance(const uint8_t percent=kTolerance)</div><div class="ttdoc">Set the base tolerance percentage for matching incoming IR messages.</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:332</div></div>
<div class="ttc" id="aclassIRrecv_html_a255b15601f7439a09ab5e77ad78816fb"><div class="ttname"><a href="classIRrecv.html#a255b15601f7439a09ab5e77ad78816fb">IRrecv::decodeMidea</a></div><div class="ttdeci">bool decodeMidea(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMideaBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Midea message. Status: Alpha / Needs testing against a real device.</div><div class="ttdef"><b>Definition:</b> ir_Midea.cpp:415</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_aa6f1d6dded2ae3500cd52aa0c482a1b6"><div class="ttname"><a href="IRremoteESP8266_8h.html#aa6f1d6dded2ae3500cd52aa0c482a1b6">kDaikin160Bits</a></div><div class="ttdeci">const uint16_t kDaikin160Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:847</div></div>
<div class="ttc" id="aclassIRrecv_html_ab017a0f9256954bb7d943e3c6b7e31bf"><div class="ttname"><a href="classIRrecv.html#ab017a0f9256954bb7d943e3c6b7e31bf">IRrecv::copyIrParams</a></div><div class="ttdeci">void copyIrParams(volatile irparams_t *src, irparams_t *dst)</div><div class="ttdoc">Make a copy of the interrupt state &amp; buffer data. Needed because irparams is marked as volatile,...</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:295</div></div>
<div class="ttc" id="aclassIRrecv_html_a0ac82f20b48b2d71ee07eb392578b226"><div class="ttname"><a href="classIRrecv.html#a0ac82f20b48b2d71ee07eb392578b226">IRrecv::decodeKelvinator</a></div><div class="ttdeci">bool decodeKelvinator(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kKelvinatorBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Kelvinator message. Status: STABLE / Known working.</div><div class="ttdef"><b>Definition:</b> ir_Kelvinator.cpp:489</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_afa2675ce42d00175ec95caa6cd87a425"><div class="ttname"><a href="IRremoteESP8266_8h.html#afa2675ce42d00175ec95caa6cd87a425">kGoodweatherBits</a></div><div class="ttdeci">const uint16_t kGoodweatherBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:881</div></div>
<div class="ttc" id="aclassIRrecv_html_a27518b5d792cdf3ab333b324f409f328"><div class="ttname"><a href="classIRrecv.html#a27518b5d792cdf3ab333b324f409f328">IRrecv::decodeMWM</a></div><div class="ttdeci">bool decodeMWM(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=24, const bool strict=true)</div><div class="ttdoc">Decode the supplied MWM message. Status: Implemented.</div><div class="ttdef"><b>Definition:</b> ir_MWM.cpp:81</div></div>
<div class="ttc" id="aclassIRrecv_html_a52c05ec6d8f3dbfb75f21f3b4fe7be3d"><div class="ttname"><a href="classIRrecv.html#a52c05ec6d8f3dbfb75f21f3b4fe7be3d">IRrecv::enableIRIn</a></div><div class="ttdeci">void enableIRIn(const bool pullup=false)</div><div class="ttdoc">Set up and (re)start the IR capture mechanism.</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:228</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_af056e1ac2d00c6d6440c3dd2ae283f09"><div class="ttname"><a href="IRremoteESP8266_8h.html#af056e1ac2d00c6d6440c3dd2ae283f09">kDaikin152Bits</a></div><div class="ttdeci">const uint16_t kDaikin152Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:853</div></div>
<div class="ttc" id="aclassIRrecv_html_a0f78e180ed731e8fb16d1c85aa721c95"><div class="ttname"><a href="classIRrecv.html#a0f78e180ed731e8fb16d1c85aa721c95">IRrecv::decodePanasonicAC</a></div><div class="ttdeci">bool decodePanasonicAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicAcBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Panasonic AC message. Status: STABLE / Works with real device(s).</div><div class="ttdef"><b>Definition:</b> ir_Panasonic.cpp:879</div></div>
<div class="ttc" id="aclassIRrecv_html_a675c45e6b32aaeca3de734ccf2f0c819"><div class="ttname"><a href="classIRrecv.html#a675c45e6b32aaeca3de734ccf2f0c819">IRrecv::decodeDoshisha</a></div><div class="ttdeci">bool decodeDoshisha(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDoshishaBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Doshisha message. Status: STABLE / Works on real device.</div><div class="ttdef"><b>Definition:</b> ir_Doshisha.cpp:85</div></div>
<div class="ttc" id="aclassIRrecv_html_a72afd857c8b2e0192021a40afc96c2d8"><div class="ttname"><a href="classIRrecv.html#a72afd857c8b2e0192021a40afc96c2d8">IRrecv::decodeZepeal</a></div><div class="ttdeci">bool decodeZepeal(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kZepealBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Zepeal message. Status: STABLE / Works on real device.</div><div class="ttdef"><b>Definition:</b> ir_Zepeal.cpp:67</div></div>
<div class="ttc" id="aclassIRrecv_html_af0b9822defe6b29099079d664d9dc413"><div class="ttname"><a href="classIRrecv.html#af0b9822defe6b29099079d664d9dc413">IRrecv::decodeDaikin160</a></div><div class="ttdeci">bool decodeDaikin160(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin160Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Daikin 160-bit message. (DAIKIN160) Status: STABLE / Confirmed working.</div><div class="ttdef"><b>Definition:</b> ir_Daikin.cpp:2162</div></div>
<div class="ttc" id="aclassIRrecv_html_ae4af614a45ea65cb3304ef5bd7965122"><div class="ttname"><a href="classIRrecv.html#ae4af614a45ea65cb3304ef5bd7965122">IRrecv::decodeLasertag</a></div><div class="ttdeci">bool decodeLasertag(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLasertagBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Lasertag message. Status: BETA / Appears to be working 90% of the time.</div><div class="ttdef"><b>Definition:</b> ir_Lasertag.cpp:70</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html"><div class="ttname"><a href="IRremoteESP8266_8h.html">IRremoteESP8266.h</a></div></div>
<div class="ttc" id="aIRrecv_8h_html_ad37e9659aaef29c541802d9759e0ab7b"><div class="ttname"><a href="IRrecv_8h.html#ad37e9659aaef29c541802d9759e0ab7b">kTimeoutMs</a></div><div class="ttdeci">const uint8_t kTimeoutMs</div><div class="ttdef"><b>Definition:</b> IRrecv.h:47</div></div>
<div class="ttc" id="aclassIRrecv_html_af0b300fe6fdff58324525e8208be3024"><div class="ttname"><a href="classIRrecv.html#af0b300fe6fdff58324525e8208be3024">IRrecv::_matchGeneric</a></div><div class="ttdeci">uint16_t _matchGeneric(volatile uint16_t *data_ptr, uint64_t *result_bits_ptr, uint8_t *result_ptr, const bool use_bits, const uint16_t remaining, const uint16_t required, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)</div><div class="ttdoc">Match &amp; decode a generic/typical IR message. The data is stored in result_bits_ptr or result_bytes_pt...</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:1168</div></div>
<div class="ttc" id="aIRrecv_8h_html_acc85ad22929660bdc17fe185d87edfb2"><div class="ttname"><a href="IRrecv_8h.html#acc85ad22929660bdc17fe185d87edfb2">kMarkState</a></div><div class="ttdeci">const uint8_t kMarkState</div><div class="ttdef"><b>Definition:</b> IRrecv.h:32</div></div>
<div class="ttc" id="aclassIRrecv_html_a02693553aad1decd67bdae60402e48bf"><div class="ttname"><a href="classIRrecv.html#a02693553aad1decd67bdae60402e48bf">IRrecv::setUnknownThreshold</a></div><div class="ttdeci">void setUnknownThreshold(const uint16_t length)</div><div class="ttdoc">Set the minimum length we will consider for reporting UNKNOWN message types.</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:324</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_abb5b89578ab0757999530c0383f38533"><div class="ttname"><a href="IRremoteESP8266_8h.html#abb5b89578ab0757999530c0383f38533">kSymphonyBits</a></div><div class="ttdeci">const uint16_t kSymphonyBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:992</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a84a6d3e15e98f7a4917d252d5665534a"><div class="ttname"><a href="IRremoteESP8266_8h.html#a84a6d3e15e98f7a4917d252d5665534a">kRC6Mode0Bits</a></div><div class="ttdeci">const uint16_t kRC6Mode0Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:964</div></div>
<div class="ttc" id="aIRrecv_8h_html_ab7d82cf4c0937c9b1d59d75f6f347ab2"><div class="ttname"><a href="IRrecv_8h.html#ab7d82cf4c0937c9b1d59d75f6f347ab2">kStateSizeMax</a></div><div class="ttdeci">const uint16_t kStateSizeMax</div><div class="ttdef"><b>Definition:</b> IRrecv.h:60</div></div>
<div class="ttc" id="astructmatch__result__t_html"><div class="ttname"><a href="structmatch__result__t.html">match_result_t</a></div><div class="ttdoc">Results from a data match.</div><div class="ttdef"><b>Definition:</b> IRrecv.h:83</div></div>
<div class="ttc" id="astructirparams__t_html_a63354788dab4569f4092cd05e77f0260"><div class="ttname"><a href="structirparams__t.html#a63354788dab4569f4092cd05e77f0260">irparams_t::rcvstate</a></div><div class="ttdeci">uint8_t rcvstate</div><div class="ttdef"><b>Definition:</b> IRrecv.h:71</div></div>
<div class="ttc" id="aclassIRrecv_html_a67316499ef37db82e3b3ecaac25c5980"><div class="ttname"><a href="classIRrecv.html#a67316499ef37db82e3b3ecaac25c5980">IRrecv::decodeRC6</a></div><div class="ttdeci">bool decodeRC6(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC6Mode0Bits, const bool strict=false)</div><div class="ttdoc">Decode the supplied RC6 message. Status: Stable.</div><div class="ttdef"><b>Definition:</b> ir_RC5_RC6.cpp:383</div></div>
<div class="ttc" id="aclassIRrecv_html_adab9dffbeceee514520fababd0e721bd"><div class="ttname"><a href="classIRrecv.html#adab9dffbeceee514520fababd0e721bd">IRrecv::decodeRC5</a></div><div class="ttdeci">bool decodeRC5(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC5XBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied RC-5/RC5X message. Status: RC-5 (stable), RC-5X (alpha)</div><div class="ttdef"><b>Definition:</b> ir_RC5_RC6.cpp:309</div></div>
<div class="ttc" id="aclassIRrecv_html_a87d4cca5e350177cb0922842dda1eb5b"><div class="ttname"><a href="classIRrecv.html#a87d4cca5e350177cb0922842dda1eb5b">IRrecv::~IRrecv</a></div><div class="ttdeci">~IRrecv(void)</div><div class="ttdoc">Class destructor Cleans up after the object is no longer needed. e.g. Frees up all memory used by the...</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:213</div></div>
<div class="ttc" id="aclassIRrecv_html_a113bc834eff00f55d5545ce3fa1ab203"><div class="ttname"><a href="classIRrecv.html#a113bc834eff00f55d5545ce3fa1ab203">IRrecv::decodeHitachiAc3</a></div><div class="ttdeci">bool decodeHitachiAc3(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc3Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Hitachi 15to27-byte/120to216-bit A/C message. Status: STABLE / Works fine.</div><div class="ttdef"><b>Definition:</b> ir_Hitachi.cpp:1456</div></div>
<div class="ttc" id="aclassIRrecv_html_a66289f6a462557ad26e6c0a64f36cf02"><div class="ttname"><a href="classIRrecv.html#a66289f6a462557ad26e6c0a64f36cf02">IRrecv::decodeWhynter</a></div><div class="ttdeci">bool decodeWhynter(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kWhynterBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Whynter message. Status: STABLE / Working. Strict mode is ALPHA.</div><div class="ttdef"><b>Definition:</b> ir_Whynter.cpp:74</div></div>
<div class="ttc" id="aclassIRrecv_html_acf3d1c37038120a5c0996d92577ce74a"><div class="ttname"><a href="classIRrecv.html#acf3d1c37038120a5c0996d92577ce74a">IRrecv::decodeCarrierAC</a></div><div class="ttdeci">bool decodeCarrierAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAcBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Carrier HVAC message.</div><div class="ttdef"><b>Definition:</b> ir_Carrier.cpp:84</div></div>
<div class="ttc" id="aclassIRrecv_html_a5361439cb69b1069553544e486502d2e"><div class="ttname"><a href="classIRrecv.html#a5361439cb69b1069553544e486502d2e">IRrecv::matchData</a></div><div class="ttdeci">match_result_t matchData(volatile uint16_t *data_ptr, const uint16_t nbits, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)</div><div class="ttdoc">Match &amp; decode the typical data section of an IR message. The data value is stored in the least signi...</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:1076</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_ab973b35583dabc7e04b12018fac04cc9"><div class="ttname"><a href="IRremoteESP8266_8h.html#ab973b35583dabc7e04b12018fac04cc9">kMitsubishiHeavy152Bits</a></div><div class="ttdeci">const uint16_t kMitsubishiHeavy152Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:943</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_aedc53534cf6a40144be80abeee498362"><div class="ttname"><a href="IRremoteESP8266_8h.html#aedc53534cf6a40144be80abeee498362">kDoshishaBits</a></div><div class="ttdeci">const uint16_t kDoshishaBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:868</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a56d1176a7b3fe59aeb3f4f39926c617d"><div class="ttname"><a href="IRremoteESP8266_8h.html#a56d1176a7b3fe59aeb3f4f39926c617d">kCarrierAc40Bits</a></div><div class="ttdeci">const uint16_t kCarrierAc40Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:828</div></div>
<div class="ttc" id="aIRrecv_8h_html_a44a836a34428f8f75b1ae566de4bb972"><div class="ttname"><a href="IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972">kStartOffset</a></div><div class="ttdeci">const uint16_t kStartOffset</div><div class="ttdef"><b>Definition:</b> IRrecv.h:20</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a34bcab75a8ab94adfd46a245dd0748db"><div class="ttname"><a href="IRremoteESP8266_8h.html#a34bcab75a8ab94adfd46a245dd0748db">kAmcorBits</a></div><div class="ttdeci">const uint16_t kAmcorBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:819</div></div>
<div class="ttc" id="aclassIRrecv_html_a0e7bf769cb5bebf174e852e4b0b08cf3"><div class="ttname"><a href="classIRrecv.html#a0e7bf769cb5bebf174e852e4b0b08cf3">IRrecv::decodeRCMM</a></div><div class="ttdeci">bool decodeRCMM(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRCMMBits, const bool strict=false)</div><div class="ttdoc">Decode a Philips RC-MM packet (between 12 &amp; 32 bits) if possible. Status: STABLE / Should be working.</div><div class="ttdef"><b>Definition:</b> ir_RCMM.cpp:96</div></div>
<div class="ttc" id="aclassIRrecv_html_a8fe4d26ef1f863db1db9994fed5fc209"><div class="ttname"><a href="classIRrecv.html#a8fe4d26ef1f863db1db9994fed5fc209">IRrecv::IRrecv</a></div><div class="ttdeci">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)</div><div class="ttdoc">Class constructor Args:</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:152</div></div>
<div class="ttc" id="aclassIRrecv_html_a87b3ee57dbdf762a0e305ddd43eec629"><div class="ttname"><a href="classIRrecv.html#a87b3ee57dbdf762a0e305ddd43eec629">IRrecv::decodeMitsubishi136</a></div><div class="ttdeci">bool decodeMitsubishi136(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishi136Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Mitsubishi 136-bit A/C message. (MITSUBISHI136) Status: STABLE / Reported as work...</div><div class="ttdef"><b>Definition:</b> ir_Mitsubishi.cpp:835</div></div>
<div class="ttc" id="aclassdecode__results_html_a19043dc161cd5e0d3dcc82b5a7470e49"><div class="ttname"><a href="classdecode__results.html#a19043dc161cd5e0d3dcc82b5a7470e49">decode_results::rawbuf</a></div><div class="ttdeci">volatile uint16_t * rawbuf</div><div class="ttdef"><b>Definition:</b> IRrecv.h:107</div></div>
<div class="ttc" id="aIRrecv_8h_html_a7884008b3a738dfc7bd8658655e10272"><div class="ttname"><a href="IRrecv_8h.html#a7884008b3a738dfc7bd8658655e10272">kTolerance</a></div><div class="ttdeci">const uint8_t kTolerance</div><div class="ttdef"><b>Definition:</b> IRrecv.h:35</div></div>
<div class="ttc" id="aclassIRrecv_html_a3390d63ba21a835d7c74c261532a22a7"><div class="ttname"><a href="classIRrecv.html#a3390d63ba21a835d7c74c261532a22a7">IRrecv::decodeSharp</a></div><div class="ttdeci">bool decodeSharp(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpBits, const bool strict=true, const bool expansion=true)</div><div class="ttdoc">Decode the supplied Sharp message. Status: STABLE / Working fine.</div><div class="ttdef"><b>Definition:</b> ir_Sharp.cpp:156</div></div>
<div class="ttc" id="astructmatch__result__t_html_a26cea305aa83ed65b88ac0b6ed6de54a"><div class="ttname"><a href="structmatch__result__t.html#a26cea305aa83ed65b88ac0b6ed6de54a">match_result_t::used</a></div><div class="ttdeci">uint16_t used</div><div class="ttdef"><b>Definition:</b> IRrecv.h:86</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a1dd1a9799e5d20d39e82ff678bf07b47"><div class="ttname"><a href="IRremoteESP8266_8h.html#a1dd1a9799e5d20d39e82ff678bf07b47">kPanasonicManufacturer</a></div><div class="ttdeci">const uint32_t kPanasonicManufacturer</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:953</div></div>
<div class="ttc" id="aclassdecode__results_html_a2858c3a5e28eccca95d44aaa87b70e9e"><div class="ttname"><a href="classdecode__results.html#a2858c3a5e28eccca95d44aaa87b70e9e">decode_results::address</a></div><div class="ttdeci">uint32_t address</div><div class="ttdef"><b>Definition:</b> IRrecv.h:101</div></div>
<div class="ttc" id="aclassIRrecv_html_abbcbf5fc07d7e37d7724acc37bb5f592"><div class="ttname"><a href="classIRrecv.html#abbcbf5fc07d7e37d7724acc37bb5f592">IRrecv::decodeNikai</a></div><div class="ttdeci">bool decodeNikai(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNikaiBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Nikai message. Status: STABLE / Working.</div><div class="ttdef"><b>Definition:</b> ir_Nikai.cpp:52</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_abd2187340d0b94996136081413e2ad22"><div class="ttname"><a href="IRremoteESP8266_8h.html#abd2187340d0b94996136081413e2ad22">kMitsubishiBits</a></div><div class="ttdeci">const uint16_t kMitsubishiBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:926</div></div>
<div class="ttc" id="aclassIRrecv_html_a8bc218dae714ab189a3da4fff269cdaa"><div class="ttname"><a href="classIRrecv.html#a8bc218dae714ab189a3da4fff269cdaa">IRrecv::match</a></div><div class="ttdeci">bool match(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)</div><div class="ttdoc">Check if we match a pulse(measured) with the desired within +/-tolerance percent and/or +/- a fixed d...</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:908</div></div>
<div class="ttc" id="aclassIRrecv_html_a61cdf4d891654521afbc6ca9fb415745"><div class="ttname"><a href="classIRrecv.html#a61cdf4d891654521afbc6ca9fb415745">IRrecv::decodeSymphony</a></div><div class="ttdeci">bool decodeSymphony(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSymphonyBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Symphony packet/message. Status: STABLE / Should be working.</div><div class="ttdef"><b>Definition:</b> ir_Symphony.cpp:60</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_adebe85ab48eb876ec15daacca246797c"><div class="ttname"><a href="IRremoteESP8266_8h.html#adebe85ab48eb876ec15daacca246797c">kSamsungAcBits</a></div><div class="ttdeci">const uint16_t kSamsungAcBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:970</div></div>
<div class="ttc" id="aIRrecv_8h_html_aa6b5a940c7a0432aa82a8d823202cd7f"><div class="ttname"><a href="IRrecv_8h.html#aa6b5a940c7a0432aa82a8d823202cd7f">kUnknownThreshold</a></div><div class="ttdeci">const uint16_t kUnknownThreshold</div><div class="ttdef"><b>Definition:</b> IRrecv.h:28</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_afc98096b1e2945e2eaeb07d70d511239"><div class="ttname"><a href="IRremoteESP8266_8h.html#afc98096b1e2945e2eaeb07d70d511239">kMideaBits</a></div><div class="ttdeci">const uint16_t kMideaBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:922</div></div>
<div class="ttc" id="aclassIRrecv_html_aa4d678376a4c0f8ea953474a6f5ef9d2"><div class="ttname"><a href="classIRrecv.html#aa4d678376a4c0f8ea953474a6f5ef9d2">IRrecv::decodeAiwaRCT501</a></div><div class="ttdeci">bool decodeAiwaRCT501(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAiwaRcT501Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Aiwa RC T501 message. Status: BETA / Should work.</div><div class="ttdef"><b>Definition:</b> ir_Aiwa.cpp:61</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_acfa71cb3caf4964829bb1f557dee5b86"><div class="ttname"><a href="IRremoteESP8266_8h.html#acfa71cb3caf4964829bb1f557dee5b86">kKelvinatorBits</a></div><div class="ttdeci">const uint16_t kKelvinatorBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:911</div></div>
<div class="ttc" id="aclassIRrecv_html_afade8dac9b1d023e5e0946e6b2c08aea"><div class="ttname"><a href="classIRrecv.html#afade8dac9b1d023e5e0946e6b2c08aea">IRrecv::decodeGICable</a></div><div class="ttdeci">bool decodeGICable(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGicableBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied G.I. Cable message. Status: Alpha / Not tested against a real device.</div><div class="ttdef"><b>Definition:</b> ir_GICable.cpp:63</div></div>
<div class="ttc" id="aclassIRrecv_html_a950711d7df8dfe4cda86f53650cd9f56"><div class="ttname"><a href="classIRrecv.html#a950711d7df8dfe4cda86f53650cd9f56">IRrecv::decodeTeco</a></div><div class="ttdeci">bool decodeTeco(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTecoBits, const bool strict=false)</div><div class="ttdoc">Decode the supplied Teco message. Status: STABLE / Tested.</div><div class="ttdef"><b>Definition:</b> ir_Teco.cpp:365</div></div>
<div class="ttc" id="aclassIRrecv_html_a4bdb35ec34f49401a6b9becd15b8a3b5"><div class="ttname"><a href="classIRrecv.html#a4bdb35ec34f49401a6b9becd15b8a3b5">IRrecv::decodeCarrierAC40</a></div><div class="ttdeci">bool decodeCarrierAC40(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc40Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Carrier 40-bit HVAC message. Carrier HVAC messages contain only 40 bits,...</div><div class="ttdef"><b>Definition:</b> ir_Carrier.cpp:149</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a65e03baf646815b4b02f943bdd74a097"><div class="ttname"><a href="IRremoteESP8266_8h.html#a65e03baf646815b4b02f943bdd74a097">kNECBits</a></div><div class="ttdeci">const uint16_t kNECBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:948</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a29160117e25f3dfc1cb899a4a53bc238"><div class="ttname"><a href="IRremoteESP8266_8h.html#a29160117e25f3dfc1cb899a4a53bc238">kDenonBits</a></div><div class="ttdeci">const uint16_t kDenonBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:863</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_ad44cfa0951c24d1f0c67b2fba997f720"><div class="ttname"><a href="IRremoteESP8266_8h.html#ad44cfa0951c24d1f0c67b2fba997f720">kHaierACBits</a></div><div class="ttdeci">const uint16_t kHaierACBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:887</div></div>
<div class="ttc" id="aclassIRrecv_html_ae7bfd4ff689c7563c65c4e6e8c58187a"><div class="ttname"><a href="classIRrecv.html#ae7bfd4ff689c7563c65c4e6e8c58187a">IRrecv::matchAtLeast</a></div><div class="ttdeci">bool matchAtLeast(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)</div><div class="ttdoc">Check if we match a pulse(measured) of at least desired within tolerance percent and/or a fixed delta...</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:939</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_af09c9402a1c4fa24f692994498641296"><div class="ttname"><a href="IRremoteESP8266_8h.html#af09c9402a1c4fa24f692994498641296">kZepealBits</a></div><div class="ttdeci">const uint16_t kZepealBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:1010</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_aff132faa67b1d07890378df5c9b52a14"><div class="ttname"><a href="IRremoteESP8266_8h.html#aff132faa67b1d07890378df5c9b52a14">kMidea24Bits</a></div><div class="ttdeci">const uint16_t kMidea24Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:924</div></div>
<div class="ttc" id="aclassIRrecv_html_aa142d1340201b6fdc5b462f46fe21ee0"><div class="ttname"><a href="classIRrecv.html#aa142d1340201b6fdc5b462f46fe21ee0">IRrecv::decodeDaikin176</a></div><div class="ttdeci">bool decodeDaikin176(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin176Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Daikin 176-bit message. (DAIKIN176) Status: STABLE / Expected to work.</div><div class="ttdef"><b>Definition:</b> ir_Daikin.cpp:2553</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_afff9132e57296b4d7e04ec9e1e5ab04f"><div class="ttname"><a href="IRremoteESP8266_8h.html#afff9132e57296b4d7e04ec9e1e5ab04f">kNeoclimaBits</a></div><div class="ttdeci">const uint16_t kNeoclimaBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:950</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a149bd4f3fb9c83e683095d393209ede3"><div class="ttname"><a href="IRremoteESP8266_8h.html#a149bd4f3fb9c83e683095d393209ede3">kWhirlpoolAcBits</a></div><div class="ttdeci">const uint16_t kWhirlpoolAcBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:1006</div></div>
<div class="ttc" id="aclassIRrecv_html_a8a9b920079f783e236f8a938e20b9743"><div class="ttname"><a href="classIRrecv.html#a8a9b920079f783e236f8a938e20b9743">IRrecv::decodeSharpAc</a></div><div class="ttdeci">bool decodeSharpAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpAcBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Sharp A/C message. Status: STABLE / Known working.</div><div class="ttdef"><b>Definition:</b> ir_Sharp.cpp:723</div></div>
<div class="ttc" id="aclassIRrecv_html_a25ab71efc223a418e9630d8421f44bc9"><div class="ttname"><a href="classIRrecv.html#a25ab71efc223a418e9630d8421f44bc9">IRrecv::decodeJVC</a></div><div class="ttdeci">bool decodeJVC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kJvcBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied JVC message. Status: Stable / Known working.</div><div class="ttdef"><b>Definition:</b> ir_JVC.cpp:94</div></div>
<div class="ttc" id="aclassIRrecv_html_a942c5f41df5cbff32a8b7703673cb621"><div class="ttname"><a href="classIRrecv.html#a942c5f41df5cbff32a8b7703673cb621">IRrecv::decodeMitsubishiAC</a></div><div class="ttdeci">bool decodeMitsubishiAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiACBits, const bool strict=false)</div><div class="ttdoc">Decode the supplied Mitsubish 144-bit A/C message. Status: BETA / Probably works.</div><div class="ttdef"><b>Definition:</b> ir_Mitsubishi.cpp:254</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a41bc7ab7289e499ad33901da3eab661a"><div class="ttname"><a href="IRremoteESP8266_8h.html#a41bc7ab7289e499ad33901da3eab661a">kCarrierAc64Bits</a></div><div class="ttdeci">const uint16_t kCarrierAc64Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:830</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a6a7ccd31e0a6f967a219b1a53b89653b"><div class="ttname"><a href="IRremoteESP8266_8h.html#a6a7ccd31e0a6f967a219b1a53b89653b">kPioneerBits</a></div><div class="ttdeci">const uint16_t kPioneerBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:959</div></div>
<div class="ttc" id="aclassdecode__results_html_aa5ba2fd53bdb36bdc120d8eabd9f36d7"><div class="ttname"><a href="classdecode__results.html#aa5ba2fd53bdb36bdc120d8eabd9f36d7">decode_results::bits</a></div><div class="ttdeci">uint16_t bits</div><div class="ttdef"><b>Definition:</b> IRrecv.h:106</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_acadcc5d03e09784642f008d4d2913c7d"><div class="ttname"><a href="IRremoteESP8266_8h.html#acadcc5d03e09784642f008d4d2913c7d">kGreeBits</a></div><div class="ttdeci">const uint16_t kGreeBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:884</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a7c28467832e7480864a6be0ce87c608f"><div class="ttname"><a href="IRremoteESP8266_8h.html#a7c28467832e7480864a6be0ce87c608f">kJvcBits</a></div><div class="ttdeci">const uint16_t kJvcBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:909</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a3ea0e89a8b6a3ffa4a2d346abeed851e"><div class="ttname"><a href="IRremoteESP8266_8h.html#a3ea0e89a8b6a3ffa4a2d346abeed851e">kLasertagBits</a></div><div class="ttdeci">const uint16_t kLasertagBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:913</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a5bb2e6f8acbc0123de5ac0fd76e1646a"><div class="ttname"><a href="IRremoteESP8266_8h.html#a5bb2e6f8acbc0123de5ac0fd76e1646a">kDaikin128Bits</a></div><div class="ttdeci">const uint16_t kDaikin128Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:850</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a9078adf040d21c9c3eb10ed69f9dced6"><div class="ttname"><a href="IRremoteESP8266_8h.html#a9078adf040d21c9c3eb10ed69f9dced6">kAiwaRcT501Bits</a></div><div class="ttdeci">const uint16_t kAiwaRcT501Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:815</div></div>
<div class="ttc" id="aclassIRrecv_html_ac08e50c5eec10c0095157f4bdd4051c8"><div class="ttname"><a href="classIRrecv.html#ac08e50c5eec10c0095157f4bdd4051c8">IRrecv::ticksLow</a></div><div class="ttdeci">uint32_t ticksLow(const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)</div><div class="ttdoc">Calculate the lower bound of the nr. of ticks.</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:882</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_aee01958e9d97a70a6881cf560ca0ca9d"><div class="ttname"><a href="IRremoteESP8266_8h.html#aee01958e9d97a70a6881cf560ca0ca9d">kTecoBits</a></div><div class="ttdeci">const uint16_t kTecoBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:997</div></div>
<div class="ttc" id="aclassIRrecv_html_aaadef8415f273ba25f4086fecd681d2e"><div class="ttname"><a href="classIRrecv.html#aaadef8415f273ba25f4086fecd681d2e">IRrecv::decodeEpson</a></div><div class="ttdeci">bool decodeEpson(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEpsonBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Epson message. Status: Beta / Probably works.</div><div class="ttdef"><b>Definition:</b> ir_Epson.cpp:45</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a172dde7867fa9a68902c3ad7ea9629b0"><div class="ttname"><a href="IRremoteESP8266_8h.html#a172dde7867fa9a68902c3ad7ea9629b0">kToshibaACBits</a></div><div class="ttdeci">const uint16_t kToshibaACBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:1000</div></div>
<div class="ttc" id="aclassIRrecv_html_ab03227955cf7d1d00c1620c55d7f9f18"><div class="ttname"><a href="classIRrecv.html#ab03227955cf7d1d00c1620c55d7f9f18">IRrecv::decodeSony</a></div><div class="ttdeci">bool decodeSony(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSonyMinBits, const bool strict=false)</div><div class="ttdoc">Decode the supplied Sony/SIRC message. Status: STABLE / Should be working. strict mode is ALPHA / Unt...</div><div class="ttdef"><b>Definition:</b> ir_Sony.cpp:121</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a657f8e60bc1f896d4a46ec101c289485"><div class="ttname"><a href="IRremoteESP8266_8h.html#a657f8e60bc1f896d4a46ec101c289485">kDaikinBits</a></div><div class="ttdeci">const uint16_t kDaikinBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:837</div></div>
<div class="ttc" id="aclassIRrecv_html_ae78ef12b8194db5d3cb5a2605d29830d"><div class="ttname"><a href="classIRrecv.html#ae78ef12b8194db5d3cb5a2605d29830d">IRrecv::matchMark</a></div><div class="ttdeci">bool matchMark(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)</div><div class="ttdoc">Check if we match a mark signal(measured) with the desired within +/-tolerance percent,...</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:981</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_aec91e459b1e52765c700f8f7a4723f3b"><div class="ttname"><a href="IRremoteESP8266_8h.html#aec91e459b1e52765c700f8f7a4723f3b">kHitachiAcBits</a></div><div class="ttdeci">const uint16_t kHitachiAcBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:893</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_ac26b896cdc17018269fa881e10e3aabb"><div class="ttname"><a href="IRremoteESP8266_8h.html#ac26b896cdc17018269fa881e10e3aabb">kHitachiAc3Bits</a></div><div class="ttdeci">const uint16_t kHitachiAc3Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:900</div></div>
<div class="ttc" id="aIRrecv_8h_html_aadfa37def10a1adeaf2cf4c09d7504e3"><div class="ttname"><a href="IRrecv_8h.html#aadfa37def10a1adeaf2cf4c09d7504e3">kRawBuf</a></div><div class="ttdeci">const uint16_t kRawBuf</div><div class="ttdef"><b>Definition:</b> IRrecv.h:25</div></div>
<div class="ttc" id="aclassIRrecv_html_aeaa5c07a8b46f8fbb982f996cc1f9f4b"><div class="ttname"><a href="classIRrecv.html#aeaa5c07a8b46f8fbb982f996cc1f9f4b">IRrecv::decode</a></div><div class="ttdeci">bool decode(decode_results *results, irparams_t *save=NULL, uint8_t max_skip=0, uint16_t noise_floor=0)</div><div class="ttdoc">Decodes the received IR message. If the interrupt state is saved, we will immediately resume waiting ...</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:409</div></div>
<div class="ttc" id="aclassIRrecv_html_a78a9487cbe8a562392a07a4090b3091e"><div class="ttname"><a href="classIRrecv.html#a78a9487cbe8a562392a07a4090b3091e">IRrecv::decodePioneer</a></div><div class="ttdeci">bool decodePioneer(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPioneerBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Pioneer message. Status: STABLE / Should be working. (Self decodes &amp; real example...</div><div class="ttdef"><b>Definition:</b> ir_Pioneer.cpp:96</div></div>
<div class="ttc" id="aclassIRrecv_html_a144f64da3b44708394c06b0fbefb6347"><div class="ttname"><a href="classIRrecv.html#a144f64da3b44708394c06b0fbefb6347">IRrecv::getTolerance</a></div><div class="ttdeci">uint8_t getTolerance(void)</div><div class="ttdoc">Get the base tolerance percentage for matching incoming IR messages.</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:338</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_aea0cc15e1c7a6edcd6b60d9ac62d4831"><div class="ttname"><a href="IRremoteESP8266_8h.html#aea0cc15e1c7a6edcd6b60d9ac62d4831">kDishBits</a></div><div class="ttdeci">const uint16_t kDishBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:866</div></div>
<div class="ttc" id="aclassIRrecv_html_ad7347c72b14d9f2f20f65bcf235ab3dc"><div class="ttname"><a href="classIRrecv.html#ad7347c72b14d9f2f20f65bcf235ab3dc">IRrecv::compare</a></div><div class="ttdeci">uint16_t compare(const uint16_t oldval, const uint16_t newval)</div><div class="ttdoc">Compare two tick values.</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:1018</div></div>
<div class="ttc" id="aclassdecode__results_html_a9b750d09f713b0693472f815fd0fd402"><div class="ttname"><a href="classdecode__results.html#a9b750d09f713b0693472f815fd0fd402">decode_results::command</a></div><div class="ttdeci">uint32_t command</div><div class="ttdef"><b>Definition:</b> IRrecv.h:102</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_aecd63891cac014d1b7e344638086ad47"><div class="ttname"><a href="IRremoteESP8266_8h.html#aecd63891cac014d1b7e344638086ad47">kFujitsuAcBits</a></div><div class="ttdeci">const uint16_t kFujitsuAcBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:877</div></div>
<div class="ttc" id="aclassdecode__results_html_a033502b7a6b4b0412e5a2062e33c5f47"><div class="ttname"><a href="classdecode__results.html#a033502b7a6b4b0412e5a2062e33c5f47">decode_results::value</a></div><div class="ttdeci">uint64_t value</div><div class="ttdef"><b>Definition:</b> IRrecv.h:100</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a351efcd1805c87bd338de81dab3f8fb2"><div class="ttname"><a href="IRremoteESP8266_8h.html#a351efcd1805c87bd338de81dab3f8fb2">kArgoBits</a></div><div class="ttdeci">const uint16_t kArgoBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:822</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a10377a40053a12e091dbff2869db0352"><div class="ttname"><a href="IRremoteESP8266_8h.html#a10377a40053a12e091dbff2869db0352">kHitachiAc2StateLength</a></div><div class="ttdeci">const uint16_t kHitachiAc2StateLength</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:897</div></div>
<div class="ttc" id="aclassIRrecv_html_a290a9e6a0b12ef1fe02a92a456c8ad57"><div class="ttname"><a href="classIRrecv.html#a290a9e6a0b12ef1fe02a92a456c8ad57">IRrecv::decodeSamsung36</a></div><div class="ttdeci">bool decodeSamsung36(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsung36Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Samsung36 message. Status: Alpha / Experimental.</div><div class="ttdef"><b>Definition:</b> ir_Samsung.cpp:186</div></div>
<div class="ttc" id="aIRrecv_8h_html_a5abb2b821f207ee9cf35f889f86d0ea3"><div class="ttname"><a href="IRrecv_8h.html#a5abb2b821f207ee9cf35f889f86d0ea3">kFooter</a></div><div class="ttdeci">const uint16_t kFooter</div><div class="ttdef"><b>Definition:</b> IRrecv.h:19</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a9fce002592f9e2488b1b717d0b1a6a40"><div class="ttname"><a href="IRremoteESP8266_8h.html#a9fce002592f9e2488b1b717d0b1a6a40">kNikaiBits</a></div><div class="ttdeci">const uint16_t kNikaiBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:947</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a814dfab515b91887c494237b1f6ebd99"><div class="ttname"><a href="IRremoteESP8266_8h.html#a814dfab515b91887c494237b1f6ebd99">kLutronBits</a></div><div class="ttdeci">const uint16_t kLutronBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:920</div></div>
<div class="ttc" id="astructirparams__t_html_a132d6448ad59f03f6b35c4b04a6d1af4"><div class="ttname"><a href="structirparams__t.html#a132d6448ad59f03f6b35c4b04a6d1af4">irparams_t::timeout</a></div><div class="ttdeci">uint8_t timeout</div><div class="ttdef"><b>Definition:</b> IRrecv.h:79</div></div>
<div class="ttc" id="aclassIRrecv_html_a981cba14551c93af57f9c1c0e1775d12"><div class="ttname"><a href="classIRrecv.html#a981cba14551c93af57f9c1c0e1775d12">IRrecv::decodeCoronaAc</a></div><div class="ttdeci">bool decodeCoronaAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoronaAcBitsShort, const bool strict=true)</div><div class="ttdoc">Decode the supplied CoronaAc message. Status: STABLE / Appears to be working.</div><div class="ttdef"><b>Definition:</b> ir_Corona.cpp:89</div></div>
<div class="ttc" id="aclassIRrecv_html_a6093c4404a9a9d415c5bfeab5ec53be5"><div class="ttname"><a href="classIRrecv.html#a6093c4404a9a9d415c5bfeab5ec53be5">IRrecv::decodeLutron</a></div><div class="ttdeci">bool decodeLutron(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLutronBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Lutron message. Status: STABLE / Working.</div><div class="ttdef"><b>Definition:</b> ir_Lutron.cpp:65</div></div>
<div class="ttc" id="aclassIRrecv_html_a851776d9178aeb706d9a1abd3f254e31"><div class="ttname"><a href="classIRrecv.html#a851776d9178aeb706d9a1abd3f254e31">IRrecv::decodeDISH</a></div><div class="ttdeci">bool decodeDISH(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDishBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied DISH NETWORK message. Status: ALPHA (untested and unconfirmed....</div><div class="ttdef"><b>Definition:</b> ir_Dish.cpp:77</div></div>
<div class="ttc" id="aIRrecv_8h_html_a373dde69c312b0122665e581eea1297b"><div class="ttname"><a href="IRrecv_8h.html#a373dde69c312b0122665e581eea1297b">kRawTick</a></div><div class="ttdeci">const uint16_t kRawTick</div><div class="ttdef"><b>Definition:</b> IRrecv.h:37</div></div>
<div class="ttc" id="aclassIRrecv_html_ab44403411a217eb8ea75271575f8ab83"><div class="ttname"><a href="classIRrecv.html#ab44403411a217eb8ea75271575f8ab83">IRrecv::matchManchesterData</a></div><div class="ttdeci">uint16_t matchManchesterData(volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t half_period, const uint16_t starting_balance=0, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool GEThomas=true)</div><div class="ttdoc">Match &amp; decode a Manchester Code data (&lt;= 64bits.</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:1556</div></div>
<div class="ttc" id="aclassIRrecv_html_a6b5beb7348d807d8d98ae929d005510e"><div class="ttname"><a href="classIRrecv.html#a6b5beb7348d807d8d98ae929d005510e">IRrecv::resume</a></div><div class="ttdeci">void resume(void)</div><div class="ttdoc">Resume collection of received IR data.</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:280</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_aab346c5ad482113978e5a2cbb7a06f27"><div class="ttname"><a href="IRremoteESP8266_8h.html#aab346c5ad482113978e5a2cbb7a06f27">kHaierACYRW02Bits</a></div><div class="ttdeci">const uint16_t kHaierACYRW02Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:890</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_ab466e28528a0d688a1b91e8af69025cb"><div class="ttname"><a href="IRremoteESP8266_8h.html#ab466e28528a0d688a1b91e8af69025cb">kHitachiAc424Bits</a></div><div class="ttdeci">const uint16_t kHitachiAc424Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:906</div></div>
<div class="ttc" id="aclassIRrecv_html_a0d1eec83cf092f5621cb34b3e94777c4"><div class="ttname"><a href="classIRrecv.html#a0d1eec83cf092f5621cb34b3e94777c4">IRrecv::decodeWhirlpoolAC</a></div><div class="ttdeci">bool decodeWhirlpoolAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kWhirlpoolAcBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Whirlpool A/C message. Status: STABLE / Working as intended.</div><div class="ttdef"><b>Definition:</b> ir_Whirlpool.cpp:642</div></div>
<div class="ttc" id="aIRrecv_8h_html_a99bbffe986ad7ba86d2b11e75f4aa50e"><div class="ttname"><a href="IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e">kMarkExcess</a></div><div class="ttdeci">const uint16_t kMarkExcess</div><div class="ttdef"><b>Definition:</b> IRrecv.h:24</div></div>
<div class="ttc" id="aclassIRrecv_html_a281fb9d972fee75db49209c42f649822"><div class="ttname"><a href="classIRrecv.html#a281fb9d972fee75db49209c42f649822">IRrecv::decodeHaierACYRW02</a></div><div class="ttdeci">bool decodeHaierACYRW02(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierACYRW02Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Haier YR-W02 remote A/C message. Status: BETA / Appears to be working.</div><div class="ttdef"><b>Definition:</b> ir_Haier.cpp:1039</div></div>
<div class="ttc" id="aclassIRrecv_html_afe70015c36b1477a5de0c193163e13a7"><div class="ttname"><a href="classIRrecv.html#afe70015c36b1477a5de0c193163e13a7">IRrecv::decodeLG</a></div><div class="ttdeci">bool decodeLG(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLgBits, const bool strict=false)</div><div class="ttdoc">Decode the supplied LG message. Status: STABLE / Working.</div><div class="ttdef"><b>Definition:</b> ir_LG.cpp:154</div></div>
<div class="ttc" id="aclassIRrecv_html_a964af7e72e2133688f0596c718cb98ca"><div class="ttname"><a href="classIRrecv.html#a964af7e72e2133688f0596c718cb98ca">IRrecv::decodeCOOLIX</a></div><div class="ttdeci">bool decodeCOOLIX(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoolixBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Coolix A/C message. Status: STABLE / Known Working.</div><div class="ttdef"><b>Definition:</b> ir_Coolix.cpp:650</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a8a7c7659250a81c7c84fc739eafed13e"><div class="ttname"><a href="IRremoteESP8266_8h.html#a8a7c7659250a81c7c84fc739eafed13e">kLegoPfBits</a></div><div class="ttdeci">const uint16_t kLegoPfBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:915</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a8a74f9d7cec751cc0945fd89fa6237ae"><div class="ttname"><a href="IRremoteESP8266_8h.html#a8a74f9d7cec751cc0945fd89fa6237ae">kSharpBits</a></div><div class="ttdeci">const uint16_t kSharpBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:981</div></div>
<div class="ttc" id="aclassIRrecv_html_a64650ce7dbaf5fc860a6a253d906e9de"><div class="ttname"><a href="classIRrecv.html#a64650ce7dbaf5fc860a6a253d906e9de">IRrecv::decodeGoodweather</a></div><div class="ttdeci">bool decodeGoodweather(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGoodweatherBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Goodweather message. Status: BETA / Probably works.</div><div class="ttdef"><b>Definition:</b> ir_Goodweather.cpp:429</div></div>
<div class="ttc" id="aclassIRrecv_html_a0459a65dd31b215713ad66a1e4f3540e"><div class="ttname"><a href="classIRrecv.html#a0459a65dd31b215713ad66a1e4f3540e">IRrecv::_tolerance</a></div><div class="ttdeci">uint8_t _tolerance</div><div class="ttdef"><b>Definition:</b> IRrecv.h:152</div></div>
<div class="ttc" id="aIRrecv_8h_html_a80a2d3445a1752d18caf307d7677b709"><div class="ttname"><a href="IRrecv_8h.html#a80a2d3445a1752d18caf307d7677b709">kDefaultESP32Timer</a></div><div class="ttdeci">const uint8_t kDefaultESP32Timer</div><div class="ttdef"><b>Definition:</b> IRrecv.h:56</div></div>
<div class="ttc" id="aclassIRrecv_html_ade70777ad0e047e11b99b03d8f5e3728"><div class="ttname"><a href="classIRrecv.html#ade70777ad0e047e11b99b03d8f5e3728">IRrecv::matchManchester</a></div><div class="ttdeci">uint16_t matchManchester(volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t clock_period, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool GEThomas=true)</div><div class="ttdoc">Match &amp; decode a Manchester Code &lt;= 64bit IR message. The data is stored at result_ptr.</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:1449</div></div>
<div class="ttc" id="aclassIRrecv_html_a94545c6a8da027b9cb0e23ecba4c29d8"><div class="ttname"><a href="classIRrecv.html#a94545c6a8da027b9cb0e23ecba4c29d8">IRrecv::decodeInax</a></div><div class="ttdeci">bool decodeInax(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kInaxBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Inax Toilet message. Status: Stable / Known working.</div><div class="ttdef"><b>Definition:</b> ir_Inax.cpp:51</div></div>
<div class="ttc" id="aclassIRrecv_html_ae833bdb8fccc676043fc4ccae432fab1"><div class="ttname"><a href="classIRrecv.html#ae833bdb8fccc676043fc4ccae432fab1">IRrecv::crudeNoiseFilter</a></div><div class="ttdeci">void crudeNoiseFilter(decode_results *results, const uint16_t floor=0)</div><div class="ttdoc">Remove or merge pulses in the capture buffer that are too short.</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:345</div></div>
<div class="ttc" id="aclassIRrecv_html_a122e0dcbf14c90ec2d77399acce21459"><div class="ttname"><a href="classIRrecv.html#a122e0dcbf14c90ec2d77399acce21459">IRrecv::decodeHitachiAC1</a></div><div class="ttdeci">bool decodeHitachiAC1(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc1Bits, const bool strict=true)</div></div>
<div class="ttc" id="aclassIRrecv_html_a18b6cf177364faf11b9a076dd2025eec"><div class="ttname"><a href="classIRrecv.html#a18b6cf177364faf11b9a076dd2025eec">IRrecv::decodeSAMSUNG</a></div><div class="ttdeci">bool decodeSAMSUNG(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsungBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Samsung 32-bit message. Status: STABLE.</div><div class="ttdef"><b>Definition:</b> ir_Samsung.cpp:112</div></div>
<div class="ttc" id="aclassIRrecv_html_aea75ad0ba1d8fec33de16501940f2553"><div class="ttname"><a href="classIRrecv.html#aea75ad0ba1d8fec33de16501940f2553">IRrecv::decodeLegoPf</a></div><div class="ttdeci">bool decodeLegoPf(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLegoPfBits, const bool strict=true)</div><div class="ttdoc">Decode the supplied LEGO Power Functions message. Status: STABLE / Appears to work.</div><div class="ttdef"><b>Definition:</b> ir_Lego.cpp:71</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a2bfaf393c2d77a594f2a0a5a763e84f5"><div class="ttname"><a href="IRremoteESP8266_8h.html#a2bfaf393c2d77a594f2a0a5a763e84f5">kRCMMBits</a></div><div class="ttdeci">const uint16_t kRCMMBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:966</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_ae31945a1ce90b2d4c33b5c91d980d3a7"><div class="ttname"><a href="IRremoteESP8266_8h.html#ae31945a1ce90b2d4c33b5c91d980d3a7">kVestelAcBits</a></div><div class="ttdeci">const uint8_t kVestelAcBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:1009</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_af8441f25b32d113096adeaff331c126a"><div class="ttname"><a href="IRremoteESP8266_8h.html#af8441f25b32d113096adeaff331c126a">kInaxBits</a></div><div class="ttdeci">const uint16_t kInaxBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:907</div></div>
<div class="ttc" id="aclassIRrecv_html_aef9cedf79793806df4cc5376710781bc"><div class="ttname"><a href="classIRrecv.html#aef9cedf79793806df4cc5376710781bc">IRrecv::decodeMitsubishiHeavy</a></div><div class="ttdeci">bool decodeMitsubishiHeavy(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiHeavy152Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Mitsubishi Heavy Industries A/C message. Status: BETA / Appears to be working....</div><div class="ttdef"><b>Definition:</b> ir_MitsubishiHeavy.cpp:1121</div></div>
<div class="ttc" id="aclassIRrecv_html_adb8cbc5c1cb739f33f5be25b3a6c79bd"><div class="ttname"><a href="classIRrecv.html#adb8cbc5c1cb739f33f5be25b3a6c79bd">IRrecv::_unknown_threshold</a></div><div class="ttdeci">uint16_t _unknown_threshold</div><div class="ttdef"><b>Definition:</b> IRrecv.h:157</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a78baf9c97c548618428d2fcfd7cc91d7"><div class="ttname"><a href="IRremoteESP8266_8h.html#a78baf9c97c548618428d2fcfd7cc91d7">kDaikin176Bits</a></div><div class="ttdeci">const uint16_t kDaikin176Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:856</div></div>
<div class="ttc" id="aclassIRrecv_html_a62a04019308b29ae2aea4b3a83ba9155"><div class="ttname"><a href="classIRrecv.html#a62a04019308b29ae2aea4b3a83ba9155">IRrecv::decodeMidea24</a></div><div class="ttdeci">bool decodeMidea24(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMidea24Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Midea24 message. Status: STABLE / Confirmed working on a real device.</div><div class="ttdef"><b>Definition:</b> ir_Midea.cpp:506</div></div>
<div class="ttc" id="aclassIRrecv_html_a9f4a719e756ad78c7dd47186f8bef087"><div class="ttname"><a href="classIRrecv.html#a9f4a719e756ad78c7dd47186f8bef087">IRrecv::disableIRIn</a></div><div class="ttdeci">void disableIRIn(void)</div><div class="ttdoc">Stop collection of any received IR data. Disable any timers and interrupts.</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:264</div></div>
<div class="ttc" id="aclassIRrecv_html_a01c3dda56d6d916076fa1affa2213129"><div class="ttname"><a href="classIRrecv.html#a01c3dda56d6d916076fa1affa2213129">IRrecv::decodeHitachiAc424</a></div><div class="ttdeci">bool decodeHitachiAc424(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc424Bits, const bool strict=true)</div><div class="ttdoc">Decode the supplied Hitachi 53-byte/424-bit A/C message. Status: STABLE / Reported as working.</div><div class="ttdef"><b>Definition:</b> ir_Hitachi.cpp:981</div></div>
<div class="ttc" id="aclassIRrecv_html_a573dbb20695f2ffc808623df8c36280c"><div class="ttname"><a href="classIRrecv.html#a573dbb20695f2ffc808623df8c36280c">IRrecv::ticksHigh</a></div><div class="ttdeci">uint32_t ticksHigh(const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)</div><div class="ttdoc">Calculate the upper bound of the nr. of ticks.</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:895</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a7c1c015cce09284799cbf5a2f21ee170"><div class="ttname"><a href="IRremoteESP8266_8h.html#a7c1c015cce09284799cbf5a2f21ee170">kSamsungBits</a></div><div class="ttdeci">const uint16_t kSamsungBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:967</div></div>
<div class="ttc" id="aclassIRrecv_html_aff11c0c20735b16ce411088003607911"><div class="ttname"><a href="classIRrecv.html#aff11c0c20735b16ce411088003607911">IRrecv::_timer_num</a></div><div class="ttdeci">uint8_t _timer_num</div><div class="ttdef"><b>Definition:</b> IRrecv.h:154</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a89266e9211a81eda22475fb5a258484f"><div class="ttname"><a href="IRremoteESP8266_8h.html#a89266e9211a81eda22475fb5a258484f">kDaikin64Bits</a></div><div class="ttdeci">const uint16_t kDaikin64Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:844</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a317bf475ee4c6ddd802995dc535377d9"><div class="ttname"><a href="IRremoteESP8266_8h.html#a317bf475ee4c6ddd802995dc535377d9">kDaikin216Bits</a></div><div class="ttdeci">const uint16_t kDaikin216Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:859</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_aa19f0122b2f906e5473a6ea232c38974"><div class="ttname"><a href="IRremoteESP8266_8h.html#aa19f0122b2f906e5473a6ea232c38974">kMitsubishi136Bits</a></div><div class="ttdeci">const uint16_t kMitsubishi136Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:934</div></div>
<div class="ttc" id="aclassIRrecv_html_adc2c9bc4c4e5741cfac7468126bf8ca6"><div class="ttname"><a href="classIRrecv.html#adc2c9bc4c4e5741cfac7468126bf8ca6">IRrecv::matchBytes</a></div><div class="ttdeci">uint16_t matchBytes(volatile uint16_t *data_ptr, uint8_t *result_ptr, const uint16_t remaining, const uint16_t nbytes, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)</div><div class="ttdoc">Match &amp; decode the typical data section of an IR message. The bytes are stored at result_ptr....</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:1118</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_ae8349abe183be965e3d051cb736773a8"><div class="ttname"><a href="IRremoteESP8266_8h.html#ae8349abe183be965e3d051cb736773a8">kMitsubishi112Bits</a></div><div class="ttdeci">const uint16_t kMitsubishi112Bits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:937</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a77a0ed1143f5bfec87e0c9fde5c2c425"><div class="ttname"><a href="IRremoteESP8266_8h.html#a77a0ed1143f5bfec87e0c9fde5c2c425">kEpsonBits</a></div><div class="ttdeci">const uint16_t kEpsonBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:869</div></div>
<div class="ttc" id="aclassdecode__results_html_aaeb4b1b2e950bdd181582c385b2f4305"><div class="ttname"><a href="classdecode__results.html#aaeb4b1b2e950bdd181582c385b2f4305">decode_results::state</a></div><div class="ttdeci">uint8_t state[kStateSizeMax]</div><div class="ttdef"><b>Definition:</b> IRrecv.h:104</div></div>
<div class="ttc" id="aclassIRrecv_html_a7c15fbfa7936ca474712a1953911fd06"><div class="ttname"><a href="classIRrecv.html#a7c15fbfa7936ca474712a1953911fd06">IRrecv::decodeHash</a></div><div class="ttdeci">bool decodeHash(decode_results *results)</div><div class="ttdoc">Decode any arbitrary IR message into a 32-bit code value. Instead of decoding using a standard encodi...</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:1039</div></div>
<div class="ttc" id="aIRrecv_8h_html_acc0d1931164a8967c210eb03a2d03e2a"><div class="ttname"><a href="IRrecv_8h.html#acc0d1931164a8967c210eb03a2d03e2a">kSpaceState</a></div><div class="ttdeci">const uint8_t kSpaceState</div><div class="ttdef"><b>Definition:</b> IRrecv.h:33</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_a256bd6093034b3e4c33324680f3a7102"><div class="ttname"><a href="IRremoteESP8266_8h.html#a256bd6093034b3e4c33324680f3a7102">kLgBits</a></div><div class="ttdeci">const uint16_t kLgBits</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:917</div></div>
<div class="ttc" id="aclassIRrecv_html_a0b4221970de0d027b5ae99648fa1c003"><div class="ttname"><a href="classIRrecv.html#a0b4221970de0d027b5ae99648fa1c003">IRrecv::_validTolerance</a></div><div class="ttdeci">uint8_t _validTolerance(const uint8_t percentage)</div><div class="ttdoc">Convert the tolerance percentage into something valid.</div><div class="ttdef"><b>Definition:</b> IRrecv.cpp:873</div></div>
<div class="ttc" id="aIRrecv_8h_html_a0eac186845b9b998a252a3bdfa72e8ed"><div class="ttname"><a href="IRrecv_8h.html#a0eac186845b9b998a252a3bdfa72e8ed">kHeader</a></div><div class="ttdeci">const uint16_t kHeader</div><div class="ttdef"><b>Definition:</b> IRrecv.h:18</div></div>
<div class="ttc" id="aIRrecv_8h_html_a04d9b0c909b377b36af3ece668482ca3"><div class="ttname"><a href="IRrecv_8h.html#a04d9b0c909b377b36af3ece668482ca3">kFnvBasis32</a></div><div class="ttdeci">const uint32_t kFnvBasis32</div><div class="ttdef"><b>Definition:</b> IRrecv.h:53</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,80 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRsend.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">IRsend.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,419 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRsend.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">IRsend.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="IRsend_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstdAc_1_1state__t.html">stdAc::state_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure to hold a common A/C state. <a href="structstdAc_1_1state__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRsend.html">IRsend</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class for sending all basic IR protocols. <a href="classIRsend.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacestdAc"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacestdAc.html">stdAc</a></td></tr>
<tr class="memdesc:namespacestdAc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enumerators and Structures for the Common A/C API. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a99ad268c783486f9b3207cb78f48444f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> { <br />
&#160;&#160;<a class="el" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444facc9ab5e60ac2a9a675ba64bf4bb49dc8">stdAc::opmode_t::kOff</a> = -1,
<a class="el" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444faa8c857c2f1b000c92f9794ebf53888d7">stdAc::opmode_t::kAuto</a> = 0,
<a class="el" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fab9480fe865ab6bbfb66c8308068a06c2">stdAc::opmode_t::kCool</a> = 1,
<a class="el" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444faece059b52386d38cd6da9729cca08b4e">stdAc::opmode_t::kHeat</a> = 2,
<br />
&#160;&#160;<a class="el" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa0d254f21cc940f41cf7cc1c8ff46ce1f">stdAc::opmode_t::kDry</a> = 3,
<a class="el" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa03b7310c6ec7018a07ee9e3ffb95a34b">stdAc::opmode_t::kFan</a> = 4,
<a class="el" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa8dd00ffd575f66172d594e78860aad9f">stdAc::opmode_t::kLastOpmodeEnum</a> = kFan
<br />
}</td></tr>
<tr class="memdesc:a99ad268c783486f9b3207cb78f48444f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Common A/C settings for A/C operating modes. <a href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">More...</a><br /></td></tr>
<tr class="separator:a99ad268c783486f9b3207cb78f48444f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8bb0dbf18fe69f639f4ac0b3ff133383"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> { <br />
&#160;&#160;<a class="el" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa8c857c2f1b000c92f9794ebf53888d7">stdAc::fanspeed_t::kAuto</a> = 0,
<a class="el" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383a8fbc2f6c44a6d70550df79903eb57d48">stdAc::fanspeed_t::kMin</a> = 1,
<a class="el" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383acd8fe42741a3bbc973bbf1d404afeff4">stdAc::fanspeed_t::kLow</a> = 2,
<a class="el" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383a3ce9d817402b59f65fb01ea044bb1ee9">stdAc::fanspeed_t::kMedium</a> = 3,
<br />
&#160;&#160;<a class="el" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa022f15e910eb36278094efb6e808a07">stdAc::fanspeed_t::kHigh</a> = 4,
<a class="el" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa0b1ac8aae6b1cfbbe89085c642b3b4b">stdAc::fanspeed_t::kMax</a> = 5,
<a class="el" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383ab2d2a6993491fd666f1fa0afff5913ad">stdAc::fanspeed_t::kLastFanspeedEnum</a> = kMax
<br />
}</td></tr>
<tr class="memdesc:a8bb0dbf18fe69f639f4ac0b3ff133383"><td class="mdescLeft">&#160;</td><td class="mdescRight">Common A/C settings for Fan Speeds. <a href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">More...</a><br /></td></tr>
<tr class="separator:a8bb0dbf18fe69f639f4ac0b3ff133383"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac07f224c7bb47cac55dd01f24770ef43"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">stdAc::swingv_t</a> { <br />
&#160;&#160;<a class="el" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43acc9ab5e60ac2a9a675ba64bf4bb49dc8">stdAc::swingv_t::kOff</a> = -1,
<a class="el" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43aa8c857c2f1b000c92f9794ebf53888d7">stdAc::swingv_t::kAuto</a> = 0,
<a class="el" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a24d8e31603e486f788826bc24e3a2e1d">stdAc::swingv_t::kHighest</a> = 1,
<a class="el" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43aa022f15e910eb36278094efb6e808a07">stdAc::swingv_t::kHigh</a> = 2,
<br />
&#160;&#160;<a class="el" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43ab3199775e825c139b44e3e9ccf3cbc7e">stdAc::swingv_t::kMiddle</a> = 3,
<a class="el" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43acd8fe42741a3bbc973bbf1d404afeff4">stdAc::swingv_t::kLow</a> = 4,
<a class="el" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a334c684494b7f19d765cf062ae94a314">stdAc::swingv_t::kLowest</a> = 5,
<a class="el" href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a4127912afc084d51c71c4ea0c7dd7b30">stdAc::swingv_t::kLastSwingvEnum</a> = kLowest
<br />
}</td></tr>
<tr class="memdesc:ac07f224c7bb47cac55dd01f24770ef43"><td class="mdescLeft">&#160;</td><td class="mdescRight">Common A/C settings for Vertical Swing. <a href="namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43">More...</a><br /></td></tr>
<tr class="separator:ac07f224c7bb47cac55dd01f24770ef43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae50ee315fa9c9ec1a4078da40d6b147"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">stdAc::swingh_t</a> { <br />
&#160;&#160;<a class="el" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147acc9ab5e60ac2a9a675ba64bf4bb49dc8">stdAc::swingh_t::kOff</a> = -1,
<a class="el" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147aa8c857c2f1b000c92f9794ebf53888d7">stdAc::swingh_t::kAuto</a> = 0,
<a class="el" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a375fe2e8ea70186052eeb2983baa1d7d">stdAc::swingh_t::kLeftMax</a> = 1,
<a class="el" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a2d5fde1d924910a2a01ecd8e70a87c28">stdAc::swingh_t::kLeft</a> = 2,
<br />
&#160;&#160;<a class="el" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147ab3199775e825c139b44e3e9ccf3cbc7e">stdAc::swingh_t::kMiddle</a> = 3,
<a class="el" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a2dd2b017192f8a09367d48c7648213c9">stdAc::swingh_t::kRight</a> = 4,
<a class="el" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a856bf9929ade459f451be17c97db4b32">stdAc::swingh_t::kRightMax</a> = 5,
<a class="el" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a9934dc3d02540583d5f13be6716739cd">stdAc::swingh_t::kWide</a> = 6,
<br />
&#160;&#160;<a class="el" href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147ac5bc5e605db47897c114283926ba7fe4">stdAc::swingh_t::kLastSwinghEnum</a> = kWide
<br />
}</td></tr>
<tr class="memdesc:aae50ee315fa9c9ec1a4078da40d6b147"><td class="mdescLeft">&#160;</td><td class="mdescRight">Common A/C settings for Horizontal Swing. <a href="namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147">More...</a><br /></td></tr>
<tr class="separator:aae50ee315fa9c9ec1a4078da40d6b147"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7204e78a1fe37a819c0b66f87a685dc0"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0">fujitsu_ac_remote_model_t</a> { <br />
&#160;&#160;<a class="el" href="IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6ccf47af1067e794e02e21f03389297b">ARRAH2E</a> = 1,
<a class="el" href="IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6f6fcd0be917d91b71c1b80b5446ee5b">ARDB1</a>,
<a class="el" href="IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a2443ff6f0181dbc1af275c709d67147a">ARREB1E</a>,
<a class="el" href="IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0acbca1f3d199103d8cb9d856b9089cdc4">ARJW2</a>,
<br />
&#160;&#160;<a class="el" href="IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0aee3994c5a4a8447463d67df2cdf5a946">ARRY4</a>
<br />
}</td></tr>
<tr class="memdesc:a7204e78a1fe37a819c0b66f87a685dc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fujitsu A/C model numbers. <a href="IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0">More...</a><br /></td></tr>
<tr class="separator:a7204e78a1fe37a819c0b66f87a685dc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af65070c92b97fa00b2de3818c46039c9"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9">gree_ac_remote_model_t</a> { <a class="el" href="IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9a6b29d752ac8bafc8fedabc1282fccfb6">YAW1F</a> = 1,
<a class="el" href="IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9a5d6dadebb4f337aa20ea06a87ae9b34a">YBOFB</a>
}</td></tr>
<tr class="memdesc:af65070c92b97fa00b2de3818c46039c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gree A/C model numbers. <a href="IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9">More...</a><br /></td></tr>
<tr class="separator:af65070c92b97fa00b2de3818c46039c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd0c6107b5a6cab2080b18a8de14ea49"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49">hitachi_ac1_remote_model_t</a> { <a class="el" href="IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49afed7c9dd67250bb1e72081e5f05b35f8">R_LT0541_HTA_A</a> = 1,
<a class="el" href="IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49a03b6e058b4cfeb6719906bc3cd57594f">R_LT0541_HTA_B</a>
}</td></tr>
<tr class="memdesc:acd0c6107b5a6cab2080b18a8de14ea49"><td class="mdescLeft">&#160;</td><td class="mdescRight">HITACHI_AC1 A/C model numbers. <a href="IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49">More...</a><br /></td></tr>
<tr class="separator:acd0c6107b5a6cab2080b18a8de14ea49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b797a5e5176ac0eef49810bf7f40e6f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6f">panasonic_ac_remote_model_t</a> { <br />
&#160;&#160;<a class="el" href="IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa3b23623c9580717d0ade5137200ae2a4">kPanasonicUnknown</a> = 0,
<a class="el" href="IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa71ceb4b576a03a47f0d945323b896cd6">kPanasonicLke</a> = 1,
<a class="el" href="IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6faf70fc847e204f60ab1dc5ecb330fc790">kPanasonicNke</a> = 2,
<a class="el" href="IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fac8df2e0cfd553b0103f4c06a0fd573fd">kPanasonicDke</a> = 3,
<br />
&#160;&#160;<a class="el" href="IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fabf39cff180c071fbc44601eeded236c4">kPanasonicJke</a> = 4,
<a class="el" href="IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa537e8c640473597d2a1cb832498f9cb0">kPanasonicCkp</a> = 5,
<a class="el" href="IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fab809a062f38eb61589cf5aa2db5789db">kPanasonicRkr</a> = 6
<br />
}</td></tr>
<tr class="memdesc:a1b797a5e5176ac0eef49810bf7f40e6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Panasonic A/C model numbers. <a href="IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6f">More...</a><br /></td></tr>
<tr class="separator:a1b797a5e5176ac0eef49810bf7f40e6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2">whirlpool_ac_remote_model_t</a> { <a class="el" href="IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2a868d69f0605cf9151b0163a3481e2fb9">DG11J13A</a> = 1,
<a class="el" href="IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2adaecfc16f36975f231db2507a8a36c0c">DG11J191</a>
}</td></tr>
<tr class="memdesc:ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whirlpool A/C model numbers. <a href="IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2">More...</a><br /></td></tr>
<tr class="separator:ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50c54713e16502d280723334879dc83b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRsend_8h.html#a50c54713e16502d280723334879dc83b">lg_ac_remote_model_t</a> { <a class="el" href="IRsend_8h.html#a50c54713e16502d280723334879dc83bada534bddbb58907faa6c7eae385ec790">GE6711AR2853M</a> = 1,
<a class="el" href="IRsend_8h.html#a50c54713e16502d280723334879dc83ba37d3851f43307f1e1eac46c5fbf3f08a">AKB75215403</a>
}</td></tr>
<tr class="memdesc:a50c54713e16502d280723334879dc83b"><td class="mdescLeft">&#160;</td><td class="mdescRight">LG A/C model numbers. <a href="IRsend_8h.html#a50c54713e16502d280723334879dc83b">More...</a><br /></td></tr>
<tr class="separator:a50c54713e16502d280723334879dc83b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a3a451a4e72e39a4bbf75c62af0ac62f5"><td class="memItemLeft" align="right" valign="top">const int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRsend_8h.html#a3a451a4e72e39a4bbf75c62af0ac62f5">kPeriodOffset</a> = -2</td></tr>
<tr class="separator:a3a451a4e72e39a4bbf75c62af0ac62f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:affa33c170fe058b783372852fca7cc5b"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRsend_8h.html#affa33c170fe058b783372852fca7cc5b">kDutyDefault</a> = 50</td></tr>
<tr class="separator:affa33c170fe058b783372852fca7cc5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac076e3f79a3d8d2dae9fc248a6f571e2"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRsend_8h.html#ac076e3f79a3d8d2dae9fc248a6f571e2">kDutyMax</a> = 100</td></tr>
<tr class="separator:ac076e3f79a3d8d2dae9fc248a6f571e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a527e66125f3ae6ce87adbc72eab7d0b9"><td class="memItemLeft" align="right" valign="top">const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRsend_8h.html#a527e66125f3ae6ce87adbc72eab7d0b9">kMaxAccurateUsecDelay</a> = 16383</td></tr>
<tr class="separator:a527e66125f3ae6ce87adbc72eab7d0b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad49e9828319afbad49fd5082c50ef4a7"><td class="memItemLeft" align="right" valign="top">const uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRsend_8h.html#ad49e9828319afbad49fd5082c50ef4a7">kDefaultMessageGap</a> = 100000</td></tr>
<tr class="separator:ad49e9828319afbad49fd5082c50ef4a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="a7204e78a1fe37a819c0b66f87a685dc0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7204e78a1fe37a819c0b66f87a685dc0">&#9670;&nbsp;</a></span>fujitsu_ac_remote_model_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0">fujitsu_ac_remote_model_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fujitsu A/C model numbers. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a7204e78a1fe37a819c0b66f87a685dc0a6ccf47af1067e794e02e21f03389297b"></a>ARRAH2E&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a7204e78a1fe37a819c0b66f87a685dc0a6f6fcd0be917d91b71c1b80b5446ee5b"></a>ARDB1&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a7204e78a1fe37a819c0b66f87a685dc0a2443ff6f0181dbc1af275c709d67147a"></a>ARREB1E&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a7204e78a1fe37a819c0b66f87a685dc0acbca1f3d199103d8cb9d856b9089cdc4"></a>ARJW2&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a7204e78a1fe37a819c0b66f87a685dc0aee3994c5a4a8447463d67df2cdf5a946"></a>ARRY4&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<a id="af65070c92b97fa00b2de3818c46039c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af65070c92b97fa00b2de3818c46039c9">&#9670;&nbsp;</a></span>gree_ac_remote_model_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9">gree_ac_remote_model_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Gree A/C model numbers. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="af65070c92b97fa00b2de3818c46039c9a6b29d752ac8bafc8fedabc1282fccfb6"></a>YAW1F&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="af65070c92b97fa00b2de3818c46039c9a5d6dadebb4f337aa20ea06a87ae9b34a"></a>YBOFB&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<a id="acd0c6107b5a6cab2080b18a8de14ea49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd0c6107b5a6cab2080b18a8de14ea49">&#9670;&nbsp;</a></span>hitachi_ac1_remote_model_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49">hitachi_ac1_remote_model_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>HITACHI_AC1 A/C model numbers. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="acd0c6107b5a6cab2080b18a8de14ea49afed7c9dd67250bb1e72081e5f05b35f8"></a>R_LT0541_HTA_A&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="acd0c6107b5a6cab2080b18a8de14ea49a03b6e058b4cfeb6719906bc3cd57594f"></a>R_LT0541_HTA_B&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<a id="a50c54713e16502d280723334879dc83b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a50c54713e16502d280723334879dc83b">&#9670;&nbsp;</a></span>lg_ac_remote_model_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="IRsend_8h.html#a50c54713e16502d280723334879dc83b">lg_ac_remote_model_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>LG A/C model numbers. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a50c54713e16502d280723334879dc83bada534bddbb58907faa6c7eae385ec790"></a>GE6711AR2853M&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a50c54713e16502d280723334879dc83ba37d3851f43307f1e1eac46c5fbf3f08a"></a>AKB75215403&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<a id="a1b797a5e5176ac0eef49810bf7f40e6f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b797a5e5176ac0eef49810bf7f40e6f">&#9670;&nbsp;</a></span>panasonic_ac_remote_model_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6f">panasonic_ac_remote_model_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Panasonic A/C model numbers. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a1b797a5e5176ac0eef49810bf7f40e6fa3b23623c9580717d0ade5137200ae2a4"></a>kPanasonicUnknown&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a1b797a5e5176ac0eef49810bf7f40e6fa71ceb4b576a03a47f0d945323b896cd6"></a>kPanasonicLke&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a1b797a5e5176ac0eef49810bf7f40e6faf70fc847e204f60ab1dc5ecb330fc790"></a>kPanasonicNke&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a1b797a5e5176ac0eef49810bf7f40e6fac8df2e0cfd553b0103f4c06a0fd573fd"></a>kPanasonicDke&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a1b797a5e5176ac0eef49810bf7f40e6fabf39cff180c071fbc44601eeded236c4"></a>kPanasonicJke&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a1b797a5e5176ac0eef49810bf7f40e6fa537e8c640473597d2a1cb832498f9cb0"></a>kPanasonicCkp&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a1b797a5e5176ac0eef49810bf7f40e6fab809a062f38eb61589cf5aa2db5789db"></a>kPanasonicRkr&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<a id="ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2">&#9670;&nbsp;</a></span>whirlpool_ac_remote_model_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2">whirlpool_ac_remote_model_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Whirlpool A/C model numbers. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2a868d69f0605cf9151b0163a3481e2fb9"></a>DG11J13A&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2adaecfc16f36975f231db2507a8a36c0c"></a>DG11J191&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="ad49e9828319afbad49fd5082c50ef4a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad49e9828319afbad49fd5082c50ef4a7">&#9670;&nbsp;</a></span>kDefaultMessageGap</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint32_t kDefaultMessageGap = 100000</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="affa33c170fe058b783372852fca7cc5b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#affa33c170fe058b783372852fca7cc5b">&#9670;&nbsp;</a></span>kDutyDefault</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kDutyDefault = 50</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac076e3f79a3d8d2dae9fc248a6f571e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac076e3f79a3d8d2dae9fc248a6f571e2">&#9670;&nbsp;</a></span>kDutyMax</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kDutyMax = 100</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a527e66125f3ae6ce87adbc72eab7d0b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a527e66125f3ae6ce87adbc72eab7d0b9">&#9670;&nbsp;</a></span>kMaxAccurateUsecDelay</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint16_t kMaxAccurateUsecDelay = 16383</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3a451a4e72e39a4bbf75c62af0ac62f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a451a4e72e39a4bbf75c62af0ac62f5">&#9670;&nbsp;</a></span>kPeriodOffset</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const int8_t kPeriodOffset = -2</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,383 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRtext.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">IRtext.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="IRtext_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright 2019 - David Conran (@crankyoldgit)</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// This header file is to be included in files **other than** &#39;IRtext.cpp&#39;.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// WARNING: Do not edit this file! This file is automatically generated by</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// &#39;tools/generate_irtext_h.sh&#39;.</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; </div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#ifndef IRTEXT_H_</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#define IRTEXT_H_</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; </div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="i18n_8h.html">i18n.h</a>&quot;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; </div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// Constant text to be shared across all object files.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This means there is only one copy of the character/string/text etc.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="IRtext_8h.html#a277b588db53ec31ab7b0d287310c6d50">kTimeSep</a>;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a084c940b7221cd1d85d4a3b58063051d">k3DStr</a>;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a7425119d393b134c4659db9d35691e35">k6thSenseStr</a>;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#acfcc1bc573f4520f3e37977a949b74e8">k8CHeatStr</a>;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a0f7e35a10e28e403da578c85b0e6b180">kAirFlowStr</a>;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="IRtext_8h.html#aa0dfe94cd4cba3bec642328f399dc775">kAllProtocolNamesStr</a>;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a0fc9126a02b933a2af702cd6fdcb47ea">kAutomaticStr</a>;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a15a085c4f9e89926d2c165de4b1755d9">kAutoStr</a>;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a2e98c29968ade682d94f35e28364c878">kBeepStr</a>;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#aaf3e1b0041b00b261dfd949b41569d94">kBitsStr</a>;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#accfb2322a40cfaf6707394e43f39e2a3">kBottomStr</a>;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#af4f31b53c295a877507e3ef5a5fbbc9d">kBreezeStr</a>;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a58bf62453a96d4e84bd1da3449b8799e">kButtonStr</a>;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ab64c4cdebbc72cbb62ae6cd9a449876b">kCancelStr</a>;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#aa47afe8f4c175954e9439c0c9e48c83e">kCeilingStr</a>;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#aae21484e9f049a7cfa507068abd3915e">kCelsiusStr</a>;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#aab13bc11db65584fbb8a61c686d67228">kCentreStr</a>;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a46e6bd06cfbf5f462042d7c720db01ae">kChangeStr</a>;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a0ba8b339babc7f7f26dbab2399bcc578">kCirculateStr</a>;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a45c17b23773e9dcded65a82577b00263">kCleanStr</a>;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a6e4b8f591a1d3d399a559d41847b3fa8">kClockStr</a>;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a58a9da5cec40746dbe20455c6ef6c8fd">kCodeStr</a>;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#aab1b0d2ea5169c1e1d8eff4daef36512">kColonSpaceStr</a>;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a20037561545d4ba4cfe66c1e103ecde1">kComfortStr</a>;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#afdc9e8cc5c8c5c03749898d4f2d38606">kCommandStr</a>;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a48f5dfcf2e0f13f502980d42e879aec3">kCommaSpaceStr</a>;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ac25d86b97b8e53292dc8d0604ae263a3">kCoolStr</a>;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#aa779ae24412ef82ee3d1eade3f0381ae">kDaysStr</a>;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#adb64531a5054629613696f9af39420e2">kDayStr</a>;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a98f3ba92617c82c9091f155eebcdb3f3">kDisplayTempStr</a>;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a1f452a2ac1a2b89b9c71cf64c177f6bd">kDownStr</a>;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#aa0f25fa3aa8d26f4635c38e563a974f5">kDryStr</a>;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ab0b71c4429416a581a393f07e898bade">kEconoStr</a>;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ae1395c08682a2b858261d76b97311f4f">kEyeAutoStr</a>;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a84f6d62456976cc31fe6b1648182a885">kEyeStr</a>;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a3dc9321c4146369e0e0794e6a4de1988">kFalseStr</a>;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a220378c7b69db06362af5ad932965628">kFanOnlyStr</a>;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#af7a0d76c40f3173a3e1367665d789300">kFanStr</a>;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a82c26d9c7690ce001223e2a7cf8664d8">kFastStr</a>;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a5b3133e24c729077da411e08119033be">kFilterStr</a>;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ad9112f221a20ab498c5f133c4cea0b14">kFixedStr</a>;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a47a659e1c6373c4af92f4261148f695b">kFollowStr</a>;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#adc8991e424df3ebf2f47ffc2854057f2">kFreshStr</a>;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a7ef833cf90df2c97ef46c5c4b6225a42">kHealthStr</a>;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a058df7d2db245e307719d025352d464d">kHeatStr</a>;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ad7706307f507466526b4288e33385bde">kHighestStr</a>;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a5b4ade5e08f30c5e9a61c813bb2046f1">kHighStr</a>;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#aa6fe661cdd9e2f1dc30d6fee2980cadd">kHiStr</a>;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#adb2d0f01f1429b0f3eb7193519fe3d6e">kHoldStr</a>;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a10ecbc18040f0d0ed88b728c18b0a161">kHoursStr</a>;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a67a94ecb5a557b5335a8085cf1d8cdd6">kHourStr</a>;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a25365e722200ac40d581c4f585f9ae2f">kHumidStr</a>;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a40f90b18252e14a73dd91527f621e35f">kIFeelStr</a>;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a55c406749cb48970c11c58ec83ef97eb">kInsideStr</a>;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#add28006fe2f8ac70db1b5048c85be84b">kIonStr</a>;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#aa9ffd7c6e6921607653ed5dc1fea4f32">kLastStr</a>;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ab2fd48f052fcfed8ca779ca499edcdbf">kLeftMaxStr</a>;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a001f11495c7c9452ceec68455ae524bf">kLeftStr</a>;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a926ebb4be14179afdc55d5524c8eb5da">kLightStr</a>;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#af9ac8ce54e78f0d8f7e0043d08e6256c">kLightToggleStr</a>;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#abf3295aeb3dfb7048e677d8d6e65e47c">kLoStr</a>;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a7d265b75ed59c0be3c6b72ec0eaf8aa2">kLoudStr</a>;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ae389ed4ed6982d4617ee3f3e82ce388c">kLowerStr</a>;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a31a34e51d7f1f9360cc3a7ea3f2bf7a3">kLowestStr</a>;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a09c0f7f1b07f7591bdbe56fd8a18f7ea">kLowStr</a>;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#aa8d9143da032cdc1accf7f4441b05bc8">kManualStr</a>;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a487173616cc3fced0489c01c11333912">kMaximumStr</a>;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#aac197960695463757652bc643efdcd59">kMaxLeftStr</a>;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a0f888d5c39cf82b2c02a7caad10c716e">kMaxRightStr</a>;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a7f4b2ff4134386a09e2bcb5f71f591cb">kMaxStr</a>;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a122ee1c6b866267f771888a7d7b2969b">kMediumStr</a>;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a18f613c7f11f6f746227cfa8cc1e00e0">kMedStr</a>;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#abbd5b682b584b737c76bded900a6ffad">kMiddleStr</a>;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a571a28fe4174574caac4d93fb09ae196">kMidStr</a>;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a4f6fee52ae5f7f9c8fe791dbae762607">kMinimumStr</a>;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a4940a3f71a484f936d3e58b9573931a8">kMinStr</a>;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a3358666a695e8d54c23b20dc6a371a38">kMinutesStr</a>;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a54df015b1adadb211a30f826999c78f6">kMinuteStr</a>;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a4a553cfcc7ca2a8cea8e1263f5f6c186">kModelStr</a>;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a6666695e388b607bfd3bb0e6efd4193f">kModeStr</a>;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a693b29e4764d959dac781a0992f2bf30">kMouldStr</a>;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ae99940df2a9243fd7fe6f3814c0802dd">kMoveStr</a>;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a5d094344fba1715dbde69ff947775264">kNAStr</a>;</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#afe6519eaae5b1fb4d110529ce98f05b0">kNightStr</a>;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a51c9fb58ee7d01e96e2571018aea746d">kNoStr</a>;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a6a3c0965a32c36d9b5aa4918b473cc12">kNowStr</a>;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a95f119413a113c9a2e8c246892b8c52a">kOffStr</a>;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a818275085f8a8d7c083b66f081689b1f">kOffTimerStr</a>;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#aaf4ffad7f827a2ce8512e644bc9c25c7">kOnStr</a>;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a9f355a0d834790287d95eea30b57564d">kOnTimerStr</a>;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#afaf12ae53365f790b47ff3790e94cc1c">kOutsideQuietStr</a>;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ada5c81e0fcc4073d6f51e7447e8c5da0">kOutsideStr</a>;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a7980630cd028febca8245730dffa684b">kPowerfulStr</a>;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a47a76dc8d87d9694a36c6417d7e19dda">kPowerStr</a>;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#afd802a94c6146efb7812ef89f3bf0cc5">kPowerToggleStr</a>;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#adb54b8d070a4ba7f08b7d2d0f1c03d1c">kPowerButtonStr</a>;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a9833364e538f50be227ff6c0b01f8f7c">kPreviousPowerStr</a>;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ac50f97a0d33041fe4bba6e02c500c8ef">kProtocolStr</a>;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#aae574dbb4b9f70db0e64386d61c21beb">kPurifyStr</a>;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a7086660370d73d6f499972cf802db8f7">kQuietStr</a>;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a74a53cc1564f75b36269eb1ca8c6235b">kRepeatStr</a>;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ac7a90008560fd1e7b4ed240f354d8fae">kRightMaxStr</a>;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a953f9c48fcf87e81bf6f383e8fe8b1dd">kRightStr</a>;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a5358a85538e4643c1cc109a7a0b90079">kRoomStr</a>;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#acb40b78a5269c43cc3e4f44d3da01069">kSaveStr</a>;</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ad736b59d3fe45b3c06bd301af4d7b455">kSecondsStr</a>;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ad3489e1c008bc517b8bf0271c40252d1">kSecondStr</a>;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a56ee9a96dd0a7ee0a5f95c286f6ea7e8">kSensorStr</a>;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a03e76a09bade0c229fea1ce31fe8c9a1">kSensorTempStr</a>;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a31d3426b8a8d1a35c47c88ef00023fce">kSetStr</a>;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a8efb4256a49dc0acd27d6995851d585e">kSilentStr</a>;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#af9ac743c367e179723b128ad69f124c5">kSleepStr</a>;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a86639857f884487cf3bedc91e71d6faa">kSleepTimerStr</a>;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a171736ab5e3d59198ed740ea5fd93473">kSlowStr</a>;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a42a2d6b1e764138a5e20b7a34e0cff03">kSpaceLBraceStr</a>;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ad030c0930697d3c295f3783e8519995c">kStartStr</a>;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ad8cc5f179089e8497a9670492429d7e3">kStepStr</a>;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a7037a67c71778fe06f9dc9b4363f6f9b">kStopStr</a>;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#af83fbe756a22ef800d40bc738be886c7">kSuperStr</a>;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#acfad569446290c1da0c102b98344411c">kSwingHStr</a>;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a56d1a94eae3422758b2762da008e243c">kSwingStr</a>;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a0c801e35becc1eab4cdf0076e1c99485">kSwingVModeStr</a>;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a8415af77afcb671c3729d604be51fd22">kSwingVStr</a>;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a27ae4d475898878bd8e71111066629c6">kSwingVToggleStr</a>;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a3d367a899d7e8ed20844bb3c48bf6395">kTempDownStr</a>;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a87652df1cf724353547f27a9ebde5edb">kTempStr</a>;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a71687df5bc94e4ca18cf59c9ff238e86">kTempUpStr</a>;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a837ecfeff9a1bc7546016229e9f2ddfb">kThreeLetterDayOfWeekStr</a>;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a36fa3584a89f6e48757eba8f3df7e109">kTimerStr</a>;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a05b1e2f809dadf05e22e1cb1d1a7f07e">kToggleStr</a>;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a6bb6abfc54409b801dcb591f036635d2">kTopStr</a>;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#aca6e78a25b9dacd2508069f0a6b919c0">kTrueStr</a>;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a3ced6d2a545174133308d7803157f7f8">kTurboStr</a>;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#aa59176b31741b60729d4279817a7da1b">kUnknownStr</a>;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a5aea60591627481d90688f655b2eb82a">kUpperStr</a>;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a8672abbd2a279c032f0435ed75143b1a">kUpStr</a>;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#add1af6d900b500ca7affff3c9ff02d29">kWallStr</a>;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#ab59fa6f63401196c0ff32aba6da9d9aa">kWeeklyTimerStr</a>;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a6fe3dbd6899e85e79e517f71cc74a87b">kWideStr</a>;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a8bc9343f209803dbab3e765e39b41b4d">kWifiStr</a>;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a7ddc859861308f2f9077abcec2a4b571">kXFanStr</a>;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a95ca78b5cc3caa31c564a28480379fae">kYesStr</a>;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="IRtext_8h.html#a100dc6d7c4d53bffa00a24a582ace80f">kZoneFollowStr</a>;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; </div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor">#endif // IRTEXT_H_</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aIRtext_8h_html_aca6e78a25b9dacd2508069f0a6b919c0"><div class="ttname"><a href="IRtext_8h.html#aca6e78a25b9dacd2508069f0a6b919c0">kTrueStr</a></div><div class="ttdeci">const char * kTrueStr</div><div class="ttdoc">&quot;True&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:168</div></div>
<div class="ttc" id="aIRtext_8h_html_adb2d0f01f1429b0f3eb7193519fe3d6e"><div class="ttname"><a href="IRtext_8h.html#adb2d0f01f1429b0f3eb7193519fe3d6e">kHoldStr</a></div><div class="ttdeci">const char * kHoldStr</div><div class="ttdoc">&quot;Hold&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:57</div></div>
<div class="ttc" id="aIRtext_8h_html_a7037a67c71778fe06f9dc9b4363f6f9b"><div class="ttname"><a href="IRtext_8h.html#a7037a67c71778fe06f9dc9b4363f6f9b">kStopStr</a></div><div class="ttdeci">const char * kStopStr</div><div class="ttdoc">&quot;Stop&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:68</div></div>
<div class="ttc" id="aIRtext_8h_html_a7086660370d73d6f499972cf802db8f7"><div class="ttname"><a href="IRtext_8h.html#a7086660370d73d6f499972cf802db8f7">kQuietStr</a></div><div class="ttdeci">const char * kQuietStr</div><div class="ttdoc">&quot;Quiet&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:30</div></div>
<div class="ttc" id="aIRtext_8h_html_aaf3e1b0041b00b261dfd949b41569d94"><div class="ttname"><a href="IRtext_8h.html#aaf3e1b0041b00b261dfd949b41569d94">kBitsStr</a></div><div class="ttdeci">const char * kBitsStr</div><div class="ttdoc">&quot;Bits&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:173</div></div>
<div class="ttc" id="aIRtext_8h_html_adb54b8d070a4ba7f08b7d2d0f1c03d1c"><div class="ttname"><a href="IRtext_8h.html#adb54b8d070a4ba7f08b7d2d0f1c03d1c">kPowerButtonStr</a></div><div class="ttdeci">const char * kPowerButtonStr</div><div class="ttdoc">&quot;Power Button&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:137</div></div>
<div class="ttc" id="aIRtext_8h_html_a122ee1c6b866267f771888a7d7b2969b"><div class="ttname"><a href="IRtext_8h.html#a122ee1c6b866267f771888a7d7b2969b">kMediumStr</a></div><div class="ttdeci">const char * kMediumStr</div><div class="ttdoc">&quot;Medium&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:111</div></div>
<div class="ttc" id="aIRtext_8h_html_ad8cc5f179089e8497a9670492429d7e3"><div class="ttname"><a href="IRtext_8h.html#ad8cc5f179089e8497a9670492429d7e3">kStepStr</a></div><div class="ttdeci">const char * kStepStr</div><div class="ttdoc">&quot;Step&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:83</div></div>
<div class="ttc" id="aIRtext_8h_html_a8efb4256a49dc0acd27d6995851d585e"><div class="ttname"><a href="IRtext_8h.html#a8efb4256a49dc0acd27d6995851d585e">kSilentStr</a></div><div class="ttdeci">const char * kSilentStr</div><div class="ttdoc">&quot;Silent&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:61</div></div>
<div class="ttc" id="aIRtext_8h_html_a9f355a0d834790287d95eea30b57564d"><div class="ttname"><a href="IRtext_8h.html#a9f355a0d834790287d95eea30b57564d">kOnTimerStr</a></div><div class="ttdeci">const char * kOnTimerStr</div><div class="ttdoc">&quot;OnTimer&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:42</div></div>
<div class="ttc" id="aIRtext_8h_html_abf3295aeb3dfb7048e677d8d6e65e47c"><div class="ttname"><a href="IRtext_8h.html#abf3295aeb3dfb7048e677d8d6e65e47c">kLoStr</a></div><div class="ttdeci">const char * kLoStr</div><div class="ttdoc">&quot;Lo&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:119</div></div>
<div class="ttc" id="aIRtext_8h_html_a56d1a94eae3422758b2762da008e243c"><div class="ttname"><a href="IRtext_8h.html#a56d1a94eae3422758b2762da008e243c">kSwingStr</a></div><div class="ttdeci">const char * kSwingStr</div><div class="ttdoc">&quot;Swing&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:32</div></div>
<div class="ttc" id="aIRtext_8h_html_a58a9da5cec40746dbe20455c6ef6c8fd"><div class="ttname"><a href="IRtext_8h.html#a58a9da5cec40746dbe20455c6ef6c8fd">kCodeStr</a></div><div class="ttdeci">const char * kCodeStr</div><div class="ttdoc">&quot;Code&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:172</div></div>
<div class="ttc" id="aIRtext_8h_html_ad736b59d3fe45b3c06bd301af4d7b455"><div class="ttname"><a href="IRtext_8h.html#ad736b59d3fe45b3c06bd301af4d7b455">kSecondsStr</a></div><div class="ttdeci">const char * kSecondsStr</div><div class="ttdoc">&quot;Seconds&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:162</div></div>
<div class="ttc" id="aIRtext_8h_html_a31d3426b8a8d1a35c47c88ef00023fce"><div class="ttname"><a href="IRtext_8h.html#a31d3426b8a8d1a35c47c88ef00023fce">kSetStr</a></div><div class="ttdeci">const char * kSetStr</div><div class="ttdoc">&quot;Set&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:70</div></div>
<div class="ttc" id="aIRtext_8h_html_aa6fe661cdd9e2f1dc30d6fee2980cadd"><div class="ttname"><a href="IRtext_8h.html#aa6fe661cdd9e2f1dc30d6fee2980cadd">kHiStr</a></div><div class="ttdeci">const char * kHiStr</div><div class="ttdoc">&quot;Hi&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:115</div></div>
<div class="ttc" id="aIRtext_8h_html_a74a53cc1564f75b36269eb1ca8c6235b"><div class="ttname"><a href="IRtext_8h.html#a74a53cc1564f75b36269eb1ca8c6235b">kRepeatStr</a></div><div class="ttdeci">const char * kRepeatStr</div><div class="ttdoc">&quot;Repeat&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:171</div></div>
<div class="ttc" id="aIRtext_8h_html_aa47afe8f4c175954e9439c0c9e48c83e"><div class="ttname"><a href="IRtext_8h.html#aa47afe8f4c175954e9439c0c9e48c83e">kCeilingStr</a></div><div class="ttdeci">const char * kCeilingStr</div><div class="ttdoc">&quot;Ceiling&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:92</div></div>
<div class="ttc" id="aIRtext_8h_html_afd802a94c6146efb7812ef89f3bf0cc5"><div class="ttname"><a href="IRtext_8h.html#afd802a94c6146efb7812ef89f3bf0cc5">kPowerToggleStr</a></div><div class="ttdeci">const char * kPowerToggleStr</div><div class="ttdoc">&quot;Power Toggle&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:136</div></div>
<div class="ttc" id="aIRtext_8h_html_a55c406749cb48970c11c58ec83ef97eb"><div class="ttname"><a href="IRtext_8h.html#a55c406749cb48970c11c58ec83ef97eb">kInsideStr</a></div><div class="ttdeci">const char * kInsideStr</div><div class="ttdoc">&quot;Inside&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:85</div></div>
<div class="ttc" id="aIRtext_8h_html_a3d367a899d7e8ed20844bb3c48bf6395"><div class="ttname"><a href="IRtext_8h.html#a3d367a899d7e8ed20844bb3c48bf6395">kTempDownStr</a></div><div class="ttdeci">const char * kTempDownStr</div><div class="ttdoc">&quot;Temp Down&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:66</div></div>
<div class="ttc" id="aIRtext_8h_html_ae99940df2a9243fd7fe6f3814c0802dd"><div class="ttname"><a href="IRtext_8h.html#ae99940df2a9243fd7fe6f3814c0802dd">kMoveStr</a></div><div class="ttdeci">const char * kMoveStr</div><div class="ttdoc">&quot;Move&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:69</div></div>
<div class="ttc" id="aIRtext_8h_html_aab1b0d2ea5169c1e1d8eff4daef36512"><div class="ttname"><a href="IRtext_8h.html#aab1b0d2ea5169c1e1d8eff4daef36512">kColonSpaceStr</a></div><div class="ttdeci">const char * kColonSpaceStr</div><div class="ttdoc">&quot;: &quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:151</div></div>
<div class="ttc" id="aIRtext_8h_html_a6fe3dbd6899e85e79e517f71cc74a87b"><div class="ttname"><a href="IRtext_8h.html#a6fe3dbd6899e85e79e517f71cc74a87b">kWideStr</a></div><div class="ttdeci">const char * kWideStr</div><div class="ttdoc">&quot;Wide&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:127</div></div>
<div class="ttc" id="aIRtext_8h_html_ac7a90008560fd1e7b4ed240f354d8fae"><div class="ttname"><a href="IRtext_8h.html#ac7a90008560fd1e7b4ed240f354d8fae">kRightMaxStr</a></div><div class="ttdeci">const char * kRightMaxStr</div><div class="ttdoc">&quot;RightMax&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:122</div></div>
<div class="ttc" id="aIRtext_8h_html_a1f452a2ac1a2b89b9c71cf64c177f6bd"><div class="ttname"><a href="IRtext_8h.html#a1f452a2ac1a2b89b9c71cf64c177f6bd">kDownStr</a></div><div class="ttdeci">const char * kDownStr</div><div class="ttdoc">&quot;Down&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:73</div></div>
<div class="ttc" id="aIRtext_8h_html_a926ebb4be14179afdc55d5524c8eb5da"><div class="ttname"><a href="IRtext_8h.html#a926ebb4be14179afdc55d5524c8eb5da">kLightStr</a></div><div class="ttdeci">const char * kLightStr</div><div class="ttdoc">&quot;Light&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:28</div></div>
<div class="ttc" id="aIRtext_8h_html_ac25d86b97b8e53292dc8d0604ae263a3"><div class="ttname"><a href="IRtext_8h.html#ac25d86b97b8e53292dc8d0604ae263a3">kCoolStr</a></div><div class="ttdeci">const char * kCoolStr</div><div class="ttdoc">&quot;Cool&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:100</div></div>
<div class="ttc" id="aIRtext_8h_html_a953f9c48fcf87e81bf6f383e8fe8b1dd"><div class="ttname"><a href="IRtext_8h.html#a953f9c48fcf87e81bf6f383e8fe8b1dd">kRightStr</a></div><div class="ttdeci">const char * kRightStr</div><div class="ttdoc">&quot;Right&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:123</div></div>
<div class="ttc" id="aIRtext_8h_html_a54df015b1adadb211a30f826999c78f6"><div class="ttname"><a href="IRtext_8h.html#a54df015b1adadb211a30f826999c78f6">kMinuteStr</a></div><div class="ttdeci">const char * kMinuteStr</div><div class="ttdoc">&quot;Minute&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:159</div></div>
<div class="ttc" id="aIRtext_8h_html_a3358666a695e8d54c23b20dc6a371a38"><div class="ttname"><a href="IRtext_8h.html#a3358666a695e8d54c23b20dc6a371a38">kMinutesStr</a></div><div class="ttdeci">const char * kMinutesStr</div><div class="ttdoc">&quot;Minutes&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:160</div></div>
<div class="ttc" id="aIRtext_8h_html_af9ac743c367e179723b128ad69f124c5"><div class="ttname"><a href="IRtext_8h.html#af9ac743c367e179723b128ad69f124c5">kSleepStr</a></div><div class="ttdeci">const char * kSleepStr</div><div class="ttdoc">&quot;Sleep&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:27</div></div>
<div class="ttc" id="aIRtext_8h_html_a4f6fee52ae5f7f9c8fe791dbae762607"><div class="ttname"><a href="IRtext_8h.html#a4f6fee52ae5f7f9c8fe791dbae762607">kMinimumStr</a></div><div class="ttdeci">const char * kMinimumStr</div><div class="ttdoc">&quot;Minimum&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:109</div></div>
<div class="ttc" id="aIRtext_8h_html_a084c940b7221cd1d85d4a3b58063051d"><div class="ttname"><a href="IRtext_8h.html#a084c940b7221cd1d85d4a3b58063051d">k3DStr</a></div><div class="ttdeci">const char * k3DStr</div><div class="ttdoc">&quot;3D&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:63</div></div>
<div class="ttc" id="aIRtext_8h_html_a87652df1cf724353547f27a9ebde5edb"><div class="ttname"><a href="IRtext_8h.html#a87652df1cf724353547f27a9ebde5edb">kTempStr</a></div><div class="ttdeci">const char * kTempStr</div><div class="ttdoc">&quot;Temp&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:49</div></div>
<div class="ttc" id="aIRtext_8h_html_a0fc9126a02b933a2af702cd6fdcb47ea"><div class="ttname"><a href="IRtext_8h.html#a0fc9126a02b933a2af702cd6fdcb47ea">kAutomaticStr</a></div><div class="ttdeci">const char * kAutomaticStr</div><div class="ttdoc">&quot;Automatic&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:98</div></div>
<div class="ttc" id="aIRtext_8h_html_ad3489e1c008bc517b8bf0271c40252d1"><div class="ttname"><a href="IRtext_8h.html#ad3489e1c008bc517b8bf0271c40252d1">kSecondStr</a></div><div class="ttdeci">const char * kSecondStr</div><div class="ttdoc">&quot;Second&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:161</div></div>
<div class="ttc" id="aIRtext_8h_html_a27ae4d475898878bd8e71111066629c6"><div class="ttname"><a href="IRtext_8h.html#a27ae4d475898878bd8e71111066629c6">kSwingVToggleStr</a></div><div class="ttdeci">const char * kSwingVToggleStr</div><div class="ttdoc">&quot;Swing(V) Toggle&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:144</div></div>
<div class="ttc" id="aIRtext_8h_html_a7425119d393b134c4659db9d35691e35"><div class="ttname"><a href="IRtext_8h.html#a7425119d393b134c4659db9d35691e35">k6thSenseStr</a></div><div class="ttdeci">const char * k6thSenseStr</div><div class="ttdoc">&quot;6th Sense&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:95</div></div>
<div class="ttc" id="aIRtext_8h_html_a5b3133e24c729077da411e08119033be"><div class="ttname"><a href="IRtext_8h.html#a5b3133e24c729077da411e08119033be">kFilterStr</a></div><div class="ttdeci">const char * kFilterStr</div><div class="ttdoc">&quot;Filter&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:62</div></div>
<div class="ttc" id="aIRtext_8h_html_afe6519eaae5b1fb4d110529ce98f05b0"><div class="ttname"><a href="IRtext_8h.html#afe6519eaae5b1fb4d110529ce98f05b0">kNightStr</a></div><div class="ttdeci">const char * kNightStr</div><div class="ttdoc">&quot;Night&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:60</div></div>
<div class="ttc" id="aIRtext_8h_html_a42a2d6b1e764138a5e20b7a34e0cff03"><div class="ttname"><a href="IRtext_8h.html#a42a2d6b1e764138a5e20b7a34e0cff03">kSpaceLBraceStr</a></div><div class="ttdeci">const char * kSpaceLBraceStr</div><div class="ttdoc">&quot; (&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:149</div></div>
<div class="ttc" id="aIRtext_8h_html_a86639857f884487cf3bedc91e71d6faa"><div class="ttname"><a href="IRtext_8h.html#a86639857f884487cf3bedc91e71d6faa">kSleepTimerStr</a></div><div class="ttdeci">const char * kSleepTimerStr</div><div class="ttdoc">&quot;Sleep Timer&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:142</div></div>
<div class="ttc" id="aIRtext_8h_html_a0c801e35becc1eab4cdf0076e1c99485"><div class="ttname"><a href="IRtext_8h.html#a0c801e35becc1eab4cdf0076e1c99485">kSwingVModeStr</a></div><div class="ttdeci">const char * kSwingVModeStr</div><div class="ttdoc">&quot;Swing(V) Mode&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:143</div></div>
<div class="ttc" id="aIRtext_8h_html_a36fa3584a89f6e48757eba8f3df7e109"><div class="ttname"><a href="IRtext_8h.html#a36fa3584a89f6e48757eba8f3df7e109">kTimerStr</a></div><div class="ttdeci">const char * kTimerStr</div><div class="ttdoc">&quot;Timer&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:41</div></div>
<div class="ttc" id="aIRtext_8h_html_a46e6bd06cfbf5f462042d7c720db01ae"><div class="ttname"><a href="IRtext_8h.html#a46e6bd06cfbf5f462042d7c720db01ae">kChangeStr</a></div><div class="ttdeci">const char * kChangeStr</div><div class="ttdoc">&quot;Change&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:74</div></div>
<div class="ttc" id="aIRtext_8h_html_aa0dfe94cd4cba3bec642328f399dc775"><div class="ttname"><a href="IRtext_8h.html#aa0dfe94cd4cba3bec642328f399dc775">kAllProtocolNamesStr</a></div><div class="ttdeci">const char * kAllProtocolNamesStr</div><div class="ttdoc">New protocol strings should be added just above this line.</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:177</div></div>
<div class="ttc" id="aIRtext_8h_html_a40f90b18252e14a73dd91527f621e35f"><div class="ttname"><a href="IRtext_8h.html#a40f90b18252e14a73dd91527f621e35f">kIFeelStr</a></div><div class="ttdeci">const char * kIFeelStr</div><div class="ttdoc">&quot;IFeel&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:50</div></div>
<div class="ttc" id="aIRtext_8h_html_a3dc9321c4146369e0e0794e6a4de1988"><div class="ttname"><a href="IRtext_8h.html#a3dc9321c4146369e0e0794e6a4de1988">kFalseStr</a></div><div class="ttdeci">const char * kFalseStr</div><div class="ttdoc">&quot;False&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:169</div></div>
<div class="ttc" id="aIRtext_8h_html_aac197960695463757652bc643efdcd59"><div class="ttname"><a href="IRtext_8h.html#aac197960695463757652bc643efdcd59">kMaxLeftStr</a></div><div class="ttdeci">const char * kMaxLeftStr</div><div class="ttdoc">&quot;Max Left&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:125</div></div>
<div class="ttc" id="aIRtext_8h_html_a7ef833cf90df2c97ef46c5c4b6225a42"><div class="ttname"><a href="IRtext_8h.html#a7ef833cf90df2c97ef46c5c4b6225a42">kHealthStr</a></div><div class="ttdeci">const char * kHealthStr</div><div class="ttdoc">&quot;Health&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:47</div></div>
<div class="ttc" id="aIRtext_8h_html_afdc9e8cc5c8c5c03749898d4f2d38606"><div class="ttname"><a href="IRtext_8h.html#afdc9e8cc5c8c5c03749898d4f2d38606">kCommandStr</a></div><div class="ttdeci">const char * kCommandStr</div><div class="ttdoc">&quot;Command&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:45</div></div>
<div class="ttc" id="aIRtext_8h_html_a7ddc859861308f2f9077abcec2a4b571"><div class="ttname"><a href="IRtext_8h.html#a7ddc859861308f2f9077abcec2a4b571">kXFanStr</a></div><div class="ttdeci">const char * kXFanStr</div><div class="ttdoc">&quot;XFan&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:46</div></div>
<div class="ttc" id="aIRtext_8h_html_aae574dbb4b9f70db0e64386d61c21beb"><div class="ttname"><a href="IRtext_8h.html#aae574dbb4b9f70db0e64386d61c21beb">kPurifyStr</a></div><div class="ttdeci">const char * kPurifyStr</div><div class="ttdoc">&quot;Purify&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:40</div></div>
<div class="ttc" id="aIRtext_8h_html_a5b4ade5e08f30c5e9a61c813bb2046f1"><div class="ttname"><a href="IRtext_8h.html#a5b4ade5e08f30c5e9a61c813bb2046f1">kHighStr</a></div><div class="ttdeci">const char * kHighStr</div><div class="ttdoc">&quot;High&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:114</div></div>
<div class="ttc" id="aIRtext_8h_html_a48f5dfcf2e0f13f502980d42e879aec3"><div class="ttname"><a href="IRtext_8h.html#a48f5dfcf2e0f13f502980d42e879aec3">kCommaSpaceStr</a></div><div class="ttdeci">const char * kCommaSpaceStr</div><div class="ttdoc">&quot;, &quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:150</div></div>
<div class="ttc" id="aIRtext_8h_html_af7a0d76c40f3173a3e1367665d789300"><div class="ttname"><a href="IRtext_8h.html#af7a0d76c40f3173a3e1367665d789300">kFanStr</a></div><div class="ttdeci">const char * kFanStr</div><div class="ttdoc">&quot;Fan&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:102</div></div>
<div class="ttc" id="aIRtext_8h_html_a6bb6abfc54409b801dcb591f036635d2"><div class="ttname"><a href="IRtext_8h.html#a6bb6abfc54409b801dcb591f036635d2">kTopStr</a></div><div class="ttdeci">const char * kTopStr</div><div class="ttdoc">&quot;Top&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:129</div></div>
<div class="ttc" id="aIRtext_8h_html_a6a3c0965a32c36d9b5aa4918b473cc12"><div class="ttname"><a href="IRtext_8h.html#a6a3c0965a32c36d9b5aa4918b473cc12">kNowStr</a></div><div class="ttdeci">const char * kNowStr</div><div class="ttdoc">&quot;Now&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:163</div></div>
<div class="ttc" id="aIRtext_8h_html_a95f119413a113c9a2e8c246892b8c52a"><div class="ttname"><a href="IRtext_8h.html#a95f119413a113c9a2e8c246892b8c52a">kOffStr</a></div><div class="ttdeci">const char * kOffStr</div><div class="ttdoc">&quot;Off&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:22</div></div>
<div class="ttc" id="aIRtext_8h_html_a487173616cc3fced0489c01c11333912"><div class="ttname"><a href="IRtext_8h.html#a487173616cc3fced0489c01c11333912">kMaximumStr</a></div><div class="ttdeci">const char * kMaximumStr</div><div class="ttdoc">&quot;Maximum&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:107</div></div>
<div class="ttc" id="aIRtext_8h_html_a58bf62453a96d4e84bd1da3449b8799e"><div class="ttname"><a href="IRtext_8h.html#a58bf62453a96d4e84bd1da3449b8799e">kButtonStr</a></div><div class="ttdeci">const char * kButtonStr</div><div class="ttdoc">&quot;Button&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:58</div></div>
<div class="ttc" id="ai18n_8h_html"><div class="ttname"><a href="i18n_8h.html">i18n.h</a></div></div>
<div class="ttc" id="aIRtext_8h_html_a71687df5bc94e4ca18cf59c9ff238e86"><div class="ttname"><a href="IRtext_8h.html#a71687df5bc94e4ca18cf59c9ff238e86">kTempUpStr</a></div><div class="ttdeci">const char * kTempUpStr</div><div class="ttdoc">&quot;Temp Up&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:65</div></div>
<div class="ttc" id="aIRtext_8h_html_a45c17b23773e9dcded65a82577b00263"><div class="ttname"><a href="IRtext_8h.html#a45c17b23773e9dcded65a82577b00263">kCleanStr</a></div><div class="ttdeci">const char * kCleanStr</div><div class="ttdoc">&quot;Clean&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:39</div></div>
<div class="ttc" id="aIRtext_8h_html_add28006fe2f8ac70db1b5048c85be84b"><div class="ttname"><a href="IRtext_8h.html#add28006fe2f8ac70db1b5048c85be84b">kIonStr</a></div><div class="ttdeci">const char * kIonStr</div><div class="ttdoc">&quot;Ion&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:55</div></div>
<div class="ttc" id="aIRtext_8h_html_ac50f97a0d33041fe4bba6e02c500c8ef"><div class="ttname"><a href="IRtext_8h.html#ac50f97a0d33041fe4bba6e02c500c8ef">kProtocolStr</a></div><div class="ttdeci">const char * kProtocolStr</div><div class="ttdoc">&quot;Protocol&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:19</div></div>
<div class="ttc" id="aIRtext_8h_html_a84f6d62456976cc31fe6b1648182a885"><div class="ttname"><a href="IRtext_8h.html#a84f6d62456976cc31fe6b1648182a885">kEyeStr</a></div><div class="ttdeci">const char * kEyeStr</div><div class="ttdoc">&quot;Eye&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:53</div></div>
<div class="ttc" id="aIRtext_8h_html_a18f613c7f11f6f746227cfa8cc1e00e0"><div class="ttname"><a href="IRtext_8h.html#a18f613c7f11f6f746227cfa8cc1e00e0">kMedStr</a></div><div class="ttdeci">const char * kMedStr</div><div class="ttdoc">&quot;Med&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:110</div></div>
<div class="ttc" id="aIRtext_8h_html_a837ecfeff9a1bc7546016229e9f2ddfb"><div class="ttname"><a href="IRtext_8h.html#a837ecfeff9a1bc7546016229e9f2ddfb">kThreeLetterDayOfWeekStr</a></div><div class="ttdeci">const char * kThreeLetterDayOfWeekStr</div><div class="ttdoc">&quot;SunMonTueWedThuFriSat&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:164</div></div>
<div class="ttc" id="aIRtext_8h_html_ab64c4cdebbc72cbb62ae6cd9a449876b"><div class="ttname"><a href="IRtext_8h.html#ab64c4cdebbc72cbb62ae6cd9a449876b">kCancelStr</a></div><div class="ttdeci">const char * kCancelStr</div><div class="ttdoc">&quot;Cancel&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:71</div></div>
<div class="ttc" id="aIRtext_8h_html_add1af6d900b500ca7affff3c9ff02d29"><div class="ttname"><a href="IRtext_8h.html#add1af6d900b500ca7affff3c9ff02d29">kWallStr</a></div><div class="ttdeci">const char * kWallStr</div><div class="ttdoc">&quot;Wall&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:93</div></div>
<div class="ttc" id="aIRtext_8h_html_a05b1e2f809dadf05e22e1cb1d1a7f07e"><div class="ttname"><a href="IRtext_8h.html#a05b1e2f809dadf05e22e1cb1d1a7f07e">kToggleStr</a></div><div class="ttdeci">const char * kToggleStr</div><div class="ttdoc">&quot;Toggle&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:24</div></div>
<div class="ttc" id="aIRtext_8h_html_a693b29e4764d959dac781a0992f2bf30"><div class="ttname"><a href="IRtext_8h.html#a693b29e4764d959dac781a0992f2bf30">kMouldStr</a></div><div class="ttdeci">const char * kMouldStr</div><div class="ttdoc">&quot;Mould&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:38</div></div>
<div class="ttc" id="aIRtext_8h_html_accfb2322a40cfaf6707394e43f39e2a3"><div class="ttname"><a href="IRtext_8h.html#accfb2322a40cfaf6707394e43f39e2a3">kBottomStr</a></div><div class="ttdeci">const char * kBottomStr</div><div class="ttdoc">&quot;Bottom&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:130</div></div>
<div class="ttc" id="aIRtext_8h_html_a2e98c29968ade682d94f35e28364c878"><div class="ttname"><a href="IRtext_8h.html#a2e98c29968ade682d94f35e28364c878">kBeepStr</a></div><div class="ttdeci">const char * kBeepStr</div><div class="ttdoc">&quot;Beep&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:35</div></div>
<div class="ttc" id="aIRtext_8h_html_a5358a85538e4643c1cc109a7a0b90079"><div class="ttname"><a href="IRtext_8h.html#a5358a85538e4643c1cc109a7a0b90079">kRoomStr</a></div><div class="ttdeci">const char * kRoomStr</div><div class="ttdoc">&quot;Room&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:94</div></div>
<div class="ttc" id="aIRtext_8h_html_a82c26d9c7690ce001223e2a7cf8664d8"><div class="ttname"><a href="IRtext_8h.html#a82c26d9c7690ce001223e2a7cf8664d8">kFastStr</a></div><div class="ttdeci">const char * kFastStr</div><div class="ttdoc">&quot;Fast&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:80</div></div>
<div class="ttc" id="aIRtext_8h_html_aa0f25fa3aa8d26f4635c38e563a974f5"><div class="ttname"><a href="IRtext_8h.html#aa0f25fa3aa8d26f4635c38e563a974f5">kDryStr</a></div><div class="ttdeci">const char * kDryStr</div><div class="ttdoc">&quot;Dry&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:103</div></div>
<div class="ttc" id="aIRtext_8h_html_a5aea60591627481d90688f655b2eb82a"><div class="ttname"><a href="IRtext_8h.html#a5aea60591627481d90688f655b2eb82a">kUpperStr</a></div><div class="ttdeci">const char * kUpperStr</div><div class="ttdoc">&quot;Upper&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:89</div></div>
<div class="ttc" id="aIRtext_8h_html_abbd5b682b584b737c76bded900a6ffad"><div class="ttname"><a href="IRtext_8h.html#abbd5b682b584b737c76bded900a6ffad">kMiddleStr</a></div><div class="ttdeci">const char * kMiddleStr</div><div class="ttdoc">&quot;Middle&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:117</div></div>
<div class="ttc" id="aIRtext_8h_html_a0f7e35a10e28e403da578c85b0e6b180"><div class="ttname"><a href="IRtext_8h.html#a0f7e35a10e28e403da578c85b0e6b180">kAirFlowStr</a></div><div class="ttdeci">const char * kAirFlowStr</div><div class="ttdoc">&quot;Air Flow&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:82</div></div>
<div class="ttc" id="aIRtext_8h_html_a7d265b75ed59c0be3c6b72ec0eaf8aa2"><div class="ttname"><a href="IRtext_8h.html#a7d265b75ed59c0be3c6b72ec0eaf8aa2">kLoudStr</a></div><div class="ttdeci">const char * kLoudStr</div><div class="ttdoc">&quot;Loud&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:87</div></div>
<div class="ttc" id="aIRtext_8h_html_aa59176b31741b60729d4279817a7da1b"><div class="ttname"><a href="IRtext_8h.html#aa59176b31741b60729d4279817a7da1b">kUnknownStr</a></div><div class="ttdeci">const char * kUnknownStr</div><div class="ttdoc">&quot;Unknown&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:18</div></div>
<div class="ttc" id="aIRtext_8h_html_af83fbe756a22ef800d40bc738be886c7"><div class="ttname"><a href="IRtext_8h.html#af83fbe756a22ef800d40bc738be886c7">kSuperStr</a></div><div class="ttdeci">const char * kSuperStr</div><div class="ttdoc">&quot;Super&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:26</div></div>
<div class="ttc" id="aIRtext_8h_html_a15a085c4f9e89926d2c165de4b1755d9"><div class="ttname"><a href="IRtext_8h.html#a15a085c4f9e89926d2c165de4b1755d9">kAutoStr</a></div><div class="ttdeci">const char * kAutoStr</div><div class="ttdoc">&quot;Auto&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:97</div></div>
<div class="ttc" id="aIRtext_8h_html_a571a28fe4174574caac4d93fb09ae196"><div class="ttname"><a href="IRtext_8h.html#a571a28fe4174574caac4d93fb09ae196">kMidStr</a></div><div class="ttdeci">const char * kMidStr</div><div class="ttdoc">&quot;Mid&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:116</div></div>
<div class="ttc" id="aIRtext_8h_html_a95ca78b5cc3caa31c564a28480379fae"><div class="ttname"><a href="IRtext_8h.html#a95ca78b5cc3caa31c564a28480379fae">kYesStr</a></div><div class="ttdeci">const char * kYesStr</div><div class="ttdoc">&quot;Yes&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:166</div></div>
<div class="ttc" id="aIRtext_8h_html_a171736ab5e3d59198ed740ea5fd93473"><div class="ttname"><a href="IRtext_8h.html#a171736ab5e3d59198ed740ea5fd93473">kSlowStr</a></div><div class="ttdeci">const char * kSlowStr</div><div class="ttdoc">&quot;Slow&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:81</div></div>
<div class="ttc" id="aIRtext_8h_html_acfcc1bc573f4520f3e37977a949b74e8"><div class="ttname"><a href="IRtext_8h.html#acfcc1bc573f4520f3e37977a949b74e8">k8CHeatStr</a></div><div class="ttdeci">const char * k8CHeatStr</div><div class="ttdoc">&quot;8CHeat&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:59</div></div>
<div class="ttc" id="aIRtext_8h_html_a6e4b8f591a1d3d399a559d41847b3fa8"><div class="ttname"><a href="IRtext_8h.html#a6e4b8f591a1d3d399a559d41847b3fa8">kClockStr</a></div><div class="ttdeci">const char * kClockStr</div><div class="ttdoc">&quot;Clock&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:44</div></div>
<div class="ttc" id="aIRtext_8h_html_ab2fd48f052fcfed8ca779ca499edcdbf"><div class="ttname"><a href="IRtext_8h.html#ab2fd48f052fcfed8ca779ca499edcdbf">kLeftMaxStr</a></div><div class="ttdeci">const char * kLeftMaxStr</div><div class="ttdoc">&quot;LeftMax&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:126</div></div>
<div class="ttc" id="aIRtext_8h_html_a7f4b2ff4134386a09e2bcb5f71f591cb"><div class="ttname"><a href="IRtext_8h.html#a7f4b2ff4134386a09e2bcb5f71f591cb">kMaxStr</a></div><div class="ttdeci">const char * kMaxStr</div><div class="ttdoc">&quot;Max&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:106</div></div>
<div class="ttc" id="aIRtext_8h_html_acb40b78a5269c43cc3e4f44d3da01069"><div class="ttname"><a href="IRtext_8h.html#acb40b78a5269c43cc3e4f44d3da01069">kSaveStr</a></div><div class="ttdeci">const char * kSaveStr</div><div class="ttdoc">&quot;Save&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:52</div></div>
<div class="ttc" id="aIRtext_8h_html_af9ac8ce54e78f0d8f7e0043d08e6256c"><div class="ttname"><a href="IRtext_8h.html#af9ac8ce54e78f0d8f7e0043d08e6256c">kLightToggleStr</a></div><div class="ttdeci">const char * kLightToggleStr</div><div class="ttdoc">&quot;Light Toggle&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:134</div></div>
<div class="ttc" id="aIRtext_8h_html_adb64531a5054629613696f9af39420e2"><div class="ttname"><a href="IRtext_8h.html#adb64531a5054629613696f9af39420e2">kDayStr</a></div><div class="ttdeci">const char * kDayStr</div><div class="ttdoc">&quot;Day&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:155</div></div>
<div class="ttc" id="aIRtext_8h_html_adc8991e424df3ebf2f47ffc2854057f2"><div class="ttname"><a href="IRtext_8h.html#adc8991e424df3ebf2f47ffc2854057f2">kFreshStr</a></div><div class="ttdeci">const char * kFreshStr</div><div class="ttdoc">&quot;Fresh&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:56</div></div>
<div class="ttc" id="aIRtext_8h_html_aab13bc11db65584fbb8a61c686d67228"><div class="ttname"><a href="IRtext_8h.html#aab13bc11db65584fbb8a61c686d67228">kCentreStr</a></div><div class="ttdeci">const char * kCentreStr</div><div class="ttdoc">&quot;Centre&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:128</div></div>
<div class="ttc" id="aIRtext_8h_html_aa8d9143da032cdc1accf7f4441b05bc8"><div class="ttname"><a href="IRtext_8h.html#aa8d9143da032cdc1accf7f4441b05bc8">kManualStr</a></div><div class="ttdeci">const char * kManualStr</div><div class="ttdoc">&quot;Manual&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:99</div></div>
<div class="ttc" id="aIRtext_8h_html_a058df7d2db245e307719d025352d464d"><div class="ttname"><a href="IRtext_8h.html#a058df7d2db245e307719d025352d464d">kHeatStr</a></div><div class="ttdeci">const char * kHeatStr</div><div class="ttdoc">&quot;Heat&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:101</div></div>
<div class="ttc" id="aIRtext_8h_html_a0f888d5c39cf82b2c02a7caad10c716e"><div class="ttname"><a href="IRtext_8h.html#a0f888d5c39cf82b2c02a7caad10c716e">kMaxRightStr</a></div><div class="ttdeci">const char * kMaxRightStr</div><div class="ttdoc">&quot;Max Right&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:121</div></div>
<div class="ttc" id="aIRtext_8h_html_a8672abbd2a279c032f0435ed75143b1a"><div class="ttname"><a href="IRtext_8h.html#a8672abbd2a279c032f0435ed75143b1a">kUpStr</a></div><div class="ttdeci">const char * kUpStr</div><div class="ttdoc">&quot;Up&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:72</div></div>
<div class="ttc" id="aIRtext_8h_html_aae21484e9f049a7cfa507068abd3915e"><div class="ttname"><a href="IRtext_8h.html#aae21484e9f049a7cfa507068abd3915e">kCelsiusStr</a></div><div class="ttdeci">const char * kCelsiusStr</div><div class="ttdoc">&quot;Celsius&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:64</div></div>
<div class="ttc" id="aIRtext_8h_html_aaf4ffad7f827a2ce8512e644bc9c25c7"><div class="ttname"><a href="IRtext_8h.html#aaf4ffad7f827a2ce8512e644bc9c25c7">kOnStr</a></div><div class="ttdeci">const char * kOnStr</div><div class="ttdoc">&quot;On&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:21</div></div>
<div class="ttc" id="aIRtext_8h_html_a10ecbc18040f0d0ed88b728c18b0a161"><div class="ttname"><a href="IRtext_8h.html#a10ecbc18040f0d0ed88b728c18b0a161">kHoursStr</a></div><div class="ttdeci">const char * kHoursStr</div><div class="ttdoc">&quot;Hours&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:158</div></div>
<div class="ttc" id="aIRtext_8h_html_af4f31b53c295a877507e3ef5a5fbbc9d"><div class="ttname"><a href="IRtext_8h.html#af4f31b53c295a877507e3ef5a5fbbc9d">kBreezeStr</a></div><div class="ttdeci">const char * kBreezeStr</div><div class="ttdoc">&quot;Breeze&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:90</div></div>
<div class="ttc" id="aIRtext_8h_html_a7980630cd028febca8245730dffa684b"><div class="ttname"><a href="IRtext_8h.html#a7980630cd028febca8245730dffa684b">kPowerfulStr</a></div><div class="ttdeci">const char * kPowerfulStr</div><div class="ttdoc">&quot;Powerful&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:29</div></div>
<div class="ttc" id="aIRtext_8h_html_ae1395c08682a2b858261d76b97311f4f"><div class="ttname"><a href="IRtext_8h.html#ae1395c08682a2b858261d76b97311f4f">kEyeAutoStr</a></div><div class="ttdeci">const char * kEyeAutoStr</div><div class="ttdoc">&quot;Eye Auto&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:133</div></div>
<div class="ttc" id="aIRtext_8h_html_a20037561545d4ba4cfe66c1e103ecde1"><div class="ttname"><a href="IRtext_8h.html#a20037561545d4ba4cfe66c1e103ecde1">kComfortStr</a></div><div class="ttdeci">const char * kComfortStr</div><div class="ttdoc">&quot;Comfort&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:75</div></div>
<div class="ttc" id="aIRtext_8h_html_ad7706307f507466526b4288e33385bde"><div class="ttname"><a href="IRtext_8h.html#ad7706307f507466526b4288e33385bde">kHighestStr</a></div><div class="ttdeci">const char * kHighestStr</div><div class="ttdoc">&quot;Highest&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:113</div></div>
<div class="ttc" id="aIRtext_8h_html_a220378c7b69db06362af5ad932965628"><div class="ttname"><a href="IRtext_8h.html#a220378c7b69db06362af5ad932965628">kFanOnlyStr</a></div><div class="ttdeci">const char * kFanOnlyStr</div><div class="ttdoc">&quot;fan_only&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:104</div></div>
<div class="ttc" id="aIRtext_8h_html_a4940a3f71a484f936d3e58b9573931a8"><div class="ttname"><a href="IRtext_8h.html#a4940a3f71a484f936d3e58b9573931a8">kMinStr</a></div><div class="ttdeci">const char * kMinStr</div><div class="ttdoc">&quot;Min&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:108</div></div>
<div class="ttc" id="aIRtext_8h_html_a47a659e1c6373c4af92f4261148f695b"><div class="ttname"><a href="IRtext_8h.html#a47a659e1c6373c4af92f4261148f695b">kFollowStr</a></div><div class="ttdeci">const char * kFollowStr</div><div class="ttdoc">&quot;Follow&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:54</div></div>
<div class="ttc" id="aIRtext_8h_html_ab59fa6f63401196c0ff32aba6da9d9aa"><div class="ttname"><a href="IRtext_8h.html#ab59fa6f63401196c0ff32aba6da9d9aa">kWeeklyTimerStr</a></div><div class="ttdeci">const char * kWeeklyTimerStr</div><div class="ttdoc">&quot;WeeklyTimer&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:77</div></div>
<div class="ttc" id="aIRtext_8h_html_afaf12ae53365f790b47ff3790e94cc1c"><div class="ttname"><a href="IRtext_8h.html#afaf12ae53365f790b47ff3790e94cc1c">kOutsideQuietStr</a></div><div class="ttdeci">const char * kOutsideQuietStr</div><div class="ttdoc">&quot;Outside Quiet&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:135</div></div>
<div class="ttc" id="aIRtext_8h_html_a09c0f7f1b07f7591bdbe56fd8a18f7ea"><div class="ttname"><a href="IRtext_8h.html#a09c0f7f1b07f7591bdbe56fd8a18f7ea">kLowStr</a></div><div class="ttdeci">const char * kLowStr</div><div class="ttdoc">&quot;Low&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:118</div></div>
<div class="ttc" id="aIRtext_8h_html_ad9112f221a20ab498c5f133c4cea0b14"><div class="ttname"><a href="IRtext_8h.html#ad9112f221a20ab498c5f133c4cea0b14">kFixedStr</a></div><div class="ttdeci">const char * kFixedStr</div><div class="ttdoc">&quot;Fixed&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:37</div></div>
<div class="ttc" id="aIRtext_8h_html_ad030c0930697d3c295f3783e8519995c"><div class="ttname"><a href="IRtext_8h.html#ad030c0930697d3c295f3783e8519995c">kStartStr</a></div><div class="ttdeci">const char * kStartStr</div><div class="ttdoc">&quot;Start&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:67</div></div>
<div class="ttc" id="aIRtext_8h_html_aa779ae24412ef82ee3d1eade3f0381ae"><div class="ttname"><a href="IRtext_8h.html#aa779ae24412ef82ee3d1eade3f0381ae">kDaysStr</a></div><div class="ttdeci">const char * kDaysStr</div><div class="ttdoc">&quot;Days&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:156</div></div>
<div class="ttc" id="aIRtext_8h_html_a8bc9343f209803dbab3e765e39b41b4d"><div class="ttname"><a href="IRtext_8h.html#a8bc9343f209803dbab3e765e39b41b4d">kWifiStr</a></div><div class="ttdeci">const char * kWifiStr</div><div class="ttdoc">&quot;Wifi&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:78</div></div>
<div class="ttc" id="aIRtext_8h_html_acfad569446290c1da0c102b98344411c"><div class="ttname"><a href="IRtext_8h.html#acfad569446290c1da0c102b98344411c">kSwingHStr</a></div><div class="ttdeci">const char * kSwingHStr</div><div class="ttdoc">&quot;SwingH&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:33</div></div>
<div class="ttc" id="aIRtext_8h_html_aa9ffd7c6e6921607653ed5dc1fea4f32"><div class="ttname"><a href="IRtext_8h.html#aa9ffd7c6e6921607653ed5dc1fea4f32">kLastStr</a></div><div class="ttdeci">const char * kLastStr</div><div class="ttdoc">&quot;Last&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:79</div></div>
<div class="ttc" id="aIRtext_8h_html_ab0b71c4429416a581a393f07e898bade"><div class="ttname"><a href="IRtext_8h.html#ab0b71c4429416a581a393f07e898bade">kEconoStr</a></div><div class="ttdeci">const char * kEconoStr</div><div class="ttdoc">&quot;Econo&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:31</div></div>
<div class="ttc" id="aIRtext_8h_html_a5d094344fba1715dbde69ff947775264"><div class="ttname"><a href="IRtext_8h.html#a5d094344fba1715dbde69ff947775264">kNAStr</a></div><div class="ttdeci">const char * kNAStr</div><div class="ttdoc">&quot;N/A&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:84</div></div>
<div class="ttc" id="aIRtext_8h_html_a277b588db53ec31ab7b0d287310c6d50"><div class="ttname"><a href="IRtext_8h.html#a277b588db53ec31ab7b0d287310c6d50">kTimeSep</a></div><div class="ttdeci">char kTimeSep</div><div class="ttdoc">':'</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:148</div></div>
<div class="ttc" id="aIRtext_8h_html_a4a553cfcc7ca2a8cea8e1263f5f6c186"><div class="ttname"><a href="IRtext_8h.html#a4a553cfcc7ca2a8cea8e1263f5f6c186">kModelStr</a></div><div class="ttdeci">const char * kModelStr</div><div class="ttdoc">&quot;Model&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:48</div></div>
<div class="ttc" id="aIRtext_8h_html_ada5c81e0fcc4073d6f51e7447e8c5da0"><div class="ttname"><a href="IRtext_8h.html#ada5c81e0fcc4073d6f51e7447e8c5da0">kOutsideStr</a></div><div class="ttdeci">const char * kOutsideStr</div><div class="ttdoc">&quot;Outside&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:86</div></div>
<div class="ttc" id="aIRtext_8h_html_a47a76dc8d87d9694a36c6417d7e19dda"><div class="ttname"><a href="IRtext_8h.html#a47a76dc8d87d9694a36c6417d7e19dda">kPowerStr</a></div><div class="ttdeci">const char * kPowerStr</div><div class="ttdoc">&quot;Power&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:20</div></div>
<div class="ttc" id="aIRtext_8h_html_a0ba8b339babc7f7f26dbab2399bcc578"><div class="ttname"><a href="IRtext_8h.html#a0ba8b339babc7f7f26dbab2399bcc578">kCirculateStr</a></div><div class="ttdeci">const char * kCirculateStr</div><div class="ttdoc">&quot;Circulate&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:91</div></div>
<div class="ttc" id="aIRtext_8h_html_a001f11495c7c9452ceec68455ae524bf"><div class="ttname"><a href="IRtext_8h.html#a001f11495c7c9452ceec68455ae524bf">kLeftStr</a></div><div class="ttdeci">const char * kLeftStr</div><div class="ttdoc">&quot;Left&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:124</div></div>
<div class="ttc" id="aIRtext_8h_html_a56ee9a96dd0a7ee0a5f95c286f6ea7e8"><div class="ttname"><a href="IRtext_8h.html#a56ee9a96dd0a7ee0a5f95c286f6ea7e8">kSensorStr</a></div><div class="ttdeci">const char * kSensorStr</div><div class="ttdoc">&quot;Sensor&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:76</div></div>
<div class="ttc" id="aIRtext_8h_html_a9833364e538f50be227ff6c0b01f8f7c"><div class="ttname"><a href="IRtext_8h.html#a9833364e538f50be227ff6c0b01f8f7c">kPreviousPowerStr</a></div><div class="ttdeci">const char * kPreviousPowerStr</div><div class="ttdoc">&quot;Previous Power&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:138</div></div>
<div class="ttc" id="aIRtext_8h_html_a25365e722200ac40d581c4f585f9ae2f"><div class="ttname"><a href="IRtext_8h.html#a25365e722200ac40d581c4f585f9ae2f">kHumidStr</a></div><div class="ttdeci">const char * kHumidStr</div><div class="ttdoc">&quot;Humid&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:51</div></div>
<div class="ttc" id="aIRtext_8h_html_a100dc6d7c4d53bffa00a24a582ace80f"><div class="ttname"><a href="IRtext_8h.html#a100dc6d7c4d53bffa00a24a582ace80f">kZoneFollowStr</a></div><div class="ttdeci">const char * kZoneFollowStr</div><div class="ttdoc">&quot;Zone Follow&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:36</div></div>
<div class="ttc" id="aIRtext_8h_html_a51c9fb58ee7d01e96e2571018aea746d"><div class="ttname"><a href="IRtext_8h.html#a51c9fb58ee7d01e96e2571018aea746d">kNoStr</a></div><div class="ttdeci">const char * kNoStr</div><div class="ttdoc">&quot;No&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:167</div></div>
<div class="ttc" id="aIRtext_8h_html_a818275085f8a8d7c083b66f081689b1f"><div class="ttname"><a href="IRtext_8h.html#a818275085f8a8d7c083b66f081689b1f">kOffTimerStr</a></div><div class="ttdeci">const char * kOffTimerStr</div><div class="ttdoc">&quot;OffTimer&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:43</div></div>
<div class="ttc" id="aIRtext_8h_html_ae389ed4ed6982d4617ee3f3e82ce388c"><div class="ttname"><a href="IRtext_8h.html#ae389ed4ed6982d4617ee3f3e82ce388c">kLowerStr</a></div><div class="ttdeci">const char * kLowerStr</div><div class="ttdoc">&quot;Lower&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:88</div></div>
<div class="ttc" id="aIRtext_8h_html_a98f3ba92617c82c9091f155eebcdb3f3"><div class="ttname"><a href="IRtext_8h.html#a98f3ba92617c82c9091f155eebcdb3f3">kDisplayTempStr</a></div><div class="ttdeci">const char * kDisplayTempStr</div><div class="ttdoc">&quot;Display Temp&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:140</div></div>
<div class="ttc" id="aIRtext_8h_html_a8415af77afcb671c3729d604be51fd22"><div class="ttname"><a href="IRtext_8h.html#a8415af77afcb671c3729d604be51fd22">kSwingVStr</a></div><div class="ttdeci">const char * kSwingVStr</div><div class="ttdoc">&quot;SwingV&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:34</div></div>
<div class="ttc" id="aIRtext_8h_html_a31a34e51d7f1f9360cc3a7ea3f2bf7a3"><div class="ttname"><a href="IRtext_8h.html#a31a34e51d7f1f9360cc3a7ea3f2bf7a3">kLowestStr</a></div><div class="ttdeci">const char * kLowestStr</div><div class="ttdoc">&quot;Lowest&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:120</div></div>
<div class="ttc" id="aIRtext_8h_html_a3ced6d2a545174133308d7803157f7f8"><div class="ttname"><a href="IRtext_8h.html#a3ced6d2a545174133308d7803157f7f8">kTurboStr</a></div><div class="ttdeci">const char * kTurboStr</div><div class="ttdoc">&quot;Turbo&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:25</div></div>
<div class="ttc" id="aIRtext_8h_html_a67a94ecb5a557b5335a8085cf1d8cdd6"><div class="ttname"><a href="IRtext_8h.html#a67a94ecb5a557b5335a8085cf1d8cdd6">kHourStr</a></div><div class="ttdeci">const char * kHourStr</div><div class="ttdoc">&quot;Hour&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:157</div></div>
<div class="ttc" id="aIRtext_8h_html_a6666695e388b607bfd3bb0e6efd4193f"><div class="ttname"><a href="IRtext_8h.html#a6666695e388b607bfd3bb0e6efd4193f">kModeStr</a></div><div class="ttdeci">const char * kModeStr</div><div class="ttdoc">&quot;Mode&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:23</div></div>
<div class="ttc" id="aIRtext_8h_html_a03e76a09bade0c229fea1ce31fe8c9a1"><div class="ttname"><a href="IRtext_8h.html#a03e76a09bade0c229fea1ce31fe8c9a1">kSensorTempStr</a></div><div class="ttdeci">const char * kSensorTempStr</div><div class="ttdoc">&quot;Sensor Temp&quot;</div><div class="ttdef"><b>Definition:</b> IRtext.cpp:141</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRtimer.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">IRtimer.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a4ac531aa761a28d68edbc12967038180"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRtimer_8cpp.html#a4ac531aa761a28d68edbc12967038180">_IRtimer_unittest_now</a> = 0</td></tr>
<tr class="separator:a4ac531aa761a28d68edbc12967038180"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed35ce7fa92ebb856a03f81e756cb2c6"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRtimer_8cpp.html#aed35ce7fa92ebb856a03f81e756cb2c6">_TimerMs_unittest_now</a> = 0</td></tr>
<tr class="separator:aed35ce7fa92ebb856a03f81e756cb2c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a4ac531aa761a28d68edbc12967038180"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ac531aa761a28d68edbc12967038180">&#9670;&nbsp;</a></span>_IRtimer_unittest_now</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t _IRtimer_unittest_now = 0</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aed35ce7fa92ebb856a03f81e756cb2c6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed35ce7fa92ebb856a03f81e756cb2c6">&#9670;&nbsp;</a></span>_TimerMs_unittest_now</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t _TimerMs_unittest_now = 0</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,94 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRtimer.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> </div>
<div class="headertitle">
<div class="title">IRtimer.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="IRtimer_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRtimer.html">IRtimer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This class performs a simple timer in useconds since instantiated. <a href="classIRtimer.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTimerMs.html">TimerMs</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This class performs a simple timer in milli-seoncds since instantiated. <a href="classTimerMs.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,128 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRtimer.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">IRtimer.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="IRtimer_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright 2017 David Conran</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; </div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#ifndef IRTIMER_H_</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#define IRTIMER_H_</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#define __STDC_LIMIT_MACROS</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; </div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// Classes</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; </div>
<div class="line"><a name="l00013"></a><span class="lineno"><a class="line" href="classIRtimer.html"> 13</a></span>&#160;<span class="keyword">class </span><a class="code" href="classIRtimer.html">IRtimer</a> {</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <a class="code" href="classIRtimer.html#a09d64d689137ef8ca68973bb9e550e76">IRtimer</a>();</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classIRtimer.html#aaaf886de2c9533a8c791242dc575db1a">reset</a>();</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; uint32_t <a class="code" href="classIRtimer.html#ad655e585f053580d49d8de7d52cd62a1">elapsed</a>();</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#ifdef UNIT_TEST</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classIRtimer.html#aa8e3ff975ae5468b4727790c828fa032">add</a>(uint32_t usecs);</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#endif // UNIT_TEST</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="classIRtimer.html#aaa087b8688ff8150e0fc1ec6d5c4a52a"> 23</a></span>&#160; uint32_t <a class="code" href="classIRtimer.html#aaa087b8688ff8150e0fc1ec6d5c4a52a">start</a>;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;};</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classTimerMs.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classTimerMs.html">TimerMs</a> {</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="classTimerMs.html#a7bf7f8d2fcf76b27b34ea4705810eef5">TimerMs</a>();</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classTimerMs.html#a25ab025793a4d432e7d4180cbd31157b">reset</a>();</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; uint32_t <a class="code" href="classTimerMs.html#ad4aa759c58727393f69863b3461dfc09">elapsed</a>();</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#ifdef UNIT_TEST</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classTimerMs.html#a77bfc23a029a9172c3dbac03f746b0cb">add</a>(uint32_t msecs);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#endif // UNIT_TEST</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; </div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">private</span>:</div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classTimerMs.html#a15ad2e08a5931397391d48f040722f65"> 38</a></span>&#160; uint32_t <a class="code" href="classTimerMs.html#a15ad2e08a5931397391d48f040722f65">start</a>;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;};</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#endif // IRTIMER_H_</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassTimerMs_html_a15ad2e08a5931397391d48f040722f65"><div class="ttname"><a href="classTimerMs.html#a15ad2e08a5931397391d48f040722f65">TimerMs::start</a></div><div class="ttdeci">uint32_t start</div><div class="ttdef"><b>Definition:</b> IRtimer.h:38</div></div>
<div class="ttc" id="aclassIRtimer_html"><div class="ttname"><a href="classIRtimer.html">IRtimer</a></div><div class="ttdoc">This class performs a simple timer in useconds since instantiated.</div><div class="ttdef"><b>Definition:</b> IRtimer.h:13</div></div>
<div class="ttc" id="aclassIRtimer_html_aa8e3ff975ae5468b4727790c828fa032"><div class="ttname"><a href="classIRtimer.html#aa8e3ff975ae5468b4727790c828fa032">IRtimer::add</a></div><div class="ttdeci">static void add(uint32_t usecs)</div><div class="ttdoc">Add time to the timer to simulate elapsed time.</div><div class="ttdef"><b>Definition:</b> IRtimer.cpp:44</div></div>
<div class="ttc" id="aclassIRtimer_html_aaaf886de2c9533a8c791242dc575db1a"><div class="ttname"><a href="classIRtimer.html#aaaf886de2c9533a8c791242dc575db1a">IRtimer::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the IRtimer object.</div><div class="ttdef"><b>Definition:</b> IRtimer.cpp:18</div></div>
<div class="ttc" id="aclassIRtimer_html_a09d64d689137ef8ca68973bb9e550e76"><div class="ttname"><a href="classIRtimer.html#a09d64d689137ef8ca68973bb9e550e76">IRtimer::IRtimer</a></div><div class="ttdeci">IRtimer()</div><div class="ttdoc">Class constructor.</div><div class="ttdef"><b>Definition:</b> IRtimer.cpp:15</div></div>
<div class="ttc" id="aclassIRtimer_html_ad655e585f053580d49d8de7d52cd62a1"><div class="ttname"><a href="classIRtimer.html#ad655e585f053580d49d8de7d52cd62a1">IRtimer::elapsed</a></div><div class="ttdeci">uint32_t elapsed()</div><div class="ttdoc">Calculate how many microseconds have elapsed since the timer was started.</div><div class="ttdef"><b>Definition:</b> IRtimer.cpp:28</div></div>
<div class="ttc" id="aclassTimerMs_html_ad4aa759c58727393f69863b3461dfc09"><div class="ttname"><a href="classTimerMs.html#ad4aa759c58727393f69863b3461dfc09">TimerMs::elapsed</a></div><div class="ttdeci">uint32_t elapsed()</div><div class="ttdoc">Calculate how many milliseconds have elapsed since the timer was started.</div><div class="ttdef"><b>Definition:</b> IRtimer.cpp:61</div></div>
<div class="ttc" id="aclassTimerMs_html_a25ab025793a4d432e7d4180cbd31157b"><div class="ttname"><a href="classTimerMs.html#a25ab025793a4d432e7d4180cbd31157b">TimerMs::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the TimerMs object.</div><div class="ttdef"><b>Definition:</b> IRtimer.cpp:51</div></div>
<div class="ttc" id="aclassTimerMs_html_a7bf7f8d2fcf76b27b34ea4705810eef5"><div class="ttname"><a href="classTimerMs.html#a7bf7f8d2fcf76b27b34ea4705810eef5">TimerMs::TimerMs</a></div><div class="ttdeci">TimerMs()</div><div class="ttdoc">Class constructor.</div><div class="ttdef"><b>Definition:</b> IRtimer.cpp:48</div></div>
<div class="ttc" id="aclassIRtimer_html_aaa087b8688ff8150e0fc1ec6d5c4a52a"><div class="ttname"><a href="classIRtimer.html#aaa087b8688ff8150e0fc1ec6d5c4a52a">IRtimer::start</a></div><div class="ttdeci">uint32_t start</div><div class="ttdef"><b>Definition:</b> IRtimer.h:23</div></div>
<div class="ttc" id="aclassTimerMs_html_a77bfc23a029a9172c3dbac03f746b0cb"><div class="ttname"><a href="classTimerMs.html#a77bfc23a029a9172c3dbac03f746b0cb">TimerMs::add</a></div><div class="ttdeci">static void add(uint32_t msecs)</div><div class="ttdoc">Add time to the timer to simulate elapsed time.</div><div class="ttdef"><b>Definition:</b> IRtimer.cpp:77</div></div>
<div class="ttc" id="aclassTimerMs_html"><div class="ttname"><a href="classTimerMs.html">TimerMs</a></div><div class="ttdoc">This class performs a simple timer in milli-seoncds since instantiated.</div><div class="ttdef"><b>Definition:</b> IRtimer.h:28</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,871 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRutils.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">IRutils.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceirutils"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html">irutils</a></td></tr>
<tr class="memdesc:namespaceirutils"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for covering common functions &amp; procedures for advancd protocol handlers. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a366219b6f1c46f41c6573b3e5e875e41"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a366219b6f1c46f41c6573b3e5e875e41">reverseBits</a> (uint64_t input, uint16_t nbits)</td></tr>
<tr class="memdesc:a366219b6f1c46f41c6573b3e5e875e41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reverse the order of the requested least significant nr. of bits. <a href="IRutils_8cpp.html#a366219b6f1c46f41c6573b3e5e875e41">More...</a><br /></td></tr>
<tr class="separator:a366219b6f1c46f41c6573b3e5e875e41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f6ddef74b41ef6f8d2805fcfc396420"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a9f6ddef74b41ef6f8d2805fcfc396420">uint64ToString</a> (uint64_t input, uint8_t base)</td></tr>
<tr class="memdesc:a9f6ddef74b41ef6f8d2805fcfc396420"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values. <a href="IRutils_8cpp.html#a9f6ddef74b41ef6f8d2805fcfc396420">More...</a><br /></td></tr>
<tr class="separator:a9f6ddef74b41ef6f8d2805fcfc396420"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2b0a4b9a1a7fca3d5f5afc14b682433"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#ad2b0a4b9a1a7fca3d5f5afc14b682433">serialPrintUint64</a> (uint64_t input, uint8_t base)</td></tr>
<tr class="memdesc:ad2b0a4b9a1a7fca3d5f5afc14b682433"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t) <a href="IRutils_8cpp.html#ad2b0a4b9a1a7fca3d5f5afc14b682433">More...</a><br /></td></tr>
<tr class="separator:ad2b0a4b9a1a7fca3d5f5afc14b682433"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1614f315c1ebc44eaf1ac62055cc1ff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#ae1614f315c1ebc44eaf1ac62055cc1ff">strToDecodeType</a> (const char *const str)</td></tr>
<tr class="memdesc:ae1614f315c1ebc44eaf1ac62055cc1ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a C-style string to a decode_type_t. <a href="IRutils_8cpp.html#ae1614f315c1ebc44eaf1ac62055cc1ff">More...</a><br /></td></tr>
<tr class="separator:ae1614f315c1ebc44eaf1ac62055cc1ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e98a1b929f36dfa75c2e325bf281cd1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a9e98a1b929f36dfa75c2e325bf281cd1">typeToString</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol, const bool isRepeat)</td></tr>
<tr class="memdesc:a9e98a1b929f36dfa75c2e325bf281cd1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a protocol type (enum etc) to a human readable string. <a href="IRutils_8cpp.html#a9e98a1b929f36dfa75c2e325bf281cd1">More...</a><br /></td></tr>
<tr class="separator:a9e98a1b929f36dfa75c2e325bf281cd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6efd4986db60709d3501606ec7ab5382"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a6efd4986db60709d3501606ec7ab5382">hasACState</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol)</td></tr>
<tr class="memdesc:a6efd4986db60709d3501606ec7ab5382"><td class="mdescLeft">&#160;</td><td class="mdescRight">Does the given protocol use a complex state as part of the decode? <a href="IRutils_8cpp.html#a6efd4986db60709d3501606ec7ab5382">More...</a><br /></td></tr>
<tr class="separator:a6efd4986db60709d3501606ec7ab5382"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad5f25cf6a2dded8b48f4a6dd16857be"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#aad5f25cf6a2dded8b48f4a6dd16857be">getCorrectedRawLength</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:aad5f25cf6a2dded8b48f4a6dd16857be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries. <a href="IRutils_8cpp.html#aad5f25cf6a2dded8b48f4a6dd16857be">More...</a><br /></td></tr>
<tr class="separator:aad5f25cf6a2dded8b48f4a6dd16857be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10fc00c8b399dddb67a228325e6e2f79"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a10fc00c8b399dddb67a228325e6e2f79">resultToSourceCode</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:a10fc00c8b399dddb67a228325e6e2f79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a String containing the key values of a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure in a C/C++ code style format. <a href="IRutils_8cpp.html#a10fc00c8b399dddb67a228325e6e2f79">More...</a><br /></td></tr>
<tr class="separator:a10fc00c8b399dddb67a228325e6e2f79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbfdef125ff077431f3abc27a1eeb800"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#afbfdef125ff077431f3abc27a1eeb800">resultToTimingInfo</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:afbfdef125ff077431f3abc27a1eeb800"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. <a href="IRutils_8cpp.html#afbfdef125ff077431f3abc27a1eeb800">More...</a><br /></td></tr>
<tr class="separator:afbfdef125ff077431f3abc27a1eeb800"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25a669d53f231de6152f8e60cedf39f7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a25a669d53f231de6152f8e60cedf39f7">resultToHexidecimal</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const result)</td></tr>
<tr class="memdesc:a25a669d53f231de6152f8e60cedf39f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure's value/state to simple hexadecimal. <a href="IRutils_8cpp.html#a25a669d53f231de6152f8e60cedf39f7">More...</a><br /></td></tr>
<tr class="separator:a25a669d53f231de6152f8e60cedf39f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8">resultToHumanReadableBasic</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure into a human readable format. <a href="IRutils_8cpp.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8">More...</a><br /></td></tr>
<tr class="separator:a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"><td class="memItemLeft" align="right" valign="top">uint16_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a">resultToRawArray</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const decode)</td></tr>
<tr class="memdesc:a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> into an array suitable for <code>sendRaw()</code>. <a href="IRutils_8cpp.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a">More...</a><br /></td></tr>
<tr class="separator:a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfbd3d7cc33d0aac341e6619f3390108"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#abfbd3d7cc33d0aac341e6619f3390108">sumBytes</a> (const uint8_t *const start, const uint16_t length, const uint8_t init)</td></tr>
<tr class="memdesc:abfbd3d7cc33d0aac341e6619f3390108"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sum all the bytes of an array and return the least significant 8-bits of the result. <a href="IRutils_8cpp.html#abfbd3d7cc33d0aac341e6619f3390108">More...</a><br /></td></tr>
<tr class="separator:abfbd3d7cc33d0aac341e6619f3390108"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa2a3fb714375e61051a0b24623b9cc9"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#aaa2a3fb714375e61051a0b24623b9cc9">xorBytes</a> (const uint8_t *const start, const uint16_t length, const uint8_t init)</td></tr>
<tr class="memdesc:aaa2a3fb714375e61051a0b24623b9cc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate a rolling XOR of all the bytes of an array. <a href="IRutils_8cpp.html#aaa2a3fb714375e61051a0b24623b9cc9">More...</a><br /></td></tr>
<tr class="separator:aaa2a3fb714375e61051a0b24623b9cc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84621a9f7fb2d57bd425f9f0d662cf7d"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a84621a9f7fb2d57bd425f9f0d662cf7d">countBits</a> (const uint8_t *const start, const uint16_t length, const bool ones, const uint16_t init)</td></tr>
<tr class="memdesc:a84621a9f7fb2d57bd425f9f0d662cf7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Count the number of bits of a certain type in an array. <a href="IRutils_8cpp.html#a84621a9f7fb2d57bd425f9f0d662cf7d">More...</a><br /></td></tr>
<tr class="separator:a84621a9f7fb2d57bd425f9f0d662cf7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae8042367bb94df81672603270fa7342"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#aae8042367bb94df81672603270fa7342">countBits</a> (const uint64_t data, const uint8_t length, const bool ones, const uint16_t init)</td></tr>
<tr class="memdesc:aae8042367bb94df81672603270fa7342"><td class="mdescLeft">&#160;</td><td class="mdescRight">Count the number of bits of a certain type in an Integer. <a href="IRutils_8cpp.html#aae8042367bb94df81672603270fa7342">More...</a><br /></td></tr>
<tr class="separator:aae8042367bb94df81672603270fa7342"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a85904f25c8ec77fb554d238c59cfdb"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a1a85904f25c8ec77fb554d238c59cfdb">invertBits</a> (const uint64_t data, const uint16_t nbits)</td></tr>
<tr class="memdesc:a1a85904f25c8ec77fb554d238c59cfdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invert/Flip the bits in an Integer. <a href="IRutils_8cpp.html#a1a85904f25c8ec77fb554d238c59cfdb">More...</a><br /></td></tr>
<tr class="separator:a1a85904f25c8ec77fb554d238c59cfdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19b940e26a4f8ddcaf86cce1ec62d563"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a19b940e26a4f8ddcaf86cce1ec62d563">celsiusToFahrenheit</a> (const float deg)</td></tr>
<tr class="memdesc:a19b940e26a4f8ddcaf86cce1ec62d563"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert degrees Celsius to degrees Fahrenheit. <a href="IRutils_8cpp.html#a19b940e26a4f8ddcaf86cce1ec62d563">More...</a><br /></td></tr>
<tr class="separator:a19b940e26a4f8ddcaf86cce1ec62d563"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83538e86145850c24b1c824723089502"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8cpp.html#a83538e86145850c24b1c824723089502">fahrenheitToCelsius</a> (const float deg)</td></tr>
<tr class="memdesc:a83538e86145850c24b1c824723089502"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert degrees Fahrenheit to degrees Celsius. <a href="IRutils_8cpp.html#a83538e86145850c24b1c824723089502">More...</a><br /></td></tr>
<tr class="separator:a83538e86145850c24b1c824723089502"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac98793392d1e65c1b8d6895eb9d9b75b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b">irutils::addLabeledString</a> (const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> value, const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label, const bool precomma)</td></tr>
<tr class="memdesc:ac98793392d1e65c1b8d6895eb9d9b75b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String with a colon separated "label: value" pair suitable for Humans. <a href="namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b">More...</a><br /></td></tr>
<tr class="separator:ac98793392d1e65c1b8d6895eb9d9b75b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12ba9cf1830a886649a80c3cc5fdce2b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b">irutils::addBoolToString</a> (const bool value, const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label, const bool precomma)</td></tr>
<tr class="memdesc:a12ba9cf1830a886649a80c3cc5fdce2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String with a colon separated flag suitable for Humans. e.g. "Power: On". <a href="namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b">More...</a><br /></td></tr>
<tr class="separator:a12ba9cf1830a886649a80c3cc5fdce2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a772e623c4b60208200e02afbaec66651"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a772e623c4b60208200e02afbaec66651">irutils::addIntToString</a> (const uint16_t value, const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label, const bool precomma)</td></tr>
<tr class="memdesc:a772e623c4b60208200e02afbaec66651"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23". <a href="namespaceirutils.html#a772e623c4b60208200e02afbaec66651">More...</a><br /></td></tr>
<tr class="separator:a772e623c4b60208200e02afbaec66651"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae89b70ce66617a8707c1951eadbc6fbd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd">irutils::modelToStr</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol, const int16_t model)</td></tr>
<tr class="memdesc:ae89b70ce66617a8707c1951eadbc6fbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate the model string for a given Protocol/Model pair. <a href="namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd">More...</a><br /></td></tr>
<tr class="separator:ae89b70ce66617a8707c1951eadbc6fbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06e5a5c2b6f6649035dfa5eb19801367"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367">irutils::addModelToString</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol, const int16_t model, const bool precomma)</td></tr>
<tr class="memdesc:a06e5a5c2b6f6649035dfa5eb19801367"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for a given protocol model number. e.g. "Model: JKE". <a href="namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367">More...</a><br /></td></tr>
<tr class="separator:a06e5a5c2b6f6649035dfa5eb19801367"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cef0634f4db979a93b7dc19cc2b4a85"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85">irutils::addTempToString</a> (const uint16_t degrees, const bool celsius, const bool precomma)</td></tr>
<tr class="memdesc:a0cef0634f4db979a93b7dc19cc2b4a85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for a given temperature. e.g. "Temp: 25C". <a href="namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85">More...</a><br /></td></tr>
<tr class="separator:a0cef0634f4db979a93b7dc19cc2b4a85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b74ae0258e98aa0eaebc6f3efe1481e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e">irutils::addModeToString</a> (const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan)</td></tr>
<tr class="memdesc:a8b74ae0258e98aa0eaebc6f3efe1481e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)". <a href="namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e">More...</a><br /></td></tr>
<tr class="separator:a8b74ae0258e98aa0eaebc6f3efe1481e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ead1d10578c64627f8a24b5d8a7444f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f">irutils::addDayToString</a> (const uint8_t day_of_week, const int8_t offset, const bool precomma)</td></tr>
<tr class="memdesc:a6ead1d10578c64627f8a24b5d8a7444f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of the 3-letter day of the week from a numerical day of the week. e.g. "Day: 1 (Mon)". <a href="namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f">More...</a><br /></td></tr>
<tr class="separator:a6ead1d10578c64627f8a24b5d8a7444f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae023bbabc452173d348c14eac7d86ab4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ae023bbabc452173d348c14eac7d86ab4">irutils::addFanToString</a> (const uint8_t speed, const uint8_t high, const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium)</td></tr>
<tr class="memdesc:ae023bbabc452173d348c14eac7d86ab4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)". <a href="namespaceirutils.html#ae023bbabc452173d348c14eac7d86ab4">More...</a><br /></td></tr>
<tr class="separator:ae023bbabc452173d348c14eac7d86ab4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e55c6fdcc82e1ef8bd5f73df83609a7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7">irutils::htmlEscape</a> (const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> unescaped)</td></tr>
<tr class="memdesc:a6e55c6fdcc82e1ef8bd5f73df83609a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS. <a href="namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7">More...</a><br /></td></tr>
<tr class="separator:a6e55c6fdcc82e1ef8bd5f73df83609a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c59c8dd886c283fdb8adc9082c6890a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a">irutils::msToString</a> (uint32_t const msecs)</td></tr>
<tr class="memdesc:a9c59c8dd886c283fdb8adc9082c6890a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds". <a href="namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a">More...</a><br /></td></tr>
<tr class="separator:a9c59c8dd886c283fdb8adc9082c6890a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebab40a2c69624adc1a5a8a6db72952f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f">irutils::minsToString</a> (const uint16_t mins)</td></tr>
<tr class="memdesc:aebab40a2c69624adc1a5a8a6db72952f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59". <a href="namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f">More...</a><br /></td></tr>
<tr class="separator:aebab40a2c69624adc1a5a8a6db72952f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4752ecc3eafa3ca2e13344a52519b343"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a4752ecc3eafa3ca2e13344a52519b343">irutils::sumNibbles</a> (const uint8_t *const start, const uint16_t length, const uint8_t init)</td></tr>
<tr class="memdesc:a4752ecc3eafa3ca2e13344a52519b343"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sum all the nibbles together in a series of bytes. <a href="namespaceirutils.html#a4752ecc3eafa3ca2e13344a52519b343">More...</a><br /></td></tr>
<tr class="separator:a4752ecc3eafa3ca2e13344a52519b343"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb5202fa0093ee6b7e07d4290229fbd2"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#aeb5202fa0093ee6b7e07d4290229fbd2">irutils::sumNibbles</a> (const uint64_t data, const uint8_t count, const uint8_t init, const bool nibbleonly)</td></tr>
<tr class="memdesc:aeb5202fa0093ee6b7e07d4290229fbd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sum all the nibbles together in an integer. <a href="namespaceirutils.html#aeb5202fa0093ee6b7e07d4290229fbd2">More...</a><br /></td></tr>
<tr class="separator:aeb5202fa0093ee6b7e07d4290229fbd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af18c4abfd0ed9f4b3a099ecec1999ee7"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#af18c4abfd0ed9f4b3a099ecec1999ee7">irutils::bcdToUint8</a> (const uint8_t bcd)</td></tr>
<tr class="memdesc:af18c4abfd0ed9f4b3a099ecec1999ee7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a byte of Binary Coded Decimal(BCD) into an Integer. <a href="namespaceirutils.html#af18c4abfd0ed9f4b3a099ecec1999ee7">More...</a><br /></td></tr>
<tr class="separator:af18c4abfd0ed9f4b3a099ecec1999ee7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a534704a52b75acd46f687cc0a2b91bf1"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1">irutils::uint8ToBcd</a> (const uint8_t integer)</td></tr>
<tr class="memdesc:a534704a52b75acd46f687cc0a2b91bf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an Integer into a byte of Binary Coded Decimal(BCD). <a href="namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1">More...</a><br /></td></tr>
<tr class="separator:a534704a52b75acd46f687cc0a2b91bf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0756774b20e4f7c836abee466800ee6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ac0756774b20e4f7c836abee466800ee6">irutils::getBit</a> (const uint64_t data, const uint8_t position, const uint8_t size)</td></tr>
<tr class="memdesc:ac0756774b20e4f7c836abee466800ee6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of <code>position</code>th bit of an Integer. <a href="namespaceirutils.html#ac0756774b20e4f7c836abee466800ee6">More...</a><br /></td></tr>
<tr class="separator:ac0756774b20e4f7c836abee466800ee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27f90f74ed0b7af37c7bd8cd2a059dee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a27f90f74ed0b7af37c7bd8cd2a059dee">irutils::getBit</a> (const uint8_t data, const uint8_t position)</td></tr>
<tr class="memdesc:a27f90f74ed0b7af37c7bd8cd2a059dee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of <code>position</code>th bit of an Integer. <a href="namespaceirutils.html#a27f90f74ed0b7af37c7bd8cd2a059dee">More...</a><br /></td></tr>
<tr class="separator:a27f90f74ed0b7af37c7bd8cd2a059dee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a316301577d2ff338bfba6605df2cc46b"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b">irutils::setBit</a> (const uint64_t data, const uint8_t position, const bool on, const uint8_t size)</td></tr>
<tr class="memdesc:a316301577d2ff338bfba6605df2cc46b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of an Integer with the <code>position</code>th bit changed. <a href="namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b">More...</a><br /></td></tr>
<tr class="separator:a316301577d2ff338bfba6605df2cc46b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e9e858b490fa3328b4c5bd01adedb8c"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a2e9e858b490fa3328b4c5bd01adedb8c">irutils::setBit</a> (const uint8_t data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:a2e9e858b490fa3328b4c5bd01adedb8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of an Integer with the <code>position</code>th bit changed. <a href="namespaceirutils.html#a2e9e858b490fa3328b4c5bd01adedb8c">More...</a><br /></td></tr>
<tr class="separator:a2e9e858b490fa3328b4c5bd01adedb8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1b3de6e733d9c4d614a8239f5bd3220"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ac1b3de6e733d9c4d614a8239f5bd3220">irutils::setBit</a> (uint8_t *const data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:ac1b3de6e733d9c4d614a8239f5bd3220"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter the value of an Integer with the <code>position</code>th bit changed. <a href="namespaceirutils.html#ac1b3de6e733d9c4d614a8239f5bd3220">More...</a><br /></td></tr>
<tr class="separator:ac1b3de6e733d9c4d614a8239f5bd3220"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86bbcf05c1601712b1d587b87035f09b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a86bbcf05c1601712b1d587b87035f09b">irutils::setBit</a> (uint32_t *const data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:a86bbcf05c1601712b1d587b87035f09b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter the value of an Integer with the <code>position</code>th bit changed. <a href="namespaceirutils.html#a86bbcf05c1601712b1d587b87035f09b">More...</a><br /></td></tr>
<tr class="separator:a86bbcf05c1601712b1d587b87035f09b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e7814e2274f02df0dac0106c293c487"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a9e7814e2274f02df0dac0106c293c487">irutils::setBit</a> (uint64_t *const data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:a9e7814e2274f02df0dac0106c293c487"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter the value of an Integer with the <code>position</code>th bit changed. <a href="namespaceirutils.html#a9e7814e2274f02df0dac0106c293c487">More...</a><br /></td></tr>
<tr class="separator:a9e7814e2274f02df0dac0106c293c487"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4f5e3eb26e111909ddc93a8b018ba78"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78">irutils::setBits</a> (uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)</td></tr>
<tr class="memdesc:ab4f5e3eb26e111909ddc93a8b018ba78"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter an uint8_t value by overwriting an arbitary given number of bits. <a href="namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78">More...</a><br /></td></tr>
<tr class="separator:ab4f5e3eb26e111909ddc93a8b018ba78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fd8b18a76f0ae8f730b4de55fc9486e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a3fd8b18a76f0ae8f730b4de55fc9486e">irutils::setBits</a> (uint32_t *const dst, const uint8_t offset, const uint8_t nbits, const uint32_t data)</td></tr>
<tr class="memdesc:a3fd8b18a76f0ae8f730b4de55fc9486e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter an uint32_t value by overwriting an arbitary given number of bits. <a href="namespaceirutils.html#a3fd8b18a76f0ae8f730b4de55fc9486e">More...</a><br /></td></tr>
<tr class="separator:a3fd8b18a76f0ae8f730b4de55fc9486e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4dfb0984a9ea38602805987a7845839c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a4dfb0984a9ea38602805987a7845839c">irutils::setBits</a> (uint64_t *const dst, const uint8_t offset, const uint8_t nbits, const uint64_t data)</td></tr>
<tr class="memdesc:a4dfb0984a9ea38602805987a7845839c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter an uint64_t value by overwriting an arbitary given number of bits. <a href="namespaceirutils.html#a4dfb0984a9ea38602805987a7845839c">More...</a><br /></td></tr>
<tr class="separator:a4dfb0984a9ea38602805987a7845839c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a19b940e26a4f8ddcaf86cce1ec62d563"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19b940e26a4f8ddcaf86cce1ec62d563">&#9670;&nbsp;</a></span>celsiusToFahrenheit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float celsiusToFahrenheit </td>
<td>(</td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>deg</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert degrees Celsius to degrees Fahrenheit. </p>
</div>
</div>
<a id="aae8042367bb94df81672603270fa7342"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae8042367bb94df81672603270fa7342">&#9670;&nbsp;</a></span>countBits() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t countBits </td>
<td>(</td>
<td class="paramtype">const uint64_t&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>ones</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>init</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Count the number of bits of a certain type in an Integer. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The value you want bits counted for. Starting from the LSB. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bits to use in the calculation? Starts at the LSB </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ones</td><td>Count the binary nr of <code>1</code> bits. False is count the <code>0</code>s. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The nr. of bits found of the given type found in the Integer. </dd></dl>
</div>
</div>
<a id="a84621a9f7fb2d57bd425f9f0d662cf7d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84621a9f7fb2d57bd425f9f0d662cf7d">&#9670;&nbsp;</a></span>countBits() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t countBits </td>
<td>(</td>
<td class="paramtype">const uint8_t *const&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>ones</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>init</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Count the number of bits of a certain type in an array. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>A ptr to the start of the byte array to calculate over. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bytes to use in the calculation. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ones</td><td>Count the binary nr of <code>1</code> bits. False is count the <code>0</code>s. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The nr. of bits found of the given type found in the array. </dd></dl>
</div>
</div>
<a id="a83538e86145850c24b1c824723089502"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83538e86145850c24b1c824723089502">&#9670;&nbsp;</a></span>fahrenheitToCelsius()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float fahrenheitToCelsius </td>
<td>(</td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>deg</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert degrees Fahrenheit to degrees Celsius. </p>
</div>
</div>
<a id="aad5f25cf6a2dded8b48f4a6dd16857be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad5f25cf6a2dded8b48f4a6dd16857be">&#9670;&nbsp;</a></span>getCorrectedRawLength()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t getCorrectedRawLength </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>results</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The corrected length. </dd></dl>
</div>
</div>
<a id="a6efd4986db60709d3501606ec7ab5382"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6efd4986db60709d3501606ec7ab5382">&#9670;&nbsp;</a></span>hasACState()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool hasACState </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a>&#160;</td>
<td class="paramname"><em>protocol</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Does the given protocol use a complex state as part of the decode? </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">protocol</td><td>The decode_type_t protocol we are enquiring about. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the protocol uses a state array. False if just an integer. </dd></dl>
</div>
</div>
<a id="a1a85904f25c8ec77fb554d238c59cfdb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a85904f25c8ec77fb554d238c59cfdb">&#9670;&nbsp;</a></span>invertBits()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t invertBits </td>
<td>(</td>
<td class="paramtype">const uint64_t&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>nbits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Invert/Flip the bits in an Integer. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The Integer that will be inverted. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nbits</td><td>How many bits are to be inverted. Starting from the LSB. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>An Integer with the appropriate bits inverted/flipped. </dd></dl>
</div>
</div>
<a id="a25a669d53f231de6152f8e60cedf39f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a25a669d53f231de6152f8e60cedf39f7">&#9670;&nbsp;</a></span>resultToHexidecimal()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToHexidecimal </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>result</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure's value/state to simple hexadecimal. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">result</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the output. </dd></dl>
</div>
</div>
<a id="a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8">&#9670;&nbsp;</a></span>resultToHumanReadableBasic()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToHumanReadableBasic </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>results</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure into a human readable format. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the output. </dd></dl>
</div>
</div>
<a id="a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a">&#9670;&nbsp;</a></span>resultToRawArray()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t* resultToRawArray </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>decode</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> into an array suitable for <code>sendRaw()</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">decode</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure that contains a mesg. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A PTR to a dynamically allocated uint16_t sendRaw compatible array. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>The returned array needs to be delete[]'ed/free()'ed (deallocated) after use by caller. </dd></dl>
</div>
</div>
<a id="a10fc00c8b399dddb67a228325e6e2f79"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10fc00c8b399dddb67a228325e6e2f79">&#9670;&nbsp;</a></span>resultToSourceCode()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToSourceCode </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>results</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return a String containing the key values of a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure in a C/C++ code style format. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the code-ified result. </dd></dl>
</div>
</div>
<a id="afbfdef125ff077431f3abc27a1eeb800"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbfdef125ff077431f3abc27a1eeb800">&#9670;&nbsp;</a></span>resultToTimingInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToTimingInfo </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>results</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the legacy information format. </dd></dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000003">Deprecated:</a></b></dt><dd>This is only for those that want this legacy format. </dd></dl>
</div>
</div>
<a id="a366219b6f1c46f41c6573b3e5e875e41"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a366219b6f1c46f41c6573b3e5e875e41">&#9670;&nbsp;</a></span>reverseBits()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t reverseBits </td>
<td>(</td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>nbits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reverse the order of the requested least significant nr. of bits. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>Bit pattern/integer to reverse. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nbits</td><td>Nr. of bits to reverse. (LSB -&gt; MSB) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The reversed bit pattern. </dd></dl>
</div>
</div>
<a id="ad2b0a4b9a1a7fca3d5f5afc14b682433"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad2b0a4b9a1a7fca3d5f5afc14b682433">&#9670;&nbsp;</a></span>serialPrintUint64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void serialPrintUint64 </td>
<td>(</td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>base</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t) </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>The value to print </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>The output base. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ae1614f315c1ebc44eaf1ac62055cc1ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1614f315c1ebc44eaf1ac62055cc1ff">&#9670;&nbsp;</a></span>strToDecodeType()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> strToDecodeType </td>
<td>(</td>
<td class="paramtype">const char *const&#160;</td>
<td class="paramname"><em>str</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a C-style string to a decode_type_t. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">str</td><td>A C-style string containing a protocol name or number. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A decode_type_t enum. (decode_type_t::UNKNOWN if no match.) </dd></dl>
</div>
</div>
<a id="abfbd3d7cc33d0aac341e6619f3390108"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abfbd3d7cc33d0aac341e6619f3390108">&#9670;&nbsp;</a></span>sumBytes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t sumBytes </td>
<td>(</td>
<td class="paramtype">const uint8_t *const&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>init</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sum all the bytes of an array and return the least significant 8-bits of the result. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>A ptr to the start of the byte array to calculate over. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bytes to use in the calculation. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The 8-bit calculated result of all the bytes and init value. </dd></dl>
</div>
</div>
<a id="a9e98a1b929f36dfa75c2e325bf281cd1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e98a1b929f36dfa75c2e325bf281cd1">&#9670;&nbsp;</a></span>typeToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> typeToString </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a>&#160;</td>
<td class="paramname"><em>protocol</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>isRepeat</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a protocol type (enum etc) to a human readable string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">protocol</td><td>Nr. (enum) of the protocol. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">isRepeat</td><td>A flag indicating if it is a repeat message. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the protocol name. kUnknownStr if no match. </dd></dl>
</div>
</div>
<a id="a9f6ddef74b41ef6f8d2805fcfc396420"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f6ddef74b41ef6f8d2805fcfc396420">&#9670;&nbsp;</a></span>uint64ToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> uint64ToString </td>
<td>(</td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>base</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>The value to print </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>The output base. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String representation of the integer. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>Based on Arduino's Print::printNumber() </dd></dl>
</div>
</div>
<a id="aaa2a3fb714375e61051a0b24623b9cc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa2a3fb714375e61051a0b24623b9cc9">&#9670;&nbsp;</a></span>xorBytes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t xorBytes </td>
<td>(</td>
<td class="paramtype">const uint8_t *const&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>init</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate a rolling XOR of all the bytes of an array. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>A ptr to the start of the byte array to calculate over. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bytes to use in the calculation. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The 8-bit calculated result of all the bytes and init value. </dd></dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,942 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRutils.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">IRutils.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="IRutils_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceirutils"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html">irutils</a></td></tr>
<tr class="memdesc:namespaceirutils"><td class="mdescLeft">&#160;</td><td class="mdescRight">Namespace for covering common functions &amp; procedures for advancd protocol handlers. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a366219b6f1c46f41c6573b3e5e875e41"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a366219b6f1c46f41c6573b3e5e875e41">reverseBits</a> (uint64_t input, uint16_t nbits)</td></tr>
<tr class="memdesc:a366219b6f1c46f41c6573b3e5e875e41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reverse the order of the requested least significant nr. of bits. <a href="IRutils_8h.html#a366219b6f1c46f41c6573b3e5e875e41">More...</a><br /></td></tr>
<tr class="separator:a366219b6f1c46f41c6573b3e5e875e41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a781650451d38303e80da677539f574ee"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a781650451d38303e80da677539f574ee">uint64ToString</a> (uint64_t input, uint8_t base=10)</td></tr>
<tr class="memdesc:a781650451d38303e80da677539f574ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values. <a href="IRutils_8h.html#a781650451d38303e80da677539f574ee">More...</a><br /></td></tr>
<tr class="separator:a781650451d38303e80da677539f574ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f49135f3d160700eb12ff6b7309341c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a7f49135f3d160700eb12ff6b7309341c">typeToString</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol, const bool isRepeat=false)</td></tr>
<tr class="memdesc:a7f49135f3d160700eb12ff6b7309341c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a protocol type (enum etc) to a human readable string. <a href="IRutils_8h.html#a7f49135f3d160700eb12ff6b7309341c">More...</a><br /></td></tr>
<tr class="separator:a7f49135f3d160700eb12ff6b7309341c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a315d5f05fb572564025bc9ce9b820243"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a315d5f05fb572564025bc9ce9b820243">serialPrintUint64</a> (uint64_t input, uint8_t base=10)</td></tr>
<tr class="memdesc:a315d5f05fb572564025bc9ce9b820243"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t) <a href="IRutils_8h.html#a315d5f05fb572564025bc9ce9b820243">More...</a><br /></td></tr>
<tr class="separator:a315d5f05fb572564025bc9ce9b820243"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10fc00c8b399dddb67a228325e6e2f79"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a10fc00c8b399dddb67a228325e6e2f79">resultToSourceCode</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:a10fc00c8b399dddb67a228325e6e2f79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a String containing the key values of a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure in a C/C++ code style format. <a href="IRutils_8h.html#a10fc00c8b399dddb67a228325e6e2f79">More...</a><br /></td></tr>
<tr class="separator:a10fc00c8b399dddb67a228325e6e2f79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbfdef125ff077431f3abc27a1eeb800"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#afbfdef125ff077431f3abc27a1eeb800">resultToTimingInfo</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:afbfdef125ff077431f3abc27a1eeb800"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. <a href="IRutils_8h.html#afbfdef125ff077431f3abc27a1eeb800">More...</a><br /></td></tr>
<tr class="separator:afbfdef125ff077431f3abc27a1eeb800"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8">resultToHumanReadableBasic</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure into a human readable format. <a href="IRutils_8h.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8">More...</a><br /></td></tr>
<tr class="separator:a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25a669d53f231de6152f8e60cedf39f7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a25a669d53f231de6152f8e60cedf39f7">resultToHexidecimal</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const result)</td></tr>
<tr class="memdesc:a25a669d53f231de6152f8e60cedf39f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure's value/state to simple hexadecimal. <a href="IRutils_8h.html#a25a669d53f231de6152f8e60cedf39f7">More...</a><br /></td></tr>
<tr class="separator:a25a669d53f231de6152f8e60cedf39f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6efd4986db60709d3501606ec7ab5382"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a6efd4986db60709d3501606ec7ab5382">hasACState</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol)</td></tr>
<tr class="memdesc:a6efd4986db60709d3501606ec7ab5382"><td class="mdescLeft">&#160;</td><td class="mdescRight">Does the given protocol use a complex state as part of the decode? <a href="IRutils_8h.html#a6efd4986db60709d3501606ec7ab5382">More...</a><br /></td></tr>
<tr class="separator:a6efd4986db60709d3501606ec7ab5382"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad5f25cf6a2dded8b48f4a6dd16857be"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#aad5f25cf6a2dded8b48f4a6dd16857be">getCorrectedRawLength</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const results)</td></tr>
<tr class="memdesc:aad5f25cf6a2dded8b48f4a6dd16857be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries. <a href="IRutils_8h.html#aad5f25cf6a2dded8b48f4a6dd16857be">More...</a><br /></td></tr>
<tr class="separator:aad5f25cf6a2dded8b48f4a6dd16857be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"><td class="memItemLeft" align="right" valign="top">uint16_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a">resultToRawArray</a> (const <a class="el" href="classdecode__results.html">decode_results</a> *const decode)</td></tr>
<tr class="memdesc:a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> into an array suitable for <code>sendRaw()</code>. <a href="IRutils_8h.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a">More...</a><br /></td></tr>
<tr class="separator:a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f33bdd680bea210b212d4e9925eb8eb"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a3f33bdd680bea210b212d4e9925eb8eb">sumBytes</a> (const uint8_t *const start, const uint16_t length, const uint8_t init=0)</td></tr>
<tr class="memdesc:a3f33bdd680bea210b212d4e9925eb8eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sum all the bytes of an array and return the least significant 8-bits of the result. <a href="IRutils_8h.html#a3f33bdd680bea210b212d4e9925eb8eb">More...</a><br /></td></tr>
<tr class="separator:a3f33bdd680bea210b212d4e9925eb8eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab030689a93499311ee8e6621ac8757aa"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#ab030689a93499311ee8e6621ac8757aa">xorBytes</a> (const uint8_t *const start, const uint16_t length, const uint8_t init=0)</td></tr>
<tr class="memdesc:ab030689a93499311ee8e6621ac8757aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate a rolling XOR of all the bytes of an array. <a href="IRutils_8h.html#ab030689a93499311ee8e6621ac8757aa">More...</a><br /></td></tr>
<tr class="separator:ab030689a93499311ee8e6621ac8757aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27816eac50afafa9e53ba4b53675da20"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a27816eac50afafa9e53ba4b53675da20">countBits</a> (const uint8_t *const start, const uint16_t length, const bool ones=true, const uint16_t init=0)</td></tr>
<tr class="memdesc:a27816eac50afafa9e53ba4b53675da20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Count the number of bits of a certain type in an array. <a href="IRutils_8h.html#a27816eac50afafa9e53ba4b53675da20">More...</a><br /></td></tr>
<tr class="separator:a27816eac50afafa9e53ba4b53675da20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a719829db11f5d5560b4367c0d2d365"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a5a719829db11f5d5560b4367c0d2d365">countBits</a> (const uint64_t data, const uint8_t length, const bool ones=true, const uint16_t init=0)</td></tr>
<tr class="memdesc:a5a719829db11f5d5560b4367c0d2d365"><td class="mdescLeft">&#160;</td><td class="mdescRight">Count the number of bits of a certain type in an Integer. <a href="IRutils_8h.html#a5a719829db11f5d5560b4367c0d2d365">More...</a><br /></td></tr>
<tr class="separator:a5a719829db11f5d5560b4367c0d2d365"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a85904f25c8ec77fb554d238c59cfdb"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a1a85904f25c8ec77fb554d238c59cfdb">invertBits</a> (const uint64_t data, const uint16_t nbits)</td></tr>
<tr class="memdesc:a1a85904f25c8ec77fb554d238c59cfdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invert/Flip the bits in an Integer. <a href="IRutils_8h.html#a1a85904f25c8ec77fb554d238c59cfdb">More...</a><br /></td></tr>
<tr class="separator:a1a85904f25c8ec77fb554d238c59cfdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10b9312e4ac9c96d895af83db01ed72e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a10b9312e4ac9c96d895af83db01ed72e">strToDecodeType</a> (const char *str)</td></tr>
<tr class="memdesc:a10b9312e4ac9c96d895af83db01ed72e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a C-style string to a decode_type_t. <a href="IRutils_8h.html#a10b9312e4ac9c96d895af83db01ed72e">More...</a><br /></td></tr>
<tr class="separator:a10b9312e4ac9c96d895af83db01ed72e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19b940e26a4f8ddcaf86cce1ec62d563"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a19b940e26a4f8ddcaf86cce1ec62d563">celsiusToFahrenheit</a> (const float deg)</td></tr>
<tr class="memdesc:a19b940e26a4f8ddcaf86cce1ec62d563"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert degrees Celsius to degrees Fahrenheit. <a href="IRutils_8h.html#a19b940e26a4f8ddcaf86cce1ec62d563">More...</a><br /></td></tr>
<tr class="separator:a19b940e26a4f8ddcaf86cce1ec62d563"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83538e86145850c24b1c824723089502"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a83538e86145850c24b1c824723089502">fahrenheitToCelsius</a> (const float deg)</td></tr>
<tr class="memdesc:a83538e86145850c24b1c824723089502"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert degrees Fahrenheit to degrees Celsius. <a href="IRutils_8h.html#a83538e86145850c24b1c824723089502">More...</a><br /></td></tr>
<tr class="separator:a83538e86145850c24b1c824723089502"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12ba9cf1830a886649a80c3cc5fdce2b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b">irutils::addBoolToString</a> (const bool value, const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label, const bool precomma)</td></tr>
<tr class="memdesc:a12ba9cf1830a886649a80c3cc5fdce2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String with a colon separated flag suitable for Humans. e.g. "Power: On". <a href="namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b">More...</a><br /></td></tr>
<tr class="separator:a12ba9cf1830a886649a80c3cc5fdce2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a772e623c4b60208200e02afbaec66651"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a772e623c4b60208200e02afbaec66651">irutils::addIntToString</a> (const uint16_t value, const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label, const bool precomma)</td></tr>
<tr class="memdesc:a772e623c4b60208200e02afbaec66651"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23". <a href="namespaceirutils.html#a772e623c4b60208200e02afbaec66651">More...</a><br /></td></tr>
<tr class="separator:a772e623c4b60208200e02afbaec66651"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae89b70ce66617a8707c1951eadbc6fbd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd">irutils::modelToStr</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol, const int16_t model)</td></tr>
<tr class="memdesc:ae89b70ce66617a8707c1951eadbc6fbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate the model string for a given Protocol/Model pair. <a href="namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd">More...</a><br /></td></tr>
<tr class="separator:ae89b70ce66617a8707c1951eadbc6fbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06e5a5c2b6f6649035dfa5eb19801367"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367">irutils::addModelToString</a> (const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol, const int16_t model, const bool precomma)</td></tr>
<tr class="memdesc:a06e5a5c2b6f6649035dfa5eb19801367"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for a given protocol model number. e.g. "Model: JKE". <a href="namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367">More...</a><br /></td></tr>
<tr class="separator:a06e5a5c2b6f6649035dfa5eb19801367"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac98793392d1e65c1b8d6895eb9d9b75b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b">irutils::addLabeledString</a> (const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> value, const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label, const bool precomma)</td></tr>
<tr class="memdesc:ac98793392d1e65c1b8d6895eb9d9b75b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String with a colon separated "label: value" pair suitable for Humans. <a href="namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b">More...</a><br /></td></tr>
<tr class="separator:ac98793392d1e65c1b8d6895eb9d9b75b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cef0634f4db979a93b7dc19cc2b4a85"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85">irutils::addTempToString</a> (const uint16_t degrees, const bool celsius, const bool precomma)</td></tr>
<tr class="memdesc:a0cef0634f4db979a93b7dc19cc2b4a85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for a given temperature. e.g. "Temp: 25C". <a href="namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85">More...</a><br /></td></tr>
<tr class="separator:a0cef0634f4db979a93b7dc19cc2b4a85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b74ae0258e98aa0eaebc6f3efe1481e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e">irutils::addModeToString</a> (const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan)</td></tr>
<tr class="memdesc:a8b74ae0258e98aa0eaebc6f3efe1481e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)". <a href="namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e">More...</a><br /></td></tr>
<tr class="separator:a8b74ae0258e98aa0eaebc6f3efe1481e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae023bbabc452173d348c14eac7d86ab4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ae023bbabc452173d348c14eac7d86ab4">irutils::addFanToString</a> (const uint8_t speed, const uint8_t high, const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium)</td></tr>
<tr class="memdesc:ae023bbabc452173d348c14eac7d86ab4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)". <a href="namespaceirutils.html#ae023bbabc452173d348c14eac7d86ab4">More...</a><br /></td></tr>
<tr class="separator:ae023bbabc452173d348c14eac7d86ab4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ead1d10578c64627f8a24b5d8a7444f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f">irutils::addDayToString</a> (const uint8_t day_of_week, const int8_t offset, const bool precomma)</td></tr>
<tr class="memdesc:a6ead1d10578c64627f8a24b5d8a7444f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a String of the 3-letter day of the week from a numerical day of the week. e.g. "Day: 1 (Mon)". <a href="namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f">More...</a><br /></td></tr>
<tr class="separator:a6ead1d10578c64627f8a24b5d8a7444f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e55c6fdcc82e1ef8bd5f73df83609a7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7">irutils::htmlEscape</a> (const <a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> unescaped)</td></tr>
<tr class="memdesc:a6e55c6fdcc82e1ef8bd5f73df83609a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS. <a href="namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7">More...</a><br /></td></tr>
<tr class="separator:a6e55c6fdcc82e1ef8bd5f73df83609a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c59c8dd886c283fdb8adc9082c6890a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a">irutils::msToString</a> (uint32_t const msecs)</td></tr>
<tr class="memdesc:a9c59c8dd886c283fdb8adc9082c6890a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds". <a href="namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a">More...</a><br /></td></tr>
<tr class="separator:a9c59c8dd886c283fdb8adc9082c6890a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebab40a2c69624adc1a5a8a6db72952f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f">irutils::minsToString</a> (const uint16_t mins)</td></tr>
<tr class="memdesc:aebab40a2c69624adc1a5a8a6db72952f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59". <a href="namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f">More...</a><br /></td></tr>
<tr class="separator:aebab40a2c69624adc1a5a8a6db72952f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4752ecc3eafa3ca2e13344a52519b343"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a4752ecc3eafa3ca2e13344a52519b343">irutils::sumNibbles</a> (const uint8_t *const start, const uint16_t length, const uint8_t init)</td></tr>
<tr class="memdesc:a4752ecc3eafa3ca2e13344a52519b343"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sum all the nibbles together in a series of bytes. <a href="namespaceirutils.html#a4752ecc3eafa3ca2e13344a52519b343">More...</a><br /></td></tr>
<tr class="separator:a4752ecc3eafa3ca2e13344a52519b343"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb5202fa0093ee6b7e07d4290229fbd2"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#aeb5202fa0093ee6b7e07d4290229fbd2">irutils::sumNibbles</a> (const uint64_t data, const uint8_t count, const uint8_t init, const bool nibbleonly)</td></tr>
<tr class="memdesc:aeb5202fa0093ee6b7e07d4290229fbd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sum all the nibbles together in an integer. <a href="namespaceirutils.html#aeb5202fa0093ee6b7e07d4290229fbd2">More...</a><br /></td></tr>
<tr class="separator:aeb5202fa0093ee6b7e07d4290229fbd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af18c4abfd0ed9f4b3a099ecec1999ee7"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#af18c4abfd0ed9f4b3a099ecec1999ee7">irutils::bcdToUint8</a> (const uint8_t bcd)</td></tr>
<tr class="memdesc:af18c4abfd0ed9f4b3a099ecec1999ee7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a byte of Binary Coded Decimal(BCD) into an Integer. <a href="namespaceirutils.html#af18c4abfd0ed9f4b3a099ecec1999ee7">More...</a><br /></td></tr>
<tr class="separator:af18c4abfd0ed9f4b3a099ecec1999ee7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a534704a52b75acd46f687cc0a2b91bf1"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1">irutils::uint8ToBcd</a> (const uint8_t integer)</td></tr>
<tr class="memdesc:a534704a52b75acd46f687cc0a2b91bf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an Integer into a byte of Binary Coded Decimal(BCD). <a href="namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1">More...</a><br /></td></tr>
<tr class="separator:a534704a52b75acd46f687cc0a2b91bf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0756774b20e4f7c836abee466800ee6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ac0756774b20e4f7c836abee466800ee6">irutils::getBit</a> (const uint64_t data, const uint8_t position, const uint8_t size)</td></tr>
<tr class="memdesc:ac0756774b20e4f7c836abee466800ee6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of <code>position</code>th bit of an Integer. <a href="namespaceirutils.html#ac0756774b20e4f7c836abee466800ee6">More...</a><br /></td></tr>
<tr class="separator:ac0756774b20e4f7c836abee466800ee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27f90f74ed0b7af37c7bd8cd2a059dee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a27f90f74ed0b7af37c7bd8cd2a059dee">irutils::getBit</a> (const uint8_t data, const uint8_t position)</td></tr>
<tr class="memdesc:a27f90f74ed0b7af37c7bd8cd2a059dee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of <code>position</code>th bit of an Integer. <a href="namespaceirutils.html#a27f90f74ed0b7af37c7bd8cd2a059dee">More...</a><br /></td></tr>
<tr class="separator:a27f90f74ed0b7af37c7bd8cd2a059dee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a316301577d2ff338bfba6605df2cc46b"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b">irutils::setBit</a> (const uint64_t data, const uint8_t position, const bool on, const uint8_t size)</td></tr>
<tr class="memdesc:a316301577d2ff338bfba6605df2cc46b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of an Integer with the <code>position</code>th bit changed. <a href="namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b">More...</a><br /></td></tr>
<tr class="separator:a316301577d2ff338bfba6605df2cc46b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e9e858b490fa3328b4c5bd01adedb8c"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a2e9e858b490fa3328b4c5bd01adedb8c">irutils::setBit</a> (const uint8_t data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:a2e9e858b490fa3328b4c5bd01adedb8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the value of an Integer with the <code>position</code>th bit changed. <a href="namespaceirutils.html#a2e9e858b490fa3328b4c5bd01adedb8c">More...</a><br /></td></tr>
<tr class="separator:a2e9e858b490fa3328b4c5bd01adedb8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1b3de6e733d9c4d614a8239f5bd3220"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ac1b3de6e733d9c4d614a8239f5bd3220">irutils::setBit</a> (uint8_t *const data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:ac1b3de6e733d9c4d614a8239f5bd3220"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter the value of an Integer with the <code>position</code>th bit changed. <a href="namespaceirutils.html#ac1b3de6e733d9c4d614a8239f5bd3220">More...</a><br /></td></tr>
<tr class="separator:ac1b3de6e733d9c4d614a8239f5bd3220"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86bbcf05c1601712b1d587b87035f09b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a86bbcf05c1601712b1d587b87035f09b">irutils::setBit</a> (uint32_t *const data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:a86bbcf05c1601712b1d587b87035f09b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter the value of an Integer with the <code>position</code>th bit changed. <a href="namespaceirutils.html#a86bbcf05c1601712b1d587b87035f09b">More...</a><br /></td></tr>
<tr class="separator:a86bbcf05c1601712b1d587b87035f09b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e7814e2274f02df0dac0106c293c487"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a9e7814e2274f02df0dac0106c293c487">irutils::setBit</a> (uint64_t *const data, const uint8_t position, const bool on)</td></tr>
<tr class="memdesc:a9e7814e2274f02df0dac0106c293c487"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter the value of an Integer with the <code>position</code>th bit changed. <a href="namespaceirutils.html#a9e7814e2274f02df0dac0106c293c487">More...</a><br /></td></tr>
<tr class="separator:a9e7814e2274f02df0dac0106c293c487"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4f5e3eb26e111909ddc93a8b018ba78"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78">irutils::setBits</a> (uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)</td></tr>
<tr class="memdesc:ab4f5e3eb26e111909ddc93a8b018ba78"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter an uint8_t value by overwriting an arbitary given number of bits. <a href="namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78">More...</a><br /></td></tr>
<tr class="separator:ab4f5e3eb26e111909ddc93a8b018ba78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fd8b18a76f0ae8f730b4de55fc9486e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a3fd8b18a76f0ae8f730b4de55fc9486e">irutils::setBits</a> (uint32_t *const dst, const uint8_t offset, const uint8_t nbits, const uint32_t data)</td></tr>
<tr class="memdesc:a3fd8b18a76f0ae8f730b4de55fc9486e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter an uint32_t value by overwriting an arbitary given number of bits. <a href="namespaceirutils.html#a3fd8b18a76f0ae8f730b4de55fc9486e">More...</a><br /></td></tr>
<tr class="separator:a3fd8b18a76f0ae8f730b4de55fc9486e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4dfb0984a9ea38602805987a7845839c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceirutils.html#a4dfb0984a9ea38602805987a7845839c">irutils::setBits</a> (uint64_t *const dst, const uint8_t offset, const uint8_t nbits, const uint64_t data)</td></tr>
<tr class="memdesc:a4dfb0984a9ea38602805987a7845839c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alter an uint64_t value by overwriting an arbitary given number of bits. <a href="namespaceirutils.html#a4dfb0984a9ea38602805987a7845839c">More...</a><br /></td></tr>
<tr class="separator:a4dfb0984a9ea38602805987a7845839c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:aa72cd082cdde3d8d7473ed9d11ff6846"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#aa72cd082cdde3d8d7473ed9d11ff6846">kNibbleSize</a> = 4</td></tr>
<tr class="separator:aa72cd082cdde3d8d7473ed9d11ff6846"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0288cc71e1814a27c27393f06676eec"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#ad0288cc71e1814a27c27393f06676eec">kLowNibble</a> = 0</td></tr>
<tr class="separator:ad0288cc71e1814a27c27393f06676eec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26dd96e82207f707c21e696a60b9c032"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a26dd96e82207f707c21e696a60b9c032">kHighNibble</a> = 4</td></tr>
<tr class="separator:a26dd96e82207f707c21e696a60b9c032"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5432915ab86062fceadc067a233f1627"><td class="memItemLeft" align="right" valign="top">const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="IRutils_8h.html#a5432915ab86062fceadc067a233f1627">kModeBitsSize</a> = 3</td></tr>
<tr class="separator:a5432915ab86062fceadc067a233f1627"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a19b940e26a4f8ddcaf86cce1ec62d563"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19b940e26a4f8ddcaf86cce1ec62d563">&#9670;&nbsp;</a></span>celsiusToFahrenheit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float celsiusToFahrenheit </td>
<td>(</td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>deg</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert degrees Celsius to degrees Fahrenheit. </p>
</div>
</div>
<a id="a5a719829db11f5d5560b4367c0d2d365"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a719829db11f5d5560b4367c0d2d365">&#9670;&nbsp;</a></span>countBits() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t countBits </td>
<td>(</td>
<td class="paramtype">const uint64_t&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>ones</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>init</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Count the number of bits of a certain type in an Integer. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The value you want bits counted for. Starting from the LSB. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bits to use in the calculation? Starts at the LSB </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ones</td><td>Count the binary nr of <code>1</code> bits. False is count the <code>0</code>s. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The nr. of bits found of the given type found in the Integer. </dd></dl>
</div>
</div>
<a id="a27816eac50afafa9e53ba4b53675da20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27816eac50afafa9e53ba4b53675da20">&#9670;&nbsp;</a></span>countBits() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t countBits </td>
<td>(</td>
<td class="paramtype">const uint8_t *const&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>ones</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>init</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Count the number of bits of a certain type in an array. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>A ptr to the start of the byte array to calculate over. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bytes to use in the calculation. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ones</td><td>Count the binary nr of <code>1</code> bits. False is count the <code>0</code>s. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The nr. of bits found of the given type found in the array. </dd></dl>
</div>
</div>
<a id="a83538e86145850c24b1c824723089502"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83538e86145850c24b1c824723089502">&#9670;&nbsp;</a></span>fahrenheitToCelsius()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float fahrenheitToCelsius </td>
<td>(</td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>deg</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert degrees Fahrenheit to degrees Celsius. </p>
</div>
</div>
<a id="aad5f25cf6a2dded8b48f4a6dd16857be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad5f25cf6a2dded8b48f4a6dd16857be">&#9670;&nbsp;</a></span>getCorrectedRawLength()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t getCorrectedRawLength </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>results</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The corrected length. </dd></dl>
</div>
</div>
<a id="a6efd4986db60709d3501606ec7ab5382"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6efd4986db60709d3501606ec7ab5382">&#9670;&nbsp;</a></span>hasACState()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool hasACState </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a>&#160;</td>
<td class="paramname"><em>protocol</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Does the given protocol use a complex state as part of the decode? </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">protocol</td><td>The decode_type_t protocol we are enquiring about. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the protocol uses a state array. False if just an integer. </dd></dl>
</div>
</div>
<a id="a1a85904f25c8ec77fb554d238c59cfdb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a85904f25c8ec77fb554d238c59cfdb">&#9670;&nbsp;</a></span>invertBits()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t invertBits </td>
<td>(</td>
<td class="paramtype">const uint64_t&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>nbits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Invert/Flip the bits in an Integer. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The Integer that will be inverted. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nbits</td><td>How many bits are to be inverted. Starting from the LSB. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>An Integer with the appropriate bits inverted/flipped. </dd></dl>
</div>
</div>
<a id="a25a669d53f231de6152f8e60cedf39f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a25a669d53f231de6152f8e60cedf39f7">&#9670;&nbsp;</a></span>resultToHexidecimal()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToHexidecimal </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>result</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure's value/state to simple hexadecimal. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">result</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the output. </dd></dl>
</div>
</div>
<a id="a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8">&#9670;&nbsp;</a></span>resultToHumanReadableBasic()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToHumanReadableBasic </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>results</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure into a human readable format. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the output. </dd></dl>
</div>
</div>
<a id="a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a">&#9670;&nbsp;</a></span>resultToRawArray()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t* resultToRawArray </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>decode</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> into an array suitable for <code>sendRaw()</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">decode</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure that contains a mesg. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A PTR to a dynamically allocated uint16_t sendRaw compatible array. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>The returned array needs to be delete[]'ed/free()'ed (deallocated) after use by caller. </dd></dl>
</div>
</div>
<a id="a10fc00c8b399dddb67a228325e6e2f79"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10fc00c8b399dddb67a228325e6e2f79">&#9670;&nbsp;</a></span>resultToSourceCode()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToSourceCode </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>results</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return a String containing the key values of a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure in a C/C++ code style format. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the code-ified result. </dd></dl>
</div>
</div>
<a id="afbfdef125ff077431f3abc27a1eeb800"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbfdef125ff077431f3abc27a1eeb800">&#9670;&nbsp;</a></span>resultToTimingInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> resultToTimingInfo </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdecode__results.html">decode_results</a> *const&#160;</td>
<td class="paramname"><em>results</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Dump out the <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">results</td><td>A ptr to a <a class="el" href="classdecode__results.html" title="Results returned from the decoder.">decode_results</a> structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the legacy information format. </dd></dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000003">Deprecated:</a></b></dt><dd>This is only for those that want this legacy format. </dd></dl>
</div>
</div>
<a id="a366219b6f1c46f41c6573b3e5e875e41"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a366219b6f1c46f41c6573b3e5e875e41">&#9670;&nbsp;</a></span>reverseBits()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t reverseBits </td>
<td>(</td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>nbits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reverse the order of the requested least significant nr. of bits. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>Bit pattern/integer to reverse. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nbits</td><td>Nr. of bits to reverse. (LSB -&gt; MSB) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The reversed bit pattern. </dd></dl>
</div>
</div>
<a id="a315d5f05fb572564025bc9ce9b820243"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a315d5f05fb572564025bc9ce9b820243">&#9670;&nbsp;</a></span>serialPrintUint64()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void serialPrintUint64 </td>
<td>(</td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>base</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t) </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>The value to print </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>The output base. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a10b9312e4ac9c96d895af83db01ed72e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10b9312e4ac9c96d895af83db01ed72e">&#9670;&nbsp;</a></span>strToDecodeType()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> strToDecodeType </td>
<td>(</td>
<td class="paramtype">const char *const&#160;</td>
<td class="paramname"><em>str</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a C-style string to a decode_type_t. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">str</td><td>A C-style string containing a protocol name or number. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A decode_type_t enum. (decode_type_t::UNKNOWN if no match.) </dd></dl>
</div>
</div>
<a id="a3f33bdd680bea210b212d4e9925eb8eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f33bdd680bea210b212d4e9925eb8eb">&#9670;&nbsp;</a></span>sumBytes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t sumBytes </td>
<td>(</td>
<td class="paramtype">const uint8_t *const&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>init</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sum all the bytes of an array and return the least significant 8-bits of the result. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>A ptr to the start of the byte array to calculate over. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bytes to use in the calculation. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The 8-bit calculated result of all the bytes and init value. </dd></dl>
</div>
</div>
<a id="a7f49135f3d160700eb12ff6b7309341c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f49135f3d160700eb12ff6b7309341c">&#9670;&nbsp;</a></span>typeToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> typeToString </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a>&#160;</td>
<td class="paramname"><em>protocol</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>isRepeat</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a protocol type (enum etc) to a human readable string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">protocol</td><td>Nr. (enum) of the protocol. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">isRepeat</td><td>A flag indicating if it is a repeat message. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String containing the protocol name. kUnknownStr if no match. </dd></dl>
</div>
</div>
<a id="a781650451d38303e80da677539f574ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a781650451d38303e80da677539f574ee">&#9670;&nbsp;</a></span>uint64ToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> uint64ToString </td>
<td>(</td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>base</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>The value to print </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>The output base. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A String representation of the integer. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>Based on Arduino's Print::printNumber() </dd></dl>
</div>
</div>
<a id="ab030689a93499311ee8e6621ac8757aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab030689a93499311ee8e6621ac8757aa">&#9670;&nbsp;</a></span>xorBytes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t xorBytes </td>
<td>(</td>
<td class="paramtype">const uint8_t *const&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>init</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate a rolling XOR of all the bytes of an array. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>A ptr to the start of the byte array to calculate over. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>How many bytes to use in the calculation. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">init</td><td>Starting value of the calculation to use. (Default is 0) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The 8-bit calculated result of all the bytes and init value. </dd></dl>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a26dd96e82207f707c21e696a60b9c032"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26dd96e82207f707c21e696a60b9c032">&#9670;&nbsp;</a></span>kHighNibble</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kHighNibble = 4</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad0288cc71e1814a27c27393f06676eec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0288cc71e1814a27c27393f06676eec">&#9670;&nbsp;</a></span>kLowNibble</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kLowNibble = 0</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5432915ab86062fceadc067a233f1627"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5432915ab86062fceadc067a233f1627">&#9670;&nbsp;</a></span>kModeBitsSize</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kModeBitsSize = 3</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa72cd082cdde3d8d7473ed9d11ff6846"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa72cd082cdde3d8d7473ed9d11ff6846">&#9670;&nbsp;</a></span>kNibbleSize</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const uint8_t kNibbleSize = 4</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,235 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/IRutils.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">IRutils.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="IRutils_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef IRUTILS_H_</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define IRUTILS_H_</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; </div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Copyright 2017 David Conran</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; </div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#ifndef UNIT_TEST</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define __STDC_LIMIT_MACROS</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#ifndef ARDUINO</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="IRremoteESP8266_8h.html">IRremoteESP8266.h</a>&quot;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="IRrecv_8h.html">IRrecv.h</a>&quot;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
<div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="IRutils_8h.html#aa72cd082cdde3d8d7473ed9d11ff6846"> 17</a></span>&#160;<span class="keyword">const</span> uint8_t <a class="code" href="IRutils_8h.html#aa72cd082cdde3d8d7473ed9d11ff6846">kNibbleSize</a> = 4;</div>
<div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="IRutils_8h.html#ad0288cc71e1814a27c27393f06676eec"> 18</a></span>&#160;<span class="keyword">const</span> uint8_t <a class="code" href="IRutils_8h.html#ad0288cc71e1814a27c27393f06676eec">kLowNibble</a> = 0;</div>
<div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="IRutils_8h.html#a26dd96e82207f707c21e696a60b9c032"> 19</a></span>&#160;<span class="keyword">const</span> uint8_t <a class="code" href="IRutils_8h.html#a26dd96e82207f707c21e696a60b9c032">kHighNibble</a> = 4;</div>
<div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="IRutils_8h.html#a5432915ab86062fceadc067a233f1627"> 20</a></span>&#160;<span class="keyword">const</span> uint8_t <a class="code" href="IRutils_8h.html#a5432915ab86062fceadc067a233f1627">kModeBitsSize</a> = 3;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;uint64_t <a class="code" href="IRutils_8h.html#a366219b6f1c46f41c6573b3e5e875e41">reverseBits</a>(uint64_t input, uint16_t nbits);</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="IRutils_8h.html#a781650451d38303e80da677539f574ee">uint64ToString</a>(uint64_t input, uint8_t base = 10);</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="IRutils_8h.html#a7f49135f3d160700eb12ff6b7309341c">typeToString</a>(<span class="keyword">const</span> <a class="code" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol,</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> isRepeat = <span class="keyword">false</span>);</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keywordtype">void</span> <a class="code" href="IRutils_8h.html#a315d5f05fb572564025bc9ce9b820243">serialPrintUint64</a>(uint64_t input, uint8_t base = 10);</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="IRutils_8h.html#a10fc00c8b399dddb67a228325e6e2f79">resultToSourceCode</a>(<span class="keyword">const</span> <a class="code" href="classdecode__results.html">decode_results</a> * <span class="keyword">const</span> results);</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="IRutils_8h.html#afbfdef125ff077431f3abc27a1eeb800">resultToTimingInfo</a>(<span class="keyword">const</span> <a class="code" href="classdecode__results.html">decode_results</a> * <span class="keyword">const</span> results);</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="IRutils_8h.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8">resultToHumanReadableBasic</a>(<span class="keyword">const</span> <a class="code" href="classdecode__results.html">decode_results</a> * <span class="keyword">const</span> results);</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="IRutils_8h.html#a25a669d53f231de6152f8e60cedf39f7">resultToHexidecimal</a>(<span class="keyword">const</span> <a class="code" href="classdecode__results.html">decode_results</a> * <span class="keyword">const</span> result);</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="IRutils_8h.html#a6efd4986db60709d3501606ec7ab5382">hasACState</a>(<span class="keyword">const</span> <a class="code" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;uint16_t <a class="code" href="IRutils_8h.html#aad5f25cf6a2dded8b48f4a6dd16857be">getCorrectedRawLength</a>(<span class="keyword">const</span> <a class="code" href="classdecode__results.html">decode_results</a> * <span class="keyword">const</span> results);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;uint16_t *<a class="code" href="IRutils_8h.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a">resultToRawArray</a>(<span class="keyword">const</span> <a class="code" href="classdecode__results.html">decode_results</a> * <span class="keyword">const</span> decode);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;uint8_t <a class="code" href="IRutils_8h.html#a3f33bdd680bea210b212d4e9925eb8eb">sumBytes</a>(<span class="keyword">const</span> uint8_t * <span class="keyword">const</span> start, <span class="keyword">const</span> uint16_t length,</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> uint8_t init = 0);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;uint8_t <a class="code" href="IRutils_8h.html#ab030689a93499311ee8e6621ac8757aa">xorBytes</a>(<span class="keyword">const</span> uint8_t * <span class="keyword">const</span> start, <span class="keyword">const</span> uint16_t length,</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> uint8_t init = 0);</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;uint16_t <a class="code" href="IRutils_8h.html#a27816eac50afafa9e53ba4b53675da20">countBits</a>(<span class="keyword">const</span> uint8_t * <span class="keyword">const</span> start, <span class="keyword">const</span> uint16_t length,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> ones = <span class="keyword">true</span>, <span class="keyword">const</span> uint16_t init = 0);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;uint16_t <a class="code" href="IRutils_8h.html#a27816eac50afafa9e53ba4b53675da20">countBits</a>(<span class="keyword">const</span> uint64_t data, <span class="keyword">const</span> uint8_t length,</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> ones = <span class="keyword">true</span>, <span class="keyword">const</span> uint16_t init = 0);</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;uint64_t <a class="code" href="IRutils_8h.html#a1a85904f25c8ec77fb554d238c59cfdb">invertBits</a>(<span class="keyword">const</span> uint64_t data, <span class="keyword">const</span> uint16_t nbits);</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<a class="code" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> <a class="code" href="IRutils_8h.html#a10b9312e4ac9c96d895af83db01ed72e">strToDecodeType</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str);</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keywordtype">float</span> <a class="code" href="IRutils_8h.html#a19b940e26a4f8ddcaf86cce1ec62d563">celsiusToFahrenheit</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> deg);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keywordtype">float</span> <a class="code" href="IRutils_8h.html#a83538e86145850c24b1c824723089502">fahrenheitToCelsius</a>(<span class="keyword">const</span> <span class="keywordtype">float</span> deg);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceirutils.html">irutils</a> {</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b">addBoolToString</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> value, <span class="keyword">const</span> <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label,</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> precomma = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="namespaceirutils.html#a772e623c4b60208200e02afbaec66651">addIntToString</a>(<span class="keyword">const</span> uint16_t value, <span class="keyword">const</span> <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label,</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> precomma = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd">modelToStr</a>(<span class="keyword">const</span> <a class="code" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol, <span class="keyword">const</span> int16_t model);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367">addModelToString</a>(<span class="keyword">const</span> <a class="code" href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a> protocol, <span class="keyword">const</span> int16_t model,</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> precomma = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b">addLabeledString</a>(<span class="keyword">const</span> <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> value, <span class="keyword">const</span> <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> label,</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> precomma = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85">addTempToString</a>(<span class="keyword">const</span> uint16_t degrees, <span class="keyword">const</span> <span class="keywordtype">bool</span> celsius = <span class="keyword">true</span>,</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> precomma = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e">addModeToString</a>(<span class="keyword">const</span> uint8_t mode, <span class="keyword">const</span> uint8_t automatic,</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> uint8_t cool, <span class="keyword">const</span> uint8_t heat,</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> uint8_t dry, <span class="keyword">const</span> uint8_t fan);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="namespaceirutils.html#ae023bbabc452173d348c14eac7d86ab4">addFanToString</a>(<span class="keyword">const</span> uint8_t speed, <span class="keyword">const</span> uint8_t high,</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> uint8_t low, <span class="keyword">const</span> uint8_t automatic,</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">const</span> uint8_t quiet, <span class="keyword">const</span> uint8_t medium);</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f">addDayToString</a>(<span class="keyword">const</span> uint8_t day_of_week, <span class="keyword">const</span> int8_t offset = 0,</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> precomma = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7">htmlEscape</a>(<span class="keyword">const</span> <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> unescaped);</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a">msToString</a>(uint32_t <span class="keyword">const</span> msecs);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> <a class="code" href="namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f">minsToString</a>(<span class="keyword">const</span> uint16_t mins);</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; uint8_t <a class="code" href="namespaceirutils.html#a4752ecc3eafa3ca2e13344a52519b343">sumNibbles</a>(<span class="keyword">const</span> uint8_t * <span class="keyword">const</span> start, <span class="keyword">const</span> uint16_t length,</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> uint8_t init = 0);</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; uint8_t <a class="code" href="namespaceirutils.html#a4752ecc3eafa3ca2e13344a52519b343">sumNibbles</a>(<span class="keyword">const</span> uint64_t data, <span class="keyword">const</span> uint8_t count = 16,</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">const</span> uint8_t init = 0, <span class="keyword">const</span> <span class="keywordtype">bool</span> nibbleonly = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; uint8_t <a class="code" href="namespaceirutils.html#af18c4abfd0ed9f4b3a099ecec1999ee7">bcdToUint8</a>(<span class="keyword">const</span> uint8_t bcd);</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; uint8_t <a class="code" href="namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1">uint8ToBcd</a>(<span class="keyword">const</span> uint8_t integer);</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="namespaceirutils.html#ac0756774b20e4f7c836abee466800ee6">getBit</a>(<span class="keyword">const</span> uint64_t data, <span class="keyword">const</span> uint8_t position,</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">const</span> uint8_t size = 64);</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="namespaceirutils.html#ac0756774b20e4f7c836abee466800ee6">getBit</a>(<span class="keyword">const</span> uint8_t data, <span class="keyword">const</span> uint8_t position);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor">#define GETBIT8(a, b) (a &amp; ((uint8_t)1 &lt;&lt; b))</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor">#define GETBIT16(a, b) (a &amp; ((uint16_t)1 &lt;&lt; b))</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor">#define GETBIT32(a, b) (a &amp; ((uint32_t)1 &lt;&lt; b))</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor">#define GETBIT64(a, b) (a &amp; ((uint64_t)1 &lt;&lt; b))</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor">#define GETBITS8(data, offset, size) \</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor"> (((data) &amp; (((uint8_t)UINT8_MAX &gt;&gt; (8 - (size))) &lt;&lt; (offset))) &gt;&gt; (offset))</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="preprocessor">#define GETBITS16(data, offset, size) \</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="preprocessor"> (((data) &amp; (((uint16_t)UINT16_MAX &gt;&gt; (16 - (size))) &lt;&lt; (offset))) &gt;&gt; \</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor"> (offset))</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor">#define GETBITS32(data, offset, size) \</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="preprocessor"> (((data) &amp; (((uint32_t)UINT32_MAX &gt;&gt; (32 - (size))) &lt;&lt; (offset))) &gt;&gt; \</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="preprocessor"> (offset))</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor">#define GETBITS64(data, offset, size) \</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor"> (((data) &amp; (((uint64_t)UINT64_MAX &gt;&gt; (64 - (size))) &lt;&lt; (offset))) &gt;&gt; \</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor"> (offset))</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; uint64_t <a class="code" href="namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b">setBit</a>(<span class="keyword">const</span> uint64_t data, <span class="keyword">const</span> uint8_t position,</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on = <span class="keyword">true</span>, <span class="keyword">const</span> uint8_t size = 64);</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; uint8_t <a class="code" href="namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b">setBit</a>(<span class="keyword">const</span> uint8_t data, <span class="keyword">const</span> uint8_t position,</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">void</span> <a class="code" href="namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b">setBit</a>(uint8_t * <span class="keyword">const</span> data, <span class="keyword">const</span> uint8_t position,</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">void</span> <a class="code" href="namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b">setBit</a>(uint32_t * <span class="keyword">const</span> data, <span class="keyword">const</span> uint8_t position,</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">void</span> <a class="code" href="namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b">setBit</a>(uint64_t * <span class="keyword">const</span> data, <span class="keyword">const</span> uint8_t position,</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> on = <span class="keyword">true</span>);</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordtype">void</span> <a class="code" href="namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78">setBits</a>(uint8_t * <span class="keyword">const</span> dst, <span class="keyword">const</span> uint8_t offset, <span class="keyword">const</span> uint8_t nbits,</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keyword">const</span> uint8_t data);</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">void</span> <a class="code" href="namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78">setBits</a>(uint32_t * <span class="keyword">const</span> dst, <span class="keyword">const</span> uint8_t offset, <span class="keyword">const</span> uint8_t nbits,</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">const</span> uint32_t data);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordtype">void</span> <a class="code" href="namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78">setBits</a>(uint64_t * <span class="keyword">const</span> dst, <span class="keyword">const</span> uint8_t offset, <span class="keyword">const</span> uint8_t nbits,</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">const</span> uint64_t data);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;} <span class="comment">// namespace irutils</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor">#endif // IRUTILS_H_</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="anamespaceirutils_html_a0cef0634f4db979a93b7dc19cc2b4a85"><div class="ttname"><a href="namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85">irutils::addTempToString</a></div><div class="ttdeci">String addTempToString(const uint16_t degrees, const bool celsius, const bool precomma)</div><div class="ttdoc">Create a String of human output for a given temperature. e.g. &quot;Temp: 25C&quot;.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:577</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_ad5b287a488a8c1b7b8661f029ab56fad"><div class="ttname"><a href="IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad">decode_type_t</a></div><div class="ttdeci">decode_type_t</div><div class="ttdoc">Enumerator for defining and numbering of supported IR protocol.</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:714</div></div>
<div class="ttc" id="anamespaceirutils_html_a6ead1d10578c64627f8a24b5d8a7444f"><div class="ttname"><a href="namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f">irutils::addDayToString</a></div><div class="ttdeci">String addDayToString(const uint8_t day_of_week, const int8_t offset, const bool precomma)</div><div class="ttdoc">Create a String of the 3-letter day of the week from a numerical day of the week. e....</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:616</div></div>
<div class="ttc" id="aIRutils_8h_html_a7b3bbfa1f2bf2dea2fc40a2fefe05a2a"><div class="ttname"><a href="IRutils_8h.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a">resultToRawArray</a></div><div class="ttdeci">uint16_t * resultToRawArray(const decode_results *const decode)</div><div class="ttdoc">Convert a decode_results into an array suitable for sendRaw().</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:351</div></div>
<div class="ttc" id="anamespaceirutils_html_ab4f5e3eb26e111909ddc93a8b018ba78"><div class="ttname"><a href="namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78">irutils::setBits</a></div><div class="ttdeci">void setBits(uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)</div><div class="ttdoc">Alter an uint8_t value by overwriting an arbitary given number of bits.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:873</div></div>
<div class="ttc" id="aIRutils_8h_html_a10fc00c8b399dddb67a228325e6e2f79"><div class="ttname"><a href="IRutils_8h.html#a10fc00c8b399dddb67a228325e6e2f79">resultToSourceCode</a></div><div class="ttdeci">String resultToSourceCode(const decode_results *const results)</div><div class="ttdoc">Return a String containing the key values of a decode_results structure in a C/C++ code style format.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:193</div></div>
<div class="ttc" id="aclassdecode__results_html"><div class="ttname"><a href="classdecode__results.html">decode_results</a></div><div class="ttdoc">Results returned from the decoder.</div><div class="ttdef"><b>Definition:</b> IRrecv.h:92</div></div>
<div class="ttc" id="aIRutils_8h_html_aad5f25cf6a2dded8b48f4a6dd16857be"><div class="ttname"><a href="IRutils_8h.html#aad5f25cf6a2dded8b48f4a6dd16857be">getCorrectedRawLength</a></div><div class="ttdeci">uint16_t getCorrectedRawLength(const decode_results *const results)</div><div class="ttdoc">Return the corrected length of a 'raw' format array structure after over-large values are converted i...</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:179</div></div>
<div class="ttc" id="anamespaceirutils_html_a06e5a5c2b6f6649035dfa5eb19801367"><div class="ttname"><a href="namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367">irutils::addModelToString</a></div><div class="ttdeci">String addModelToString(const decode_type_t protocol, const int16_t model, const bool precomma)</div><div class="ttdoc">Create a String of human output for a given protocol model number. e.g. &quot;Model: JKE&quot;.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:562</div></div>
<div class="ttc" id="aIRutils_8h_html_a27816eac50afafa9e53ba4b53675da20"><div class="ttname"><a href="IRutils_8h.html#a27816eac50afafa9e53ba4b53675da20">countBits</a></div><div class="ttdeci">uint16_t countBits(const uint8_t *const start, const uint16_t length, const bool ones=true, const uint16_t init=0)</div><div class="ttdoc">Count the number of bits of a certain type in an array.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:402</div></div>
<div class="ttc" id="anamespaceirutils_html_a9c59c8dd886c283fdb8adc9082c6890a"><div class="ttname"><a href="namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a">irutils::msToString</a></div><div class="ttdeci">String msToString(uint32_t const msecs)</div><div class="ttdoc">Convert a nr. of milliSeconds into a Human-readable string. e.g. &quot;1 Day 6 Hours 34 Minutes 17 Seconds...</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:692</div></div>
<div class="ttc" id="anamespaceirutils_html_a8b74ae0258e98aa0eaebc6f3efe1481e"><div class="ttname"><a href="namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e">irutils::addModeToString</a></div><div class="ttdeci">String addModeToString(const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan)</div><div class="ttdoc">Create a String of human output for the given operating mode. e.g. &quot;Mode: 1 (Cool)&quot;.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:593</div></div>
<div class="ttc" id="aIRutils_8h_html_a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8"><div class="ttname"><a href="IRutils_8h.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8">resultToHumanReadableBasic</a></div><div class="ttdeci">String resultToHumanReadableBasic(const decode_results *const results)</div><div class="ttdoc">Dump out the decode_results structure into a human readable format.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:324</div></div>
<div class="ttc" id="aIRutils_8h_html_afbfdef125ff077431f3abc27a1eeb800"><div class="ttname"><a href="IRutils_8h.html#afbfdef125ff077431f3abc27a1eeb800">resultToTimingInfo</a></div><div class="ttdeci">String resultToTimingInfo(const decode_results *const results)</div><div class="ttdoc">Dump out the decode_results structure.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:274</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html_afbeda3fd1bdc8c37d01bdf9f5c8274ff"><div class="ttname"><a href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a></div><div class="ttdeci">std::string String</div><div class="ttdef"><b>Definition:</b> IRremoteESP8266.h:1093</div></div>
<div class="ttc" id="aIRutils_8h_html_aa72cd082cdde3d8d7473ed9d11ff6846"><div class="ttname"><a href="IRutils_8h.html#aa72cd082cdde3d8d7473ed9d11ff6846">kNibbleSize</a></div><div class="ttdeci">const uint8_t kNibbleSize</div><div class="ttdef"><b>Definition:</b> IRutils.h:17</div></div>
<div class="ttc" id="anamespaceirutils_html_ae89b70ce66617a8707c1951eadbc6fbd"><div class="ttname"><a href="namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd">irutils::modelToStr</a></div><div class="ttdeci">String modelToStr(const decode_type_t protocol, const int16_t model)</div><div class="ttdoc">Generate the model string for a given Protocol/Model pair.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:498</div></div>
<div class="ttc" id="aIRutils_8h_html_ad0288cc71e1814a27c27393f06676eec"><div class="ttname"><a href="IRutils_8h.html#ad0288cc71e1814a27c27393f06676eec">kLowNibble</a></div><div class="ttdeci">const uint8_t kLowNibble</div><div class="ttdef"><b>Definition:</b> IRutils.h:18</div></div>
<div class="ttc" id="aIRremoteESP8266_8h_html"><div class="ttname"><a href="IRremoteESP8266_8h.html">IRremoteESP8266.h</a></div></div>
<div class="ttc" id="anamespaceirutils_html_a534704a52b75acd46f687cc0a2b91bf1"><div class="ttname"><a href="namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1">irutils::uint8ToBcd</a></div><div class="ttdeci">uint8_t uint8ToBcd(const uint8_t integer)</div><div class="ttdoc">Convert an Integer into a byte of Binary Coded Decimal(BCD).</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:778</div></div>
<div class="ttc" id="aIRutils_8h_html_a10b9312e4ac9c96d895af83db01ed72e"><div class="ttname"><a href="IRutils_8h.html#a10b9312e4ac9c96d895af83db01ed72e">strToDecodeType</a></div><div class="ttdeci">decode_type_t strToDecodeType(const char *str)</div><div class="ttdoc">Convert a C-style string to a decode_type_t.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:83</div></div>
<div class="ttc" id="aIRutils_8h_html_a26dd96e82207f707c21e696a60b9c032"><div class="ttname"><a href="IRutils_8h.html#a26dd96e82207f707c21e696a60b9c032">kHighNibble</a></div><div class="ttdeci">const uint8_t kHighNibble</div><div class="ttdef"><b>Definition:</b> IRutils.h:19</div></div>
<div class="ttc" id="anamespaceirutils_html_a4752ecc3eafa3ca2e13344a52519b343"><div class="ttname"><a href="namespaceirutils.html#a4752ecc3eafa3ca2e13344a52519b343">irutils::sumNibbles</a></div><div class="ttdeci">uint8_t sumNibbles(const uint8_t *const start, const uint16_t length, const uint8_t init)</div><div class="ttdoc">Sum all the nibbles together in a series of bytes.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:743</div></div>
<div class="ttc" id="aIRutils_8h_html_a781650451d38303e80da677539f574ee"><div class="ttname"><a href="IRutils_8h.html#a781650451d38303e80da677539f574ee">uint64ToString</a></div><div class="ttdeci">String uint64ToString(uint64_t input, uint8_t base=10)</div><div class="ttdoc">Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle...</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:44</div></div>
<div class="ttc" id="aIRutils_8h_html_a19b940e26a4f8ddcaf86cce1ec62d563"><div class="ttname"><a href="IRutils_8h.html#a19b940e26a4f8ddcaf86cce1ec62d563">celsiusToFahrenheit</a></div><div class="ttdeci">float celsiusToFahrenheit(const float deg)</div><div class="ttdoc">Convert degrees Celsius to degrees Fahrenheit.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:450</div></div>
<div class="ttc" id="anamespaceirutils_html_a772e623c4b60208200e02afbaec66651"><div class="ttname"><a href="namespaceirutils.html#a772e623c4b60208200e02afbaec66651">irutils::addIntToString</a></div><div class="ttdeci">String addIntToString(const uint16_t value, const String label, const bool precomma)</div><div class="ttdoc">Create a String with a colon separated labeled Integer suitable for Humans. e.g. &quot;Foo: 23&quot;.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:489</div></div>
<div class="ttc" id="aIRutils_8h_html_ab030689a93499311ee8e6621ac8757aa"><div class="ttname"><a href="IRutils_8h.html#ab030689a93499311ee8e6621ac8757aa">xorBytes</a></div><div class="ttdeci">uint8_t xorBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0)</div><div class="ttdoc">Calculate a rolling XOR of all the bytes of an array.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:388</div></div>
<div class="ttc" id="aIRutils_8h_html_a5432915ab86062fceadc067a233f1627"><div class="ttname"><a href="IRutils_8h.html#a5432915ab86062fceadc067a233f1627">kModeBitsSize</a></div><div class="ttdeci">const uint8_t kModeBitsSize</div><div class="ttdef"><b>Definition:</b> IRutils.h:20</div></div>
<div class="ttc" id="anamespaceirutils_html_ac0756774b20e4f7c836abee466800ee6"><div class="ttname"><a href="namespaceirutils.html#ac0756774b20e4f7c836abee466800ee6">irutils::getBit</a></div><div class="ttdeci">bool getBit(const uint64_t data, const uint8_t position, const uint8_t size)</div><div class="ttdoc">Return the value of positionth bit of an Integer.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:788</div></div>
<div class="ttc" id="aIRutils_8h_html_a83538e86145850c24b1c824723089502"><div class="ttname"><a href="IRutils_8h.html#a83538e86145850c24b1c824723089502">fahrenheitToCelsius</a></div><div class="ttdeci">float fahrenheitToCelsius(const float deg)</div><div class="ttdoc">Convert degrees Fahrenheit to degrees Celsius.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:453</div></div>
<div class="ttc" id="aIRrecv_8h_html"><div class="ttname"><a href="IRrecv_8h.html">IRrecv.h</a></div></div>
<div class="ttc" id="aIRutils_8h_html_a3f33bdd680bea210b212d4e9925eb8eb"><div class="ttname"><a href="IRutils_8h.html#a3f33bdd680bea210b212d4e9925eb8eb">sumBytes</a></div><div class="ttdeci">uint8_t sumBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0)</div><div class="ttdoc">Sum all the bytes of an array and return the least significant 8-bits of the result.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:375</div></div>
<div class="ttc" id="aIRutils_8h_html_a7f49135f3d160700eb12ff6b7309341c"><div class="ttname"><a href="IRutils_8h.html#a7f49135f3d160700eb12ff6b7309341c">typeToString</a></div><div class="ttdeci">String typeToString(const decode_type_t protocol, const bool isRepeat=false)</div><div class="ttdoc">Convert a protocol type (enum etc) to a human readable string.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:105</div></div>
<div class="ttc" id="anamespaceirutils_html_ae023bbabc452173d348c14eac7d86ab4"><div class="ttname"><a href="namespaceirutils.html#ae023bbabc452173d348c14eac7d86ab4">irutils::addFanToString</a></div><div class="ttdeci">String addFanToString(const uint8_t speed, const uint8_t high, const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium)</div><div class="ttdoc">Create a String of human output for the given fan speed. e.g. &quot;Fan: 0 (Auto)&quot;.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:642</div></div>
<div class="ttc" id="aIRutils_8h_html_a25a669d53f231de6152f8e60cedf39f7"><div class="ttname"><a href="IRutils_8h.html#a25a669d53f231de6152f8e60cedf39f7">resultToHexidecimal</a></div><div class="ttdeci">String resultToHexidecimal(const decode_results *const result)</div><div class="ttdoc">Convert the decode_results structure's value/state to simple hexadecimal.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:304</div></div>
<div class="ttc" id="anamespaceirutils_html_a12ba9cf1830a886649a80c3cc5fdce2b"><div class="ttname"><a href="namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b">irutils::addBoolToString</a></div><div class="ttdeci">String addBoolToString(const bool value, const String label, const bool precomma)</div><div class="ttdoc">Create a String with a colon separated flag suitable for Humans. e.g. &quot;Power: On&quot;.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:477</div></div>
<div class="ttc" id="anamespaceirutils_html_aebab40a2c69624adc1a5a8a6db72952f"><div class="ttname"><a href="namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f">irutils::minsToString</a></div><div class="ttdeci">String minsToString(const uint16_t mins)</div><div class="ttdoc">Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. &quot;23:59&quot;.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:728</div></div>
<div class="ttc" id="anamespaceirutils_html_af18c4abfd0ed9f4b3a099ecec1999ee7"><div class="ttname"><a href="namespaceirutils.html#af18c4abfd0ed9f4b3a099ecec1999ee7">irutils::bcdToUint8</a></div><div class="ttdeci">uint8_t bcdToUint8(const uint8_t bcd)</div><div class="ttdoc">Convert a byte of Binary Coded Decimal(BCD) into an Integer.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:770</div></div>
<div class="ttc" id="anamespaceirutils_html"><div class="ttname"><a href="namespaceirutils.html">irutils</a></div><div class="ttdoc">Namespace for covering common functions &amp; procedures for advancd protocol handlers.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:455</div></div>
<div class="ttc" id="aIRutils_8h_html_a366219b6f1c46f41c6573b3e5e875e41"><div class="ttname"><a href="IRutils_8h.html#a366219b6f1c46f41c6573b3e5e875e41">reverseBits</a></div><div class="ttdeci">uint64_t reverseBits(uint64_t input, uint16_t nbits)</div><div class="ttdoc">Reverse the order of the requested least significant nr. of bits.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:24</div></div>
<div class="ttc" id="anamespaceirutils_html_a6e55c6fdcc82e1ef8bd5f73df83609a7"><div class="ttname"><a href="namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7">irutils::htmlEscape</a></div><div class="ttdeci">String htmlEscape(const String unescaped)</div><div class="ttdoc">Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:660</div></div>
<div class="ttc" id="aIRutils_8h_html_a6efd4986db60709d3501606ec7ab5382"><div class="ttname"><a href="IRutils_8h.html#a6efd4986db60709d3501606ec7ab5382">hasACState</a></div><div class="ttdeci">bool hasACState(const decode_type_t protocol)</div><div class="ttdoc">Does the given protocol use a complex state as part of the decode?</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:130</div></div>
<div class="ttc" id="anamespaceirutils_html_a316301577d2ff338bfba6605df2cc46b"><div class="ttname"><a href="namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b">irutils::setBit</a></div><div class="ttdeci">uint64_t setBit(const uint64_t data, const uint8_t position, const bool on, const uint8_t size)</div><div class="ttdoc">Return the value of an Integer with the positionth bit changed.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:808</div></div>
<div class="ttc" id="aIRutils_8h_html_a315d5f05fb572564025bc9ce9b820243"><div class="ttname"><a href="IRutils_8h.html#a315d5f05fb572564025bc9ce9b820243">serialPrintUint64</a></div><div class="ttdeci">void serialPrintUint64(uint64_t input, uint8_t base=10)</div><div class="ttdoc">Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long long...</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:75</div></div>
<div class="ttc" id="anamespaceirutils_html_ac98793392d1e65c1b8d6895eb9d9b75b"><div class="ttname"><a href="namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b">irutils::addLabeledString</a></div><div class="ttdeci">String addLabeledString(const String value, const String label, const bool precomma)</div><div class="ttdoc">Create a String with a colon separated &quot;label: value&quot; pair suitable for Humans.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:462</div></div>
<div class="ttc" id="aIRutils_8h_html_a1a85904f25c8ec77fb554d238c59cfdb"><div class="ttname"><a href="IRutils_8h.html#a1a85904f25c8ec77fb554d238c59cfdb">invertBits</a></div><div class="ttdeci">uint64_t invertBits(const uint64_t data, const uint16_t nbits)</div><div class="ttdoc">Invert/Flip the bits in an Integer.</div><div class="ttdef"><b>Definition:</b> IRutils.cpp:439</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,76 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: src/locale/README.md File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">src/locale/README.md File Reference</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,134 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: Class List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacestdAc.html" target="_self">stdAc</a></td><td class="desc">Enumerators and Structures for the Common A/C API </td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstdAc_1_1state__t.html" target="_self">state_t</a></td><td class="desc">Structure to hold a common A/C state </td></tr>
<tr id="row_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classdecode__results.html" target="_self">decode_results</a></td><td class="desc">Results returned from the decoder </td></tr>
<tr id="row_2_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRac.html" target="_self">IRac</a></td><td class="desc"></td></tr>
<tr id="row_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRAmcorAc.html" target="_self">IRAmcorAc</a></td><td class="desc">Class for handling detailed Amcor A/C messages </td></tr>
<tr id="row_4_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRArgoAC.html" target="_self">IRArgoAC</a></td><td class="desc">Class for handling detailed Argo A/C messages </td></tr>
<tr id="row_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRCarrierAc64.html" target="_self">IRCarrierAc64</a></td><td class="desc">Class for handling detailed Carrier 64 bit A/C messages </td></tr>
<tr id="row_6_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRCoolixAC.html" target="_self">IRCoolixAC</a></td><td class="desc">Class for handling detailed Coolix A/C messages </td></tr>
<tr id="row_7_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRCoronaAc.html" target="_self">IRCoronaAc</a></td><td class="desc">Class for handling detailed Corona A/C messages </td></tr>
<tr id="row_8_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRDaikin128.html" target="_self">IRDaikin128</a></td><td class="desc">Class for handling detailed Daikin 128-bit A/C messages. Code by crankyoldgit. Analysis by Daniel Vena </td></tr>
<tr id="row_9_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRDaikin152.html" target="_self">IRDaikin152</a></td><td class="desc">Class for handling detailed Daikin 152-bit A/C messages </td></tr>
<tr id="row_10_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRDaikin160.html" target="_self">IRDaikin160</a></td><td class="desc">Class for handling detailed Daikin 160-bit A/C messages </td></tr>
<tr id="row_11_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRDaikin176.html" target="_self">IRDaikin176</a></td><td class="desc">Class for handling detailed Daikin 176-bit A/C messages </td></tr>
<tr id="row_12_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRDaikin2.html" target="_self">IRDaikin2</a></td><td class="desc">Class for handling detailed Daikin 312-bit A/C messages. Code by crankyoldgit, Reverse engineering analysis by sheppy99 </td></tr>
<tr id="row_13_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRDaikin216.html" target="_self">IRDaikin216</a></td><td class="desc">Class for handling detailed Daikin 216-bit A/C messages </td></tr>
<tr id="row_14_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRDaikin64.html" target="_self">IRDaikin64</a></td><td class="desc">Class for handling detailed Daikin 64-bit A/C messages </td></tr>
<tr id="row_15_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRDaikinESP.html" target="_self">IRDaikinESP</a></td><td class="desc">Class for handling detailed Daikin 280-bit A/C messages </td></tr>
<tr id="row_16_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRDelonghiAc.html" target="_self">IRDelonghiAc</a></td><td class="desc">Class for handling detailed Delonghi A/C messages </td></tr>
<tr id="row_17_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRElectraAc.html" target="_self">IRElectraAc</a></td><td class="desc">Class for handling detailed Electra A/C messages </td></tr>
<tr id="row_18_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRFujitsuAC.html" target="_self">IRFujitsuAC</a></td><td class="desc">Class for handling detailed Fujitsu A/C messages </td></tr>
<tr id="row_19_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRGoodweatherAc.html" target="_self">IRGoodweatherAc</a></td><td class="desc">Class for handling detailed Goodweather A/C messages </td></tr>
<tr id="row_20_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRGreeAC.html" target="_self">IRGreeAC</a></td><td class="desc">Class for handling detailed Gree A/C messages </td></tr>
<tr id="row_21_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRHaierAC.html" target="_self">IRHaierAC</a></td><td class="desc">Class for handling detailed Haier A/C messages </td></tr>
<tr id="row_22_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRHaierACYRW02.html" target="_self">IRHaierACYRW02</a></td><td class="desc">Class for handling detailed Haier ACYRW02 A/C messages </td></tr>
<tr id="row_23_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRHitachiAc.html" target="_self">IRHitachiAc</a></td><td class="desc">Class for handling detailed Hitachi 224-bit A/C messages </td></tr>
<tr id="row_24_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRHitachiAc1.html" target="_self">IRHitachiAc1</a></td><td class="desc">Class for handling detailed Hitachi 104-bit A/C messages </td></tr>
<tr id="row_25_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRHitachiAc3.html" target="_self">IRHitachiAc3</a></td><td class="desc">Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages </td></tr>
<tr id="row_26_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRHitachiAc344.html" target="_self">IRHitachiAc344</a></td><td class="desc">Class for handling detailed Hitachi 344-bit A/C messages </td></tr>
<tr id="row_27_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRHitachiAc424.html" target="_self">IRHitachiAc424</a></td><td class="desc">Class for handling detailed Hitachi 53-byte/424-bit A/C messages </td></tr>
<tr id="row_28_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRKelvinatorAC.html" target="_self">IRKelvinatorAC</a></td><td class="desc">Class for handling detailed Kelvinator A/C messages </td></tr>
<tr id="row_29_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRLgAc.html" target="_self">IRLgAc</a></td><td class="desc">Class for handling detailed LG A/C messages </td></tr>
<tr id="row_30_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRMideaAC.html" target="_self">IRMideaAC</a></td><td class="desc">Class for handling detailed Midea A/C messages </td></tr>
<tr id="row_31_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRMitsubishi112.html" target="_self">IRMitsubishi112</a></td><td class="desc"></td></tr>
<tr id="row_32_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRMitsubishi136.html" target="_self">IRMitsubishi136</a></td><td class="desc">Class for handling detailed Mitsubishi 136-bit A/C messages </td></tr>
<tr id="row_33_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRMitsubishiAC.html" target="_self">IRMitsubishiAC</a></td><td class="desc">Class for handling detailed Mitsubishi 144-bit A/C messages. Inspired and derived from the work done at: <a href="https://github.com/r45635/HVAC-IR-Control">https://github.com/r45635/HVAC-IR-Control</a> </td></tr>
<tr id="row_34_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRMitsubishiHeavy152Ac.html" target="_self">IRMitsubishiHeavy152Ac</a></td><td class="desc">Class for handling detailed Mitsubishi Heavy 152-bit A/C messages </td></tr>
<tr id="row_35_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRMitsubishiHeavy88Ac.html" target="_self">IRMitsubishiHeavy88Ac</a></td><td class="desc">Class for handling detailed Mitsubishi Heavy 88-bit A/C messages </td></tr>
<tr id="row_36_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRNeoclimaAc.html" target="_self">IRNeoclimaAc</a></td><td class="desc">Class for handling detailed Neoclima A/C messages </td></tr>
<tr id="row_37_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRPanasonicAc.html" target="_self">IRPanasonicAc</a></td><td class="desc">Class for handling detailed Panasonic A/C messages </td></tr>
<tr id="row_38_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structirparams__t.html" target="_self">irparams_t</a></td><td class="desc">Information for the interrupt handler </td></tr>
<tr id="row_39_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRrecv.html" target="_self">IRrecv</a></td><td class="desc">Class for receiving IR messages </td></tr>
<tr id="row_40_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRSamsungAc.html" target="_self">IRSamsungAc</a></td><td class="desc">Class for handling detailed Samsung A/C messages </td></tr>
<tr id="row_41_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRsend.html" target="_self">IRsend</a></td><td class="desc">Class for sending all basic IR protocols </td></tr>
<tr id="row_42_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRSharpAc.html" target="_self">IRSharpAc</a></td><td class="desc">Class for handling detailed Sharp A/C messages </td></tr>
<tr id="row_43_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRTcl112Ac.html" target="_self">IRTcl112Ac</a></td><td class="desc">Class for handling detailed TCL A/C messages </td></tr>
<tr id="row_44_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRTecoAc.html" target="_self">IRTecoAc</a></td><td class="desc">Class for handling detailed Teco A/C messages </td></tr>
<tr id="row_45_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRtimer.html" target="_self">IRtimer</a></td><td class="desc">This class performs a simple timer in useconds since instantiated </td></tr>
<tr id="row_46_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRToshibaAC.html" target="_self">IRToshibaAC</a></td><td class="desc">Class for handling detailed Toshiba A/C messages </td></tr>
<tr id="row_47_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRTrotecESP.html" target="_self">IRTrotecESP</a></td><td class="desc">Class for handling detailed Trotec A/C messages </td></tr>
<tr id="row_48_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRVestelAc.html" target="_self">IRVestelAc</a></td><td class="desc">Class for handling detailed Vestel A/C messages </td></tr>
<tr id="row_49_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classIRWhirlpoolAc.html" target="_self">IRWhirlpoolAc</a></td><td class="desc">Class for handling detailed Whirlpool A/C messages </td></tr>
<tr id="row_50_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="unionmagiquest.html" target="_self">magiquest</a></td><td class="desc">MagiQuest packet is both Wand ID and magnitude of swish and flick </td></tr>
<tr id="row_51_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmatch__result__t.html" target="_self">match_result_t</a></td><td class="desc">Results from a data match </td></tr>
<tr id="row_52_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTimerMs.html" target="_self">TimerMs</a></td><td class="desc">This class performs a simple timer in milli-seoncds since instantiated </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

View File

@ -0,0 +1,109 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">IRAmcorAc Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classIRAmcorAc.html">IRAmcorAc</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classIRAmcorAc.html#a6245bb51fa206031c3348e3eb6cb096d">_irsend</a></td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr><td class="entry"><a class="el" href="classIRAmcorAc.html#aa723533eea981f79844f241d5bb84654">begin</a>()</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRAmcorAc.html#aec764cf4d88bb3fcbe3f36d24780f6a9">calcChecksum</a>(const uint8_t state[], const uint16_t length=kAmcorStateLength)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classIRAmcorAc.html#a6206e866e859bc4690cb014c49c1ff80">calibrate</a>(void)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRAmcorAc.html#a67244a75731be6a3bd96ecc0384d0113">checksum</a>(void)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr><td class="entry"><a class="el" href="classIRAmcorAc.html#ad0f8b7cdf5942c3680639d410f53d18c">convertFan</a>(const stdAc::fanspeed_t speed)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRAmcorAc.html#ab57117e1072b5265ac9ab5be6d58bccc">convertMode</a>(const stdAc::opmode_t mode)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRAmcorAc.html#a8ba84d83fc426ee5b75e0be27fd22d9c">getFan</a>()</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRAmcorAc.html#a61659b6b54d652713efdf408a09db087">getMax</a>(void)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRAmcorAc.html#a30fd2a228e63e6b9a1544c3c1ec910f7">getMode</a>()</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRAmcorAc.html#a141e2af9eb4530b175a430dee31bc5ae">getPower</a>()</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRAmcorAc.html#aa2b99d815e499edf3ae53aebb35cbe9b">getRaw</a>()</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRAmcorAc.html#a2f3e4765a3ae65ffda197f5a58070bf3">getTemp</a>()</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRAmcorAc.html#a92db59a33c861dcd3b2960e9711f97c4">IRAmcorAc</a>(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRAmcorAc.html#a5c67c2acde4964bf863d5ae73555ea1a">off</a>()</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRAmcorAc.html#adff3f4b9f57815a4062443f3e4dab78c">on</a>()</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRAmcorAc.html#acef1c3896f03afd5d10d5cbb7ed105ce">remote_state</a></td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr><td class="entry"><a class="el" href="classIRAmcorAc.html#a4fa894c01a8baabfeadb39634a850fd9">send</a>(const uint16_t repeat=kAmcorDefaultRepeat)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRAmcorAc.html#acf26fc65363e2734e4dc6eb562812553">setFan</a>(const uint8_t speed)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRAmcorAc.html#a1250c6b106378286d9db013296c9b16f">setMax</a>(const bool on)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRAmcorAc.html#afa9c2d080ed5c4c7bc64eb13a07eab68">setMode</a>(const uint8_t mode)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRAmcorAc.html#a2ccfb2c2f0feb8a8cea9e10e30035988">setPower</a>(const bool state)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRAmcorAc.html#ac0520033d7a59c817ca8ec08462fe39b">setRaw</a>(const uint8_t state[])</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRAmcorAc.html#af4b2c476b76534687f14e9be963e9522">setTemp</a>(const uint8_t temp)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRAmcorAc.html#a018ab4ca4d738d848d3388ea1300b83b">stateReset</a>()</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRAmcorAc.html#aac4ae204cf0c393c18e5de96c4ba44ab">toCommon</a>(void)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRAmcorAc.html#a951aa81d98c66138f61069431e13f35a">toCommonFanSpeed</a>(const uint8_t speed)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classIRAmcorAc.html#a6da2f34f1e044f815e94ede578f4c26f">toCommonMode</a>(const uint8_t mode)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRAmcorAc.html#a2435fd76c642e4a64c7e2330236dcaa6">toString</a>()</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRAmcorAc.html#a1ad297a62ac3152c9d957cef38757d28">validChecksum</a>(const uint8_t state[], const uint16_t length=kAmcorStateLength)</td><td class="entry"><a class="el" href="classIRAmcorAc.html">IRAmcorAc</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,997 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: IRAmcorAc Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classIRAmcorAc-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">IRAmcorAc Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Class for handling detailed Amcor A/C messages.
<a href="classIRAmcorAc.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="ir__Amcor_8h_source.html">ir_Amcor.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for IRAmcorAc:</div>
<div class="dyncontent">
<div class="center"><img src="classIRAmcorAc__coll__graph.png" border="0" usemap="#IRAmcorAc_coll__map" alt="Collaboration graph"/></div>
<map name="IRAmcorAc_coll__map" id="IRAmcorAc_coll__map">
<area shape="rect" title="Class for handling detailed Amcor A/C messages." alt="" coords="5,95,99,121"/>
<area shape="rect" href="classIRsend.html" title="Class for sending all basic IR protocols." alt="" coords="19,5,85,32"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a92db59a33c861dcd3b2960e9711f97c4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a92db59a33c861dcd3b2960e9711f97c4">IRAmcorAc</a> (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)</td></tr>
<tr class="memdesc:a92db59a33c861dcd3b2960e9711f97c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class constructor. <a href="classIRAmcorAc.html#a92db59a33c861dcd3b2960e9711f97c4">More...</a><br /></td></tr>
<tr class="separator:a92db59a33c861dcd3b2960e9711f97c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a018ab4ca4d738d848d3388ea1300b83b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a018ab4ca4d738d848d3388ea1300b83b">stateReset</a> ()</td></tr>
<tr class="memdesc:a018ab4ca4d738d848d3388ea1300b83b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the internals of the object to a known good state. <a href="classIRAmcorAc.html#a018ab4ca4d738d848d3388ea1300b83b">More...</a><br /></td></tr>
<tr class="separator:a018ab4ca4d738d848d3388ea1300b83b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4fa894c01a8baabfeadb39634a850fd9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a4fa894c01a8baabfeadb39634a850fd9">send</a> (const uint16_t repeat=<a class="el" href="IRremoteESP8266_8h.html#a746e1ce73c2ebd9bd1f5300494820a0c">kAmcorDefaultRepeat</a>)</td></tr>
<tr class="memdesc:a4fa894c01a8baabfeadb39634a850fd9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send the current internal state as an IR message. <a href="classIRAmcorAc.html#a4fa894c01a8baabfeadb39634a850fd9">More...</a><br /></td></tr>
<tr class="separator:a4fa894c01a8baabfeadb39634a850fd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6206e866e859bc4690cb014c49c1ff80"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a6206e866e859bc4690cb014c49c1ff80">calibrate</a> (void)</td></tr>
<tr class="memdesc:a6206e866e859bc4690cb014c49c1ff80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run the calibration to calculate uSec timing offsets for this platform. <a href="classIRAmcorAc.html#a6206e866e859bc4690cb014c49c1ff80">More...</a><br /></td></tr>
<tr class="separator:a6206e866e859bc4690cb014c49c1ff80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa723533eea981f79844f241d5bb84654"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#aa723533eea981f79844f241d5bb84654">begin</a> ()</td></tr>
<tr class="memdesc:aa723533eea981f79844f241d5bb84654"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set up hardware to be able to send a message. <a href="classIRAmcorAc.html#aa723533eea981f79844f241d5bb84654">More...</a><br /></td></tr>
<tr class="separator:aa723533eea981f79844f241d5bb84654"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ccfb2c2f0feb8a8cea9e10e30035988"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a2ccfb2c2f0feb8a8cea9e10e30035988">setPower</a> (const bool state)</td></tr>
<tr class="memdesc:a2ccfb2c2f0feb8a8cea9e10e30035988"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the internal state to have the desired power. <a href="classIRAmcorAc.html#a2ccfb2c2f0feb8a8cea9e10e30035988">More...</a><br /></td></tr>
<tr class="separator:a2ccfb2c2f0feb8a8cea9e10e30035988"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a141e2af9eb4530b175a430dee31bc5ae"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a141e2af9eb4530b175a430dee31bc5ae">getPower</a> ()</td></tr>
<tr class="memdesc:a141e2af9eb4530b175a430dee31bc5ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the power setting from the internal state. <a href="classIRAmcorAc.html#a141e2af9eb4530b175a430dee31bc5ae">More...</a><br /></td></tr>
<tr class="separator:a141e2af9eb4530b175a430dee31bc5ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adff3f4b9f57815a4062443f3e4dab78c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#adff3f4b9f57815a4062443f3e4dab78c">on</a> ()</td></tr>
<tr class="memdesc:adff3f4b9f57815a4062443f3e4dab78c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the internal state to have the power on. <a href="classIRAmcorAc.html#adff3f4b9f57815a4062443f3e4dab78c">More...</a><br /></td></tr>
<tr class="separator:adff3f4b9f57815a4062443f3e4dab78c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c67c2acde4964bf863d5ae73555ea1a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a5c67c2acde4964bf863d5ae73555ea1a">off</a> ()</td></tr>
<tr class="memdesc:a5c67c2acde4964bf863d5ae73555ea1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the internal state to have the power off. <a href="classIRAmcorAc.html#a5c67c2acde4964bf863d5ae73555ea1a">More...</a><br /></td></tr>
<tr class="separator:a5c67c2acde4964bf863d5ae73555ea1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4b2c476b76534687f14e9be963e9522"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#af4b2c476b76534687f14e9be963e9522">setTemp</a> (const uint8_t temp)</td></tr>
<tr class="memdesc:af4b2c476b76534687f14e9be963e9522"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the temperature. <a href="classIRAmcorAc.html#af4b2c476b76534687f14e9be963e9522">More...</a><br /></td></tr>
<tr class="separator:af4b2c476b76534687f14e9be963e9522"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f3e4765a3ae65ffda197f5a58070bf3"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a2f3e4765a3ae65ffda197f5a58070bf3">getTemp</a> ()</td></tr>
<tr class="memdesc:a2f3e4765a3ae65ffda197f5a58070bf3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the current temperature setting. <a href="classIRAmcorAc.html#a2f3e4765a3ae65ffda197f5a58070bf3">More...</a><br /></td></tr>
<tr class="separator:a2f3e4765a3ae65ffda197f5a58070bf3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1250c6b106378286d9db013296c9b16f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a1250c6b106378286d9db013296c9b16f">setMax</a> (const bool <a class="el" href="classIRAmcorAc.html#adff3f4b9f57815a4062443f3e4dab78c">on</a>)</td></tr>
<tr class="memdesc:a1250c6b106378286d9db013296c9b16f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Control the current Maximum Cooling or Heating setting. (i.e. Turbo) <a href="classIRAmcorAc.html#a1250c6b106378286d9db013296c9b16f">More...</a><br /></td></tr>
<tr class="separator:a1250c6b106378286d9db013296c9b16f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61659b6b54d652713efdf408a09db087"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a61659b6b54d652713efdf408a09db087">getMax</a> (void)</td></tr>
<tr class="memdesc:a61659b6b54d652713efdf408a09db087"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is the Maximum Cooling or Heating setting (i.e. Turbo) setting on? <a href="classIRAmcorAc.html#a61659b6b54d652713efdf408a09db087">More...</a><br /></td></tr>
<tr class="separator:a61659b6b54d652713efdf408a09db087"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf26fc65363e2734e4dc6eb562812553"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#acf26fc65363e2734e4dc6eb562812553">setFan</a> (const uint8_t speed)</td></tr>
<tr class="memdesc:acf26fc65363e2734e4dc6eb562812553"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the speed of the fan. <a href="classIRAmcorAc.html#acf26fc65363e2734e4dc6eb562812553">More...</a><br /></td></tr>
<tr class="separator:acf26fc65363e2734e4dc6eb562812553"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ba84d83fc426ee5b75e0be27fd22d9c"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a8ba84d83fc426ee5b75e0be27fd22d9c">getFan</a> ()</td></tr>
<tr class="memdesc:a8ba84d83fc426ee5b75e0be27fd22d9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the current fan speed setting. <a href="classIRAmcorAc.html#a8ba84d83fc426ee5b75e0be27fd22d9c">More...</a><br /></td></tr>
<tr class="separator:a8ba84d83fc426ee5b75e0be27fd22d9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa9c2d080ed5c4c7bc64eb13a07eab68"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#afa9c2d080ed5c4c7bc64eb13a07eab68">setMode</a> (const uint8_t mode)</td></tr>
<tr class="memdesc:afa9c2d080ed5c4c7bc64eb13a07eab68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the desired operation mode. <a href="classIRAmcorAc.html#afa9c2d080ed5c4c7bc64eb13a07eab68">More...</a><br /></td></tr>
<tr class="separator:afa9c2d080ed5c4c7bc64eb13a07eab68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30fd2a228e63e6b9a1544c3c1ec910f7"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a30fd2a228e63e6b9a1544c3c1ec910f7">getMode</a> ()</td></tr>
<tr class="memdesc:a30fd2a228e63e6b9a1544c3c1ec910f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the current operation mode setting. <a href="classIRAmcorAc.html#a30fd2a228e63e6b9a1544c3c1ec910f7">More...</a><br /></td></tr>
<tr class="separator:a30fd2a228e63e6b9a1544c3c1ec910f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2b99d815e499edf3ae53aebb35cbe9b"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#aa2b99d815e499edf3ae53aebb35cbe9b">getRaw</a> ()</td></tr>
<tr class="memdesc:aa2b99d815e499edf3ae53aebb35cbe9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the raw state of the object, suitable to be sent with the appropriate <a class="el" href="classIRsend.html" title="Class for sending all basic IR protocols.">IRsend</a> object method. <a href="classIRAmcorAc.html#aa2b99d815e499edf3ae53aebb35cbe9b">More...</a><br /></td></tr>
<tr class="separator:aa2b99d815e499edf3ae53aebb35cbe9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0520033d7a59c817ca8ec08462fe39b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#ac0520033d7a59c817ca8ec08462fe39b">setRaw</a> (const uint8_t state[])</td></tr>
<tr class="memdesc:ac0520033d7a59c817ca8ec08462fe39b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the raw state of the object. <a href="classIRAmcorAc.html#ac0520033d7a59c817ca8ec08462fe39b">More...</a><br /></td></tr>
<tr class="separator:ac0520033d7a59c817ca8ec08462fe39b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab57117e1072b5265ac9ab5be6d58bccc"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#ab57117e1072b5265ac9ab5be6d58bccc">convertMode</a> (const <a class="el" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> mode)</td></tr>
<tr class="memdesc:ab57117e1072b5265ac9ab5be6d58bccc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a <a class="el" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f" title="Common A/C settings for A/C operating modes.">stdAc::opmode_t</a> enum into its native mode. <a href="classIRAmcorAc.html#ab57117e1072b5265ac9ab5be6d58bccc">More...</a><br /></td></tr>
<tr class="separator:ab57117e1072b5265ac9ab5be6d58bccc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0f8b7cdf5942c3680639d410f53d18c"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#ad0f8b7cdf5942c3680639d410f53d18c">convertFan</a> (const <a class="el" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> speed)</td></tr>
<tr class="memdesc:ad0f8b7cdf5942c3680639d410f53d18c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a <a class="el" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383" title="Common A/C settings for Fan Speeds.">stdAc::fanspeed_t</a> enum into it's native speed. <a href="classIRAmcorAc.html#ad0f8b7cdf5942c3680639d410f53d18c">More...</a><br /></td></tr>
<tr class="separator:ad0f8b7cdf5942c3680639d410f53d18c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac4ae204cf0c393c18e5de96c4ba44ab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structstdAc_1_1state__t.html">stdAc::state_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#aac4ae204cf0c393c18e5de96c4ba44ab">toCommon</a> (void)</td></tr>
<tr class="memdesc:aac4ae204cf0c393c18e5de96c4ba44ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert the current internal state into its <a class="el" href="structstdAc_1_1state__t.html" title="Structure to hold a common A/C state.">stdAc::state_t</a> equivilant. <a href="classIRAmcorAc.html#aac4ae204cf0c393c18e5de96c4ba44ab">More...</a><br /></td></tr>
<tr class="separator:aac4ae204cf0c393c18e5de96c4ba44ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2435fd76c642e4a64c7e2330236dcaa6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a2435fd76c642e4a64c7e2330236dcaa6">toString</a> ()</td></tr>
<tr class="memdesc:a2435fd76c642e4a64c7e2330236dcaa6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert the current internal state into a human readable string. <a href="classIRAmcorAc.html#a2435fd76c642e4a64c7e2330236dcaa6">More...</a><br /></td></tr>
<tr class="separator:a2435fd76c642e4a64c7e2330236dcaa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:aec764cf4d88bb3fcbe3f36d24780f6a9"><td class="memItemLeft" align="right" valign="top">static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#aec764cf4d88bb3fcbe3f36d24780f6a9">calcChecksum</a> (const uint8_t state[], const uint16_t length=<a class="el" href="IRremoteESP8266_8h.html#a62866e6918602533d590912487150bc7">kAmcorStateLength</a>)</td></tr>
<tr class="memdesc:aec764cf4d88bb3fcbe3f36d24780f6a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the checksum for the supplied state. <a href="classIRAmcorAc.html#aec764cf4d88bb3fcbe3f36d24780f6a9">More...</a><br /></td></tr>
<tr class="separator:aec764cf4d88bb3fcbe3f36d24780f6a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ad297a62ac3152c9d957cef38757d28"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a1ad297a62ac3152c9d957cef38757d28">validChecksum</a> (const uint8_t state[], const uint16_t length=<a class="el" href="IRremoteESP8266_8h.html#a62866e6918602533d590912487150bc7">kAmcorStateLength</a>)</td></tr>
<tr class="memdesc:a1ad297a62ac3152c9d957cef38757d28"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verify the checksum is valid for a given state. <a href="classIRAmcorAc.html#a1ad297a62ac3152c9d957cef38757d28">More...</a><br /></td></tr>
<tr class="separator:a1ad297a62ac3152c9d957cef38757d28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6da2f34f1e044f815e94ede578f4c26f"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a6da2f34f1e044f815e94ede578f4c26f">toCommonMode</a> (const uint8_t mode)</td></tr>
<tr class="memdesc:a6da2f34f1e044f815e94ede578f4c26f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a native mode into its <a class="el" href="namespacestdAc.html" title="Enumerators and Structures for the Common A/C API.">stdAc</a> equivilant. <a href="classIRAmcorAc.html#a6da2f34f1e044f815e94ede578f4c26f">More...</a><br /></td></tr>
<tr class="separator:a6da2f34f1e044f815e94ede578f4c26f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a951aa81d98c66138f61069431e13f35a"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a951aa81d98c66138f61069431e13f35a">toCommonFanSpeed</a> (const uint8_t speed)</td></tr>
<tr class="memdesc:a951aa81d98c66138f61069431e13f35a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a native fan speed into its <a class="el" href="namespacestdAc.html" title="Enumerators and Structures for the Common A/C API.">stdAc</a> equivilant. <a href="classIRAmcorAc.html#a951aa81d98c66138f61069431e13f35a">More...</a><br /></td></tr>
<tr class="separator:a951aa81d98c66138f61069431e13f35a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:a67244a75731be6a3bd96ecc0384d0113"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a67244a75731be6a3bd96ecc0384d0113">checksum</a> (void)</td></tr>
<tr class="memdesc:a67244a75731be6a3bd96ecc0384d0113"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update the checksum value for the internal state. <a href="classIRAmcorAc.html#a67244a75731be6a3bd96ecc0384d0113">More...</a><br /></td></tr>
<tr class="separator:a67244a75731be6a3bd96ecc0384d0113"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a6245bb51fa206031c3348e3eb6cb096d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classIRsend.html">IRsend</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#a6245bb51fa206031c3348e3eb6cb096d">_irsend</a></td></tr>
<tr class="separator:a6245bb51fa206031c3348e3eb6cb096d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acef1c3896f03afd5d10d5cbb7ed105ce"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIRAmcorAc.html#acef1c3896f03afd5d10d5cbb7ed105ce">remote_state</a> [<a class="el" href="IRremoteESP8266_8h.html#a62866e6918602533d590912487150bc7">kAmcorStateLength</a>]</td></tr>
<tr class="separator:acef1c3896f03afd5d10d5cbb7ed105ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Class for handling detailed Amcor A/C messages. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a92db59a33c861dcd3b2960e9711f97c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92db59a33c861dcd3b2960e9711f97c4">&#9670;&nbsp;</a></span>IRAmcorAc()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">IRAmcorAc::IRAmcorAc </td>
<td>(</td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>pin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>inverted</em> = <code>false</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>use_modulation</em> = <code>true</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Class constructor. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pin</td><td>GPIO to be used when sending. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">inverted</td><td>Is the output signal to be inverted? </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">use_modulation</td><td>Is frequency modulation to be used? </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aa723533eea981f79844f241d5bb84654"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa723533eea981f79844f241d5bb84654">&#9670;&nbsp;</a></span>begin()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void IRAmcorAc::begin </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set up hardware to be able to send a message. </p>
</div>
</div>
<a id="aec764cf4d88bb3fcbe3f36d24780f6a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec764cf4d88bb3fcbe3f36d24780f6a9">&#9670;&nbsp;</a></span>calcChecksum()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint8_t IRAmcorAc::calcChecksum </td>
<td>(</td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>state</em>[], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>length</em> = <code><a class="el" href="IRremoteESP8266_8h.html#a62866e6918602533d590912487150bc7">kAmcorStateLength</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculate the checksum for the supplied state. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">state</td><td>The source state to generate the checksum from. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>Length of the supplied state to checksum. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The checksum value. </dd></dl>
</div>
</div>
<a id="a6206e866e859bc4690cb014c49c1ff80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6206e866e859bc4690cb014c49c1ff80">&#9670;&nbsp;</a></span>calibrate()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int8_t IRAmcorAc::calibrate </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Run the calibration to calculate uSec timing offsets for this platform. </p>
<dl class="section return"><dt>Returns</dt><dd>The uSec timing offset needed per modulation of the IR Led. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all. </dd></dl>
</div>
</div>
<a id="a67244a75731be6a3bd96ecc0384d0113"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67244a75731be6a3bd96ecc0384d0113">&#9670;&nbsp;</a></span>checksum()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void IRAmcorAc::checksum </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Update the checksum value for the internal state. </p>
</div>
</div>
<a id="ad0f8b7cdf5942c3680639d410f53d18c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0f8b7cdf5942c3680639d410f53d18c">&#9670;&nbsp;</a></span>convertFan()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t IRAmcorAc::convertFan </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a>&#160;</td>
<td class="paramname"><em>speed</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a <a class="el" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383" title="Common A/C settings for Fan Speeds.">stdAc::fanspeed_t</a> enum into it's native speed. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">speed</td><td>The enum to be converted. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The native equivilant of the enum. </dd></dl>
</div>
</div>
<a id="ab57117e1072b5265ac9ab5be6d58bccc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab57117e1072b5265ac9ab5be6d58bccc">&#9670;&nbsp;</a></span>convertMode()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t IRAmcorAc::convertMode </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a>&#160;</td>
<td class="paramname"><em>mode</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a <a class="el" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f" title="Common A/C settings for A/C operating modes.">stdAc::opmode_t</a> enum into its native mode. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">mode</td><td>The enum to be converted. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The native equivilant of the enum. </dd></dl>
</div>
</div>
<a id="a8ba84d83fc426ee5b75e0be27fd22d9c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ba84d83fc426ee5b75e0be27fd22d9c">&#9670;&nbsp;</a></span>getFan()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t IRAmcorAc::getFan </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the current fan speed setting. </p>
<dl class="section return"><dt>Returns</dt><dd>The current fan speed. </dd></dl>
</div>
</div>
<a id="a61659b6b54d652713efdf408a09db087"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a61659b6b54d652713efdf408a09db087">&#9670;&nbsp;</a></span>getMax()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IRAmcorAc::getMax </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Is the Maximum Cooling or Heating setting (i.e. Turbo) setting on? </p>
<dl class="section return"><dt>Returns</dt><dd>The current value. </dd></dl>
</div>
</div>
<a id="a30fd2a228e63e6b9a1544c3c1ec910f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a30fd2a228e63e6b9a1544c3c1ec910f7">&#9670;&nbsp;</a></span>getMode()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t IRAmcorAc::getMode </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the current operation mode setting. </p>
<dl class="section return"><dt>Returns</dt><dd>The current operation mode. </dd></dl>
</div>
</div>
<a id="a141e2af9eb4530b175a430dee31bc5ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a141e2af9eb4530b175a430dee31bc5ae">&#9670;&nbsp;</a></span>getPower()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool IRAmcorAc::getPower </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the power setting from the internal state. </p>
<dl class="section return"><dt>Returns</dt><dd>A boolean indicating the power setting. </dd></dl>
</div>
</div>
<a id="aa2b99d815e499edf3ae53aebb35cbe9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2b99d815e499edf3ae53aebb35cbe9b">&#9670;&nbsp;</a></span>getRaw()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t * IRAmcorAc::getRaw </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the raw state of the object, suitable to be sent with the appropriate <a class="el" href="classIRsend.html" title="Class for sending all basic IR protocols.">IRsend</a> object method. </p>
<dl class="section return"><dt>Returns</dt><dd>A PTR to the internal state. </dd></dl>
</div>
</div>
<a id="a2f3e4765a3ae65ffda197f5a58070bf3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f3e4765a3ae65ffda197f5a58070bf3">&#9670;&nbsp;</a></span>getTemp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t IRAmcorAc::getTemp </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the current temperature setting. </p>
<dl class="section return"><dt>Returns</dt><dd>Get current setting for temp. in degrees celsius. </dd></dl>
</div>
</div>
<a id="a5c67c2acde4964bf863d5ae73555ea1a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c67c2acde4964bf863d5ae73555ea1a">&#9670;&nbsp;</a></span>off()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void IRAmcorAc::off </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the internal state to have the power off. </p>
</div>
</div>
<a id="adff3f4b9f57815a4062443f3e4dab78c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adff3f4b9f57815a4062443f3e4dab78c">&#9670;&nbsp;</a></span>on()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void IRAmcorAc::on </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the internal state to have the power on. </p>
</div>
</div>
<a id="a4fa894c01a8baabfeadb39634a850fd9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4fa894c01a8baabfeadb39634a850fd9">&#9670;&nbsp;</a></span>send()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void IRAmcorAc::send </td>
<td>(</td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>repeat</em> = <code><a class="el" href="IRremoteESP8266_8h.html#a746e1ce73c2ebd9bd1f5300494820a0c">kAmcorDefaultRepeat</a></code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send the current internal state as an IR message. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">repeat</td><td>Nr. of times the message will be repeated. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="acf26fc65363e2734e4dc6eb562812553"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf26fc65363e2734e4dc6eb562812553">&#9670;&nbsp;</a></span>setFan()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void IRAmcorAc::setFan </td>
<td>(</td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>speed</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the speed of the fan. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">speed</td><td>The desired setting. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a1250c6b106378286d9db013296c9b16f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1250c6b106378286d9db013296c9b16f">&#9670;&nbsp;</a></span>setMax()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void IRAmcorAc::setMax </td>
<td>(</td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>on</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Control the current Maximum Cooling or Heating setting. (i.e. Turbo) </p>
<dl class="section note"><dt>Note</dt><dd>Only allowed in Cool or Heat mode. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">on</td><td>The desired setting. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="afa9c2d080ed5c4c7bc64eb13a07eab68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa9c2d080ed5c4c7bc64eb13a07eab68">&#9670;&nbsp;</a></span>setMode()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void IRAmcorAc::setMode </td>
<td>(</td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>mode</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the desired operation mode. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">mode</td><td>The desired operation mode. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a2ccfb2c2f0feb8a8cea9e10e30035988"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2ccfb2c2f0feb8a8cea9e10e30035988">&#9670;&nbsp;</a></span>setPower()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void IRAmcorAc::setPower </td>
<td>(</td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>on</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the internal state to have the desired power. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">on</td><td>The desired power state. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ac0520033d7a59c817ca8ec08462fe39b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac0520033d7a59c817ca8ec08462fe39b">&#9670;&nbsp;</a></span>setRaw()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void IRAmcorAc::setRaw </td>
<td>(</td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>state</em>[]</td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the raw state of the object. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">state</td><td>The raw state from the native IR message. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af4b2c476b76534687f14e9be963e9522"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4b2c476b76534687f14e9be963e9522">&#9670;&nbsp;</a></span>setTemp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void IRAmcorAc::setTemp </td>
<td>(</td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>degrees</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the temperature. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">degrees</td><td>The temperature in degrees celsius. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a018ab4ca4d738d848d3388ea1300b83b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a018ab4ca4d738d848d3388ea1300b83b">&#9670;&nbsp;</a></span>stateReset()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void IRAmcorAc::stateReset </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reset the internals of the object to a known good state. </p>
</div>
</div>
<a id="aac4ae204cf0c393c18e5de96c4ba44ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac4ae204cf0c393c18e5de96c4ba44ab">&#9670;&nbsp;</a></span>toCommon()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structstdAc_1_1state__t.html">stdAc::state_t</a> IRAmcorAc::toCommon </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert the current internal state into its <a class="el" href="structstdAc_1_1state__t.html" title="Structure to hold a common A/C state.">stdAc::state_t</a> equivilant. </p>
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="namespacestdAc.html" title="Enumerators and Structures for the Common A/C API.">stdAc</a> equivilant of the native settings. </dd></dl>
</div>
</div>
<a id="a951aa81d98c66138f61069431e13f35a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a951aa81d98c66138f61069431e13f35a">&#9670;&nbsp;</a></span>toCommonFanSpeed()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383">stdAc::fanspeed_t</a> IRAmcorAc::toCommonFanSpeed </td>
<td>(</td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>speed</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a native fan speed into its <a class="el" href="namespacestdAc.html" title="Enumerators and Structures for the Common A/C API.">stdAc</a> equivilant. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">speed</td><td>The native setting to be converted. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="namespacestdAc.html" title="Enumerators and Structures for the Common A/C API.">stdAc</a> equivilant of the native setting. </dd></dl>
</div>
</div>
<a id="a6da2f34f1e044f815e94ede578f4c26f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6da2f34f1e044f815e94ede578f4c26f">&#9670;&nbsp;</a></span>toCommonMode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f">stdAc::opmode_t</a> IRAmcorAc::toCommonMode </td>
<td>(</td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>mode</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a native mode into its <a class="el" href="namespacestdAc.html" title="Enumerators and Structures for the Common A/C API.">stdAc</a> equivilant. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">mode</td><td>The native setting to be converted. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="namespacestdAc.html" title="Enumerators and Structures for the Common A/C API.">stdAc</a> equivilant of the native setting. </dd></dl>
</div>
</div>
<a id="a2435fd76c642e4a64c7e2330236dcaa6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2435fd76c642e4a64c7e2330236dcaa6">&#9670;&nbsp;</a></span>toString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff">String</a> IRAmcorAc::toString </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert the current internal state into a human readable string. </p>
<dl class="section return"><dt>Returns</dt><dd>A human readable string. </dd></dl>
</div>
</div>
<a id="a1ad297a62ac3152c9d957cef38757d28"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ad297a62ac3152c9d957cef38757d28">&#9670;&nbsp;</a></span>validChecksum()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool IRAmcorAc::validChecksum </td>
<td>(</td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>state</em>[], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint16_t&#160;</td>
<td class="paramname"><em>length</em> = <code><a class="el" href="IRremoteESP8266_8h.html#a62866e6918602533d590912487150bc7">kAmcorStateLength</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Verify the checksum is valid for a given state. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">state</td><td>The array to verify the checksum of. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>The size of the state. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A boolean indicating if it's checksum is valid. </dd></dl>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a6245bb51fa206031c3348e3eb6cb096d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6245bb51fa206031c3348e3eb6cb096d">&#9670;&nbsp;</a></span>_irsend</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classIRsend.html">IRsend</a> IRAmcorAc::_irsend</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acef1c3896f03afd5d10d5cbb7ed105ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acef1c3896f03afd5d10d5cbb7ed105ce">&#9670;&nbsp;</a></span>remote_state</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint8_t IRAmcorAc::remote_state[<a class="el" href="IRremoteESP8266_8h.html#a62866e6918602533d590912487150bc7">kAmcorStateLength</a>]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/<a class="el" href="ir__Amcor_8h_source.html">ir_Amcor.h</a></li>
<li>src/<a class="el" href="ir__Amcor_8cpp.html">ir_Amcor.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

View File

@ -0,0 +1,4 @@
<map id="IRAmcorAc" name="IRAmcorAc">
<area shape="rect" id="node1" title="Class for handling detailed Amcor A/C messages." alt="" coords="5,95,99,121"/>
<area shape="rect" id="node2" href="$classIRsend.html" title="Class for sending all basic IR protocols." alt="" coords="19,5,85,32"/>
</map>

View File

@ -0,0 +1 @@
163192504ac8319807adb950a6186ac0

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,122 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IRremoteESP8266: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IRremoteESP8266
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">IRArgoAC Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="classIRArgoAC.html">IRArgoAC</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#a1abd8d958c3e153c4f2aaf7a3716414e">_irsend</a></td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#ab607bde051712a57fe9c0a0cf9da20ac">argo</a></td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#aca61a63c37797699540c180354809bd8">begin</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#acab2fe3b9f77f57f0e99da0bec0d7392">calcChecksum</a>(const uint8_t state[], const uint16_t length=kArgoStateLength)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#a63cd2f350a7f249c020439543ef3c6d5">calibrate</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#ab0fe4e42d1c1201a92f5c4738b869763">checksum</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#acd147993fb998a0e7015173b9514d4a2">convertFan</a>(const stdAc::fanspeed_t speed)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#ad242e7b18dea9768b9fad6b1e0e12f65">convertMode</a>(const stdAc::opmode_t mode)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#ac23ff32b45c3fc5402e7e303ad9b5d54">convertSwingV</a>(const stdAc::swingv_t position)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#a74e7e489d743f213664d9259f1e7a431">cool_mode</a></td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#abfc383d92ced7d47945cc5ac996e5fc4">flap_mode</a></td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#a413e60e09f1abcf231a173e1374e51e0">getFan</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#a2285908626731c2feaa85635f3ce1ff1">getFlap</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#abc802d8ab9dbd9f918bc2aa36d2ea414">getiFeel</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#aff24da9d975bf1f6df0a83be2ad7a913">getMax</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#a532a313f22c716b60cee070d9ba0839d">getMode</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#adca87781240cf9c22e6bbaad9d59537c">getNight</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#a10812d30095c4adc24cb3eee25e2d246">getPower</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#ac9e8b45dbbef453a54e3593d7e2927fb">getRaw</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#a5e4d8447c8851d2fce656abce6c4d368">getRoomTemp</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#af5c4cfd3cac33f223e2807ec831df0a9">getTemp</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#a255762f71502b9ffeb0686759991ec53">heat_mode</a></td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#ad6c2250738397441b8f956d1477b7d70">IRArgoAC</a>(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#ab5ab7cc22bbce59bb02ca60431dca3fb">off</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#a70497752f7afd8e3274cf4d8b1e22628">on</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#a0e4793a4f6fc537ec1450f5a42206dae">send</a>(const uint16_t repeat=kArgoDefaultRepeat)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#a8144f003628e128ec6630aef49ed5cb5">setFan</a>(const uint8_t fan)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#a55a6402ffc3fe7fb59775050901416ca">setFlap</a>(const uint8_t flap)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#ae59f903855961441b676b7f662602554">setiFeel</a>(const bool on)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#a909c1f74e9452d0e19fc3ffd28b1b81b">setMax</a>(const bool on)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#a8575f0ef967b09308ed6a453857e65c7">setMode</a>(const uint8_t mode)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#a769dd3b538653940e41883848bc1e19c">setNight</a>(const bool on)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#a991f73d84952c1d8ac86c579d1b01785">setPower</a>(const bool on)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#a98db56256eb71bf2e8da419007145e2b">setRaw</a>(const uint8_t state[])</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#aec5a2edc6f414aab201a18defaa78c5b">setRoomTemp</a>(const uint8_t degrees)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#abad424a3cf1894715baa03780fa9b53b">setTemp</a>(const uint8_t degrees)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#ae285801cde19da82e128098097624852">setTime</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#af34a99bc37c4496c9fd68856aa065a13">stateReset</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#a4b1fda530b50c30cb863a3c146f4c81b">toCommon</a>(void)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#a334afe3ce6536089bc2832985067f029">toCommonFanSpeed</a>(const uint8_t speed)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#a8ccd3f5398f50548fda3a9e0172fb5fa">toCommonMode</a>(const uint8_t mode)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classIRArgoAC.html#ad9f52d54687754c0b8d676cb75a3b1bf">toString</a>()</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classIRArgoAC.html#acfa5a9df8273123e6f4c48684ef60006">validChecksum</a>(const uint8_t state[], const uint16_t length=kArgoStateLength)</td><td class="entry"><a class="el" href="classIRArgoAC.html">IRArgoAC</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More