Merge branch 'development' into pre-release-9.3.0

This commit is contained in:
Theo Arends 2021-02-11 15:15:51 +01:00
commit d37b9db08d
2296 changed files with 86775 additions and 25772 deletions

View File

@ -1,6 +1,6 @@
---
name: Problem report
about: Create a report to help us improve
name: Problem Report
about: Create a Report to help us improve
---
<!-- Thanks for reporting a problem for this project. READ THIS FIRST:
@ -29,36 +29,34 @@ _Make sure your have performed every step and checked the applicable boxes befor
- [ ] Read the [Contributing Guide and Policy](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md) and [the Code of Conduct](https://github.com/arendst/Tasmota/blob/development/CODE_OF_CONDUCT.md)
- [ ] Searched the problem in [issues](https://github.com/arendst/Tasmota/issues)
- [ ] Searched the problem in [discussions](https://github.com/arendst/Tasmota/discussions)
- [ ] Searched the problem in the [docs](https://tasmota.github.io/docs/FAQ)
- [ ] Searched the problem in the [forum](https://groups.google.com/d/forum/sonoffusers)
- [ ] Searched the problem in the [chat](https://discord.gg/Ks2Kzd4)
- [ ] Device used (e.g., Sonoff Basic): _____
- [ ] Tasmota binary firmware version number used: _____
- [ ] Pre-compiled
- [ ] Self-compiled
- [ ] IDE / Compiler used: _____
- [ ] Flashing tools used: _____
- [ ] Provide the output of command: `Backlog Template; Module; GPIO 255`:
```
```lua
Configuration output here:
```
- [ ] If using rules, provide the output of this command: `Backlog Rule1; Rule2; Rule3`:
```
```lua
Rules output here:
```
- [ ] Provide the output of this command: `Status 0`:
```
```lua
STATUS 0 output here:
```
- [ ] Provide the output of the Console log output when you experience your issue; if applicable:
_(Please use_ `weblog 4` _for more debug information)_
```
- [ ] Set `weblog` to 4 and then, when you experience your issue, provide the output of the Console log:
```lua
Console output here:

View File

@ -1,27 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
---
<!-- Thanks for suggesting an idea for this project. READ THIS FIRST:
Please take a few minutes to complete the requested information below. Our ability to provide assistance is greatly hampered without it. The details requested potentially affect which options to pursue. The small amount of time you spend completing the template will also help the volunteers providing the assistance to you to reduce the time required to help you.
DO NOT DELETE ANY TEXT from this template! Otherwise the issue will be auto-closed.
-->
**Have you looked for this feature in other issues and in the docs?**
**Is your feature request related to a problem? Please describe.**
_A clear and concise description of what the problem is._
**Describe the solution you'd like**
_A clear and concise description of what you want to happen._
**Describe alternatives you've considered**
_A clear and concise description of any alternative solutions or features you've considered._
**Additional context**
_Add any other context or screenshots about the feature request here._
**(Please, remember to close the issue when the problem has been addressed)**

View File

@ -2,7 +2,10 @@ blank_issues_enabled: false
contact_links:
- name: Tasmota Docs
url: https://tasmota.github.io/docs
about: All the information related to Tasmota
- name: Tasmota Support Chat
about: All the information related to Tasmota.
- name: Tasmota Discussions and Support
url: https://github.com/arendst/Tasmota/discussions
about: Tasmota usage Questions, Feature Requests and Projects.
- name: Tasmota Users Chat
url: https://discord.gg/Ks2Kzd4
about: Chat for feedback, questions and troubleshooting.

View File

@ -3,11 +3,11 @@
**Related issue (if applicable):** fixes #<Tasmota issue number goes here>
## Checklist:
- [ ] The pull request is done against the latest dev branch
- [ ] The pull request is done against the latest development branch
- [ ] Only relevant files were touched
- [ ] Only one feature/fix was added per PR and the code change compiles without warnings
- [ ] The code change is tested and works on Tasmota core ESP8266 V.2.7.4.9
- [ ] The code change is tested and works on Tasmota core ESP32 V.1.0.4.2
- [ ] The code change is tested and works on Tasmota core ESP32 V.1.0.5-rc6
- [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla).
_NOTE: The code change must pass CI tests. **Your PR cannot be merged unless tests pass**_

View File

@ -5,7 +5,7 @@
# Comment that will be sent if an issue is judged to be closed.
comment: >-
This issue has been automatically closed because the issue template is missing or incomplete.
This issue has been automatically closed because the PROBLEM REPORT TEMPLATE is missing or incomplete.
Filling the template is required so standard questions don't need to be asked again each time.
Our ability to provide assistance is greatly hampered if few minutes are not taken to complete the issue template
@ -13,19 +13,17 @@ comment: >-
of time you will spend completing the template will also help the volunteers, providing assistance to you, to reduce
the time required to help you.
Please, could you be so kind on completing the [issue template](https://github.com/arendst/Tasmota/issues/new/choose) in order to have more information so as to properly help you?
Please, could you be so kind on completing the [PROBLEM REPORT TEMPLATE](https://github.com/arendst/Tasmota/issues/new/choose) in order to have more information so as to properly help you?
Thank you for taking the time to report, hopefully it can be resolved soon.
[Wiki](https://tasmota.github.io/docs/) for more information.
[Docs](https://tasmota.github.io/docs/) for more information.
[Chat](https://discord.gg/Ks2Kzd4) for more user experience.
[Discussions](https://github.com/arendst/Tasmota/discussions) for Questions, Feature Requests and Projects.
[Community](https://groups.google.com/d/forum/sonoffusers) for forum.
[Code of Conduct](https://github.com/arendst/Tasmota/blob/development/CODE_OF_CONDUCT.md)
[Contributing Guideline and Policy](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md)
[Chat](https://discord.gg/Ks2Kzd4) for more users experience.
Please check the [Code of Conduct](https://github.com/arendst/Tasmota/blob/development/CODE_OF_CONDUCT.md) and the [Contributing Guideline and Policy](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md)
issueConfigs:
# There can be several configs for different kind of issues.

View File

@ -1,6 +1,6 @@
name: Tasmota CI
on:
on:
pull_request:
jobs:
@ -16,12 +16,12 @@ jobs:
pip install -U platformio
platformio upgrade --dev
platformio update
- name: Run PlatformIO
- name: Run PlatformIO
run: platformio run -e tasmota
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-minimal:
runs-on: ubuntu-latest
@ -40,7 +40,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-lite:
runs-on: ubuntu-latest
@ -59,7 +59,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-knx:
runs-on: ubuntu-latest
@ -78,8 +78,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-sensors:
runs-on: ubuntu-latest
steps:
@ -97,7 +97,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-display:
runs-on: ubuntu-latest
@ -116,7 +116,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-ir:
runs-on: ubuntu-latest
@ -135,7 +135,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-zbbridge:
runs-on: ubuntu-latest
@ -154,7 +154,26 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-AF:
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-AF
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output
tasmota-BG:
runs-on: ubuntu-latest
@ -173,8 +192,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-BR:
runs-on: ubuntu-latest
steps:
@ -192,7 +211,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-CN:
runs-on: ubuntu-latest
@ -211,7 +230,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-CZ:
runs-on: ubuntu-latest
@ -230,7 +249,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-DE:
runs-on: ubuntu-latest
@ -249,8 +268,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-ES:
runs-on: ubuntu-latest
steps:
@ -268,8 +287,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-FR:
runs-on: ubuntu-latest
steps:
@ -287,7 +306,26 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-FY:
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-FY
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output
tasmota-GR:
runs-on: ubuntu-latest
@ -306,7 +344,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-HE:
runs-on: ubuntu-latest
@ -325,8 +363,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-HU:
runs-on: ubuntu-latest
steps:
@ -344,7 +382,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-IT:
runs-on: ubuntu-latest
@ -363,7 +401,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-KO:
runs-on: ubuntu-latest
@ -382,7 +420,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-NL:
runs-on: ubuntu-latest
@ -401,8 +439,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-PL:
runs-on: ubuntu-latest
steps:
@ -420,7 +458,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-PT:
runs-on: ubuntu-latest
@ -439,7 +477,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-RO:
runs-on: ubuntu-latest
@ -458,7 +496,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-RU:
runs-on: ubuntu-latest
@ -477,8 +515,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-SE:
runs-on: ubuntu-latest
steps:
@ -496,7 +534,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-SK:
runs-on: ubuntu-latest
@ -515,7 +553,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-TR:
runs-on: ubuntu-latest
@ -534,7 +572,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-TW:
runs-on: ubuntu-latest
@ -553,8 +591,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-UK:
runs-on: ubuntu-latest
steps:
@ -572,7 +610,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota-VN:
runs-on: ubuntu-latest
@ -591,4 +629,4 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output

View File

@ -22,8 +22,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-webcam:
runs-on: ubuntu-latest
steps:
@ -42,7 +42,47 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-odroidgo:
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 tasmota32-odroidgo
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output
tasmota32-core2:
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 tasmota32-core2
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output
tasmota32-minimal:
runs-on: ubuntu-latest
@ -62,7 +102,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-lite:
runs-on: ubuntu-latest
@ -82,7 +122,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-knx:
runs-on: ubuntu-latest
@ -102,8 +142,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-sensors:
runs-on: ubuntu-latest
steps:
@ -122,7 +162,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-display:
runs-on: ubuntu-latest
@ -142,7 +182,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-ir:
runs-on: ubuntu-latest
@ -162,7 +202,27 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-AF:
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 tasmota32-AF
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output
tasmota32-BG:
runs-on: ubuntu-latest
@ -182,8 +242,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-BR:
runs-on: ubuntu-latest
steps:
@ -202,7 +262,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-CN:
runs-on: ubuntu-latest
@ -222,7 +282,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-CZ:
runs-on: ubuntu-latest
@ -242,7 +302,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-DE:
runs-on: ubuntu-latest
@ -262,8 +322,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-ES:
runs-on: ubuntu-latest
steps:
@ -282,7 +342,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-FR:
runs-on: ubuntu-latest
@ -302,7 +362,27 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-FY:
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 tasmota32-FY
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output
tasmota32-GR:
runs-on: ubuntu-latest
@ -322,7 +402,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-HE:
runs-on: ubuntu-latest
@ -342,8 +422,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-HU:
runs-on: ubuntu-latest
steps:
@ -362,7 +442,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-IT:
runs-on: ubuntu-latest
@ -382,7 +462,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-KO:
runs-on: ubuntu-latest
@ -402,7 +482,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-NL:
runs-on: ubuntu-latest
@ -422,8 +502,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-PL:
runs-on: ubuntu-latest
steps:
@ -442,7 +522,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-PT:
runs-on: ubuntu-latest
@ -462,7 +542,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-RO:
runs-on: ubuntu-latest
@ -482,7 +562,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-RU:
runs-on: ubuntu-latest
@ -502,8 +582,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-SE:
runs-on: ubuntu-latest
steps:
@ -522,7 +602,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-SK:
runs-on: ubuntu-latest
@ -542,7 +622,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-TR:
runs-on: ubuntu-latest
@ -562,7 +642,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-TW:
runs-on: ubuntu-latest
@ -582,8 +662,8 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-UK:
runs-on: ubuntu-latest
steps:
@ -602,7 +682,7 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output
tasmota32-VN:
runs-on: ubuntu-latest
@ -622,4 +702,4 @@ jobs:
- uses: actions/upload-artifact@v2
with:
name: firmware
path: ./build_output/firmware
path: ./build_output

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -2,13 +2,13 @@ name: "Mark or close stale issues and PRs"
on:
schedule:
- cron: "15 05 * * *"
- cron: "30 * * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3.0.14
- uses: actions/stale@v3.0.15
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 25

2
.gitignore vendored
View File

@ -9,6 +9,8 @@
.clang_complete
.gcc-flags.json
.cache
data
unpacked_fs
tasmota/user_config_override.h
build
build_output

View File

@ -1,4 +1,5 @@
tasks:
- before: platformio upgrade
- command: platformio run -e tasmota
image:

11
API.md
View File

@ -14,8 +14,8 @@ Callback Id | Bool | xdrv | xsns | xnrg | xlgt | Description
----------------------------|------|------|------|------|------|----------------------------------
FUNC_SETTINGS_OVERRIDE | | x | | | | Override start-up settings
FUNC_PIN_STATE | x | 1 | 2 | | | At GPIO configuration
FUNC_MODULE_INIT | x | 1 | | | 2 | Init module specific parameters
FUNC_PRE_INIT | | 1 | | 2 | | Once GPIO have been established
FUNC_MODULE_INIT | x | 3 | 1 | | 2 | Init module specific parameters
FUNC_PRE_INIT | | 1 | 3 | 2 | | Once GPIO have been established
FUNC_INIT | | 1 | 3 | 2 | | At end of initialisation
FUNC_LOOP | | 1 | 2 | | | In main loop
FUNC_EVERY_50_MSECOND | | 1 | 2 | | |
@ -34,7 +34,7 @@ FUNC_COMMAND_SENSOR | x | | x | | | When command Se
FUNC_MQTT_SUBSCRIBE | | x | | | | At end of MQTT subscriptions
FUNC_MQTT_INIT | | x | | | | Once at end of MQTT connection
FUNC_MQTT_DATA | x | x | | | | Before decoding command
FUNC_SET_POWER | | x | | | | Before setting relays
FUNC_SET_POWER | | 1 | 2 | | | Before setting relays
FUNC_SET_DEVICE_POWER | x | x | | | | Set relay
FUNC_SHOW_SENSOR | | x | | | | When FUNC_JSON_APPEND completes
FUNC_ANY_KEY | | x | | | |
@ -49,6 +49,8 @@ FUNC_WEB_ADD_MAIN_BUTTON | | 1 | 2 | | | Add a main butt
FUNC_WEB_ADD_HANDLER | | 1 | 2 | | | Add a webserver handler
FUNC_SET_CHANNELS | | 2 | | | 1 |
FUNC_SET_SCHEME | | | | | x |
FUNC_HOTPLUG_SCAN | | | x | | |
FUNC_DEVICE_GROUP_ITEM | | x | | | |
The numbers represent the sequence of execution
@ -89,12 +91,15 @@ CFG: Loaded from flash at FB, Count 1581
xdrv - FUNC_SETTINGS_OVERRIDE
xdrv - FUNC_PIN_STATE
xsns - FUNC_PIN_STATE
xsns - FUNC_MODULE_INIT
xdrv - FUNC_MODULE_INIT
xlgt - FUNC_MODULE_INIT
xdrv - FUNC_PRE_INIT
xnrg - FUNC_PRE_INIT
xsns - FUNC_PRE_INIT
SRC: Restart
xdrv - FUNC_SET_POWER
xsns - FUNC_SET_POWER
xlgt - FUNC_SET_CHANNELS
xdrv - FUNC_SET_DEVICE_POWER
Project tasmota Wemos 2 Version 7.0.0.3(tasmota)-STAGE

View File

@ -3,6 +3,7 @@
| Feature or Sensor | minimal | lite | tasmota | knx | sensors | ir | display | Remarks
|-----------------------|---------|-------|--------|-----|---------|----|---------|--------
| MY_LANGUAGE en_GB | x | x | x | x | x | x | x |
| USE_UFILESYS | - | - | - | - | - | - | - |
| USE_ARDUINO_OTA | - | - | - | - | - | - | - |
| USE_DOMOTICZ | - | - | x | x | x | x | - |
| USE_HOME_ASSISTANT | - | - | x | x | x | x | - |
@ -49,7 +50,7 @@
| USE_PWM_DIMMER | - | - | x | x | - | - | - |
| USE_KEELOQ | - | - | - | - | - | - | - |
| USE_SONOFF_D1 | - | - | x | x | - | - | - |
| USE_SHELLY_DIMMER | - | - | - | - | - | - | - |
| USE_SHELLY_DIMMER | - | - | x | - | - | - | - |
| | | | | | | | |
| Feature or Sensor | minimal | lite | tasmota | knx | sensors | ir | display | Remarks
| USE_LIGHT | - | x | x | x | x | x | x |
@ -66,6 +67,7 @@
| USE_PZEM_AC | - | - | x | x | x | - | - |
| USE_PZEM_DC | - | - | x | x | x | - | - |
| USE_MCP39F501 | - | x | x | x | x | - | - |
| USE_SDM72 | - | - | - | - | x | - | - |
| USE_SDM120 | - | - | - | - | x | - | - |
| USE_SDM630 | - | - | - | - | x | - | - |
| USE_DDS2382 | - | - | - | - | x | - | - |
@ -147,6 +149,8 @@
| USE_EZOPRS | - | - | - | - | - | - | - |
| USE_EZORGB | - | - | - | - | - | - | - |
| USE_EZORTD | - | - | - | - | - | - | - |
| USE_SEESAW_SOIL | - | - | - | - | - | - | - |
| USE_TOF10120 | - | - | - | - | - | - | - |
| | | | | | | | |
| Feature or Sensor | minimal | lite | tasmota | knx | sensors | ir | display | Remarks
| USE_SPI | - | - | - | - | - | - | x |
@ -191,6 +195,7 @@
| USE_RF_SENSOR | - | - | - | - | x | - | - | AlectoV2 only
| USE_HRE | - | - | - | - | x | - | - |
| USE_A4988_STEPPER | - | - | - | - | - | - | - |
| USE_NEOPOOL | - | - | - | - | - | - | - |
| | | | | | | | |
| Feature or Sensor | minimal | lite | tasmota | knx | sensors | ir | display | Remarks
| USE_DISPLAY | - | - | - | - | - | - | x |
@ -201,16 +206,23 @@
| USE_DISPLAY_ILI9341 | - | - | - | - | - | - | x |
| USE_DISPLAY_EPAPER_29 | - | - | - | - | - | - | x |
| USE_DISPLAY_EPAPER_42 | - | - | - | - | - | - | x |
| USE_DISPLAY_ILI9488 | - | - | - | - | - | - | - |
| USE_DISPLAY_SSD1351 | - | - | - | - | - | - | - |
| USE_DISPLAY_RA8876 | - | - | - | - | - | - | - |
| USE_DISPLAY_ILI9488 | - | - | - | - | - | - | x |
| USE_DISPLAY_SSD1351 | - | - | - | - | - | - | x |
| USE_DISPLAY_RA8876 | - | - | - | - | - | - | x |
| USE_DISPLAY_ST7789 | - | - | - | - | - | - | x |
| | | | | | | | |
| USE_FT5206 | - | - | - | - | - | - | - |
| USE_FTC532 | - | - | - | - | - | - | - |
| USE_BS814A2 | - | - | - | - | - | - | - |
## Additional Features and Sensors on ESP32
| Feature or Sensor | minimal | lite | tasmota | knx | sensors | ir | display | webcam | Remarks
|-----------------------|---------|-------|--------|-----|---------|----|---------|--------|--------
| USE_MI_ESP32 | - | - | - | - | - | - | - | - |
| USE_WEBCAM | - | - | - | - | - | - | - | x |
| USE_ETHERNET | - | - | - | - | - | - | - | - |
| USE_I2S_AUDIO | - | - | - | - | - | - | - | - |
| USE_TTGO_WATCH | - | - | - | - | - | - | - | - |
| Feature or Sensor | lite | tasmota | knx | sensors | ir | display | webcam | Remarks
|-----------------------|-------|--------|-----|---------|----|---------|--------|--------
| USE_UFILESYS | x | x | x | x | x | x | x |
| USE_MI_ESP32 | - | x | - | x | - | - | - | See SetOption115
| USE_IBEACON_ESP32 | - | - | - | - | - | - | - |
| USE_WEBCAM | - | - | - | - | - | - | x |
| USE_ETHERNET | - | - | - | - | - | - | - |
| USE_I2S_AUDIO | - | - | - | - | - | - | - |
| USE_TTGO_WATCH | - | - | - | - | - | - | - |

View File

@ -3,6 +3,127 @@ All notable changes to this project will be documented in this file.
## [Released]
## [9.3.0] 20210218
- Release Kenneth
## [9.2.0.7]
### Added
- Support for Device Groups Device Map (#10898)
- Support for Eastron SDM72D-M three phase 100A Modbus energy meter (#10862)
- Support for Frysk language translations by Christiaan Heerze
## [9.2.0.6] 20210210
### Changed
- Removed migration support for versions before v8.1.0 (Doris)
- ESP32 Increase number of switch GPIOs from 8 to 28
- ESP32 Increase number of interlock groups from 4 to 14
- Increase number of button GPIOs from 4 to 8
- Preview of Berry language for Tasmota32
## [9.2.0.5] 20210205
### Changed
- ESP32 increase number of relay GPIOs from 8 to 28
## [9.2.0.4] 20210204
### Added
- Function ``AddLog`` to provide logging for up to 128 (LOGSZ) characters to save stack space
- Commands ``ChannelRemap``, ``MultiPWM``, ``AlexaCTRange``, ``PowerOnFade``, ``PWMCT``, ``WhiteBlend`` and ``VirtualCT`` as synonyms for ``SetOption37, 68, 82, 91, 92, 105`` and ``106``
- Commands ``ZbNameKey``, ``ZbDeviceTopic``, ``ZbNoPrefix``, ``ZbEndpointSuffix``, ``ZbNoAutoBind`` and ``ZbNameTopic`` as synonyms for ``SetOption83, 89, 100, 101, 110`` and ``112``
- Commands ``ZbNoAutoBind``, ``ZbReceivedTopic`` and ``ZbOmitDevice`` as synonyms for ``SetOption116, 118`` and ``119``
- Commands ``BuzzerActive`` and ``BuzzerPwm`` as synonyms for ``SetOption67`` and ``111``
- Support for ESP32 ``Module 5`` Wireless Tag Eth01 (#9496)
- Support trailing silence in buzzer tune (#10694)
- Command ``L1MusicSync <0|Off>|<1|On>|<2|Toggle>, 1..10, 1..100>`` to control Sonoff L1 Music Sync mode sensitivity and speed (#10722)
- Command ``Speed2`` to control a once off fade (#10741)
- Zigbee command ``SetOption120 1`` or ``ZbEndpointTopic 1`` to add the endpoint as suffix in topic when using ``SetOption89 1``
- Zigbee command ``ZbScan`` to do an energy scan on each radio channel
### Changed
- Maximum chars in ``AddLog_P`` logging restored from 128 to 700 (MAX_LOGSZ) to solve broken error messages
## [9.2.0.3] 20210122
### Added
- Support for time proportioned (``#define USE_TIMEPROP``) and optional PID (``#define USE_PID``) relay control (#10412)
- Support rotary encoder on Shelly Dimmer (#10407)
- Command ``SetOption43 1..255`` to control Rotary step (#10407)
- Support for BS814A-2 8-button touch buttons by Peter Franck (#10447)
- Support for up to 4 I2C SEESAW_SOIL Capacitance & Temperature sensors by Peter Franck (#10481)
- ESP8266 Support for 2MB and up linker files with 1MB and up LittleFS
- ESP32 support for TLS MQTT using BearSSL (same as ESP8266)
- Support for 24/26/32/34 bit RFID Wiegand interface (D0/D1) by Sigurd Leuther (#3647)
- Compile time option ``USE_MQTT_TLS_DROP_OLD_FINGERPRINT`` to drop old (less secure) TLS fingerprint
- Command ``SetOption40 0..250`` to disable button functionality if activated for over 0.1 second re-introduced
- Support for SM2135 current selection using GPIO ``SM2135 DAT`` index (#10634)
- Support for ESP32 ``Module 7`` M5stack core2 16MB binary tasmota32-core2.bin (#10635)
- Support for Sugar Valley NeoPool Controller by Norbert Richter (#10637)
- Rule trigger string comparisons for EndsWith ``$>``, StartsWith ``$<`` and Contains ``$|`` (#10538)
- Support for TOF10120 time of flight sensor by Cyril Pawelko (#10190)
### Breaking Changed
- ESP32 switch from default SPIFFS to default LittleFS file system loosing current (zigbee) files
- ESP8266 until now NOT SUPPORTED linker files 2MB and up. Current settings will be overwritten once LittleFS is enabled
### Changed
- Force initial default state ``SetOption57 1`` to scan wifi network every 44 minutes for strongest signal (#10395)
- Command ``Sleep 0`` removes any sleep from wifi modem except when ESP32 BLE is active
- PubSubClient MQTT_SOCKET_TIMEOUT from 15 to 4 seconds
- Domoticz fixed 2 decimals resolution by user selectable ``TempRes``, ``HumRes`` and ``PressRes`` resolutions
## [9.2.0.2] 20210105
### Added
- Support for ESP32 ``Module 3`` Odroid Go 16MB binary tasmota32-odroidgo.bin (#8630)
- Command ``CTRange`` to specify the visible CT range the bulb is capable of (#10311)
- Command ``VirtualCT`` to simulate or fine tune CT bulbs with 3,4,5 channels (#10311)
- Command ``SetOption118 1`` to move ZbReceived from JSON message and into the subtopic replacing "SENSOR" default (#10353)
- Command ``SetOption119 1`` to remove the device addr from json payload, can be used with zb_topic_fname where the addr is already known from the topic (#10355)
- Command ``RuleTimer0`` to access all RuleTimers at once (#10352)
- SPI display driver SSD1331 Color oled by Jeroen Vermeulen (#10376)
- IRremoteESP8266 library from v2.7.13 to v2.7.14
- Rotary No Pullup GPIO selection ``Rotary A/B_n`` (#10407)
### Breaking Changed
- Replaced MFRC522 13.56MHz rfid card reader GPIO selection from ``SPI CS`` by ``RC522 CS``
- Replaced NRF24L01 GPIO selection from ``SPI CS`` by ``NRF24 CS`` and ``SPI DC`` by ``NRF24 DC``
- Replaced ILI9341 GPIO selection from ``SPI CS`` by ``ILI9341 CS`` and ``SPI DC`` by ``ILI9341 DC``
- Replaced ST7789 GPIO selection from ``SPI CS`` by ``ST7789 CS`` and ``SPI DC`` by ``ST7789 DC``
- Replaced ILI9488 GPIO selection from ``SPI CS`` by ``ILI9488_CS``
- Replaced EPaper29 GPIO selection from ``SPI CS`` by ``EPaper29 CS``
- Replaced EPaper42 GPIO selection from ``SPI CS`` by ``EPaper42 CS``
- Replaced SSD1351 GPIO selection from ``SPI CS`` by ``SSD1351 CS``
- Replaced RA8876 GPIO selection from ``SPI CS`` by ``RA8876 CS``
### Changed
- Maximum chars in ``AddLog_P`` logging reduced from 700 to 128 (LOGSZ) to enhance stability
- Disabled ``USE_LIGHT`` light support for ZBBridge saving 17.6kB (#10374)
## [9.2.0.1] 20201229
### Added
- Milliseconds to console output (#10152)
- Support for P9813 RGB Led MOSFET controller (#10104)
- Support for GPIO option selection
- Gpio ``Option_a1`` enabling PWM2 high impedance if powered off as used by Wyze bulbs (#10196)
- Support for FTC532 8-button touch controller by Peter Franck (#10222)
- Support character `#` to be replaced by `space`-character in command ``Publish`` topic (#10258)
- BSSID and Signal Strength Indicator to GUI wifi scan result (#10253)
- Support for Afrikaans language translations by Christiaan Heerze
- Support for IR inverted leds using ``#define IR_SEND_INVERTED true`` (#10301)
- Support for disabling 38kHz IR modulation using ``#define IR_SEND_USE_MODULATION false`` (#10301)
- Support for SPI display driver for ST7789 TFT by Gerhard Mutz (#9037)
### Changed
- Logging from heap to stack freeing 700 bytes RAM
### Fixed
- Redesign syslog and mqttlog using log buffer (#10164)
- Shutter stop issue (#10170)
- Scripter script_sub_command (#10181)
- Scripter JSON variable above 32 chars (#10193)
- Shelly Dimmer power on state (#10154, #10182)
- Wemo emulation for single devices (#10165, #10194)
- ESP32 LoadStoreError when using ``#define USER_TEMPLATE`` (#9506)
- Compile error when ``#ifdef USE_IR_RECEIVE`` is disabled regression from 9.1.0.2
- Prometheus memory leak (#10221)
## [9.2.0] 20201221
### Fixed Backported
- Shutter stop issue (#10170)

View File

@ -47,13 +47,13 @@ The process is straight-forward.
- Fork the Tasmota Repository [git repository](https://github.com/arendst/Tasmota).
- Write/Change the code in your Fork for a new feature, bug fix, new sensor, optimization, etc.
- Ensure tests work.
- Create a Pull Request against the [**dev**](https://github.com/arendst/Tasmota/tree/dev) branch of Tasmota.
- Create a Pull Request against the [**development**](https://github.com/arendst/Tasmota/tree/development) branch of Tasmota.
1. All pull requests must be done against the dev branch.
1. All pull requests must be done against the development branch.
2. Only relevant files should be touched (Also beware if your editor has auto-formatting feature enabled).
3. Only one feature/fix should be added per PR.
4. If adding a new functionality (new hardware, new library support) not related to an existing component move it to it's own modules (.ino file).
5. PRs that don't compile (fail in CI Tests) or cause coding errors will not be merged. Please fix the issue. Same goes for PRs that are raised against older commit in dev - you might need to rebase and resolve conflicts.
5. PRs that don't compile (fail in CI Tests) or cause coding errors will not be merged. Please fix the issue. Same goes for PRs that are raised against older commit in development - you might need to rebase and resolve conflicts.
6. All pull requests should undergo peer review by at least one contributor other than the creator, excepts for the owner.
7. All pull requests should consider updates to the documentation.
8. Pull requests that address an outstanding issue, particularly an issue deemed to be severe, should be given priority.

View File

@ -75,7 +75,7 @@ Index | Define | Driver | Device | Address(es) | Description
50 | USE_VEML7700 | xsns_71 | VEML7700 | 0x10 | Ambient light intensity sensor
51 | USE_MCP9808 | xsns_72 | MCP9808 | 0x18 - 0x1F | Temperature sensor
52 | USE_HP303B | xsns_73 | HP303B | 0x76 - 0x77 | Pressure and temperature sensor
53 | USE_MLX90640 | xdrv_84 | MLX90640 | 0x33 | IR array temperature sensor
53 | USE_MLX90640 | xdrv_43 | MLX90640 | 0x33 | IR array temperature sensor
54 | USE_VL53L1X | xsns_77 | VL53L1X | 0x29 | Time-of-flight (ToF) distance sensor
55 | USE_EZOPH | xsns_78 | EZOPH | 0x61 - 0x70 | pH sensor
55 | USE_EZOORP | xsns_78 | EZOORP | 0x61 - 0x70 | ORP sensor
@ -89,3 +89,5 @@ Index | Define | Driver | Device | Address(es) | Description
55 | USE_EZODO | xsns_78 | EZODO | 0x61 - 0x70 | Disolved Oxygen sensor
55 | USE_EZORGB | xsns_78 | EZORGB | 0x61 - 0x70 | Color sensor
55 | USE_EZOPMP | xsns_78 | EZOPMP | 0x61 - 0x70 | Peristaltic Pump
56 | USE_SEESAW_SOIL | xsns_81 | SEESOIL | 0x36 - 0x39 | Adafruit seesaw soil moisture sensor
57 | USE_TOF10120 | xsns_84 | TOF10120 | 0x52 | Time-of-flight (ToF) distance sensor

View File

@ -97,24 +97,18 @@ If you're looking for support on **Tasmota** there are some options available:
### Support's Community
* [Tasmota Forum](https://groups.google.com/d/forum/sonoffusers): For usage and discussions.
* [Tasmota Support Chat](https://discord.gg/Ks2Kzd4): For support, troubleshooting and general questions. You have better chances to get fast answers from members of the Tasmota Community.
* [Tasmota Discussions](https://github.com/arendst/Tasmota/discussions): For Tasmota usage questions, Feature Requests and Projects.
* [Tasmota Users Chat](https://discord.gg/Ks2Kzd4): For support, troubleshooting and general questions. You have better chances to get fast answers from members of the Tasmota Community.
* [Search in Issues](https://github.com/arendst/Tasmota/issues): You might find an answer to your question by searching current or closed issues.
### Developers' Community
* [Bug Report](https://github.com/arendst/Tasmota/issues/new?template=Bug_report.md): For reporting Bugs of Tasmota Software.
* [Feature Request](https://github.com/arendst/Tasmota/issues/new?template=Feature_request.md): For requesting features/functions to Tasmota Software.
* [Troubleshooting](https://github.com/arendst/Tasmota/issues/new?template=Custom.md): As a last resort, you can open new *Troubleshooting* issue on GitHub if the solution could not be found using the other channels. Just remember: the more info you provide the more chances you'll have to get an accurate answer.
* [Issue a question](https://github.com/arendst/Tasmota/issues/new/choose): As a last resort, you can open a new *Question* issue on GitHub if the answer could not be found using the other channels. Just remember: the more info you provide the more chances you'll have to get an accurate answer.
* [Software Problem Report](https://github.com/arendst/Tasmota/issues/new?template=Bug_report.md): For reporting problems of Tasmota Software.
## Contribute
You can contribute to Tasmota by
- providing Pull Requests (Features, Proof of Concepts, Language files or Fixes)
- testing new released features and report issues
- donating to acquire hardware for testing and implementing or out of gratitude
- contributing missing [documentation](https://tasmota.github.io/docs) for features and devices
- Providing Pull Requests (Features, Proof of Concepts, Language files or Fixes)
- Testing new released features and report issues
- Donating to acquire hardware for testing and implementing or out of gratitude
- Contributing missing [documentation](https://tasmota.github.io/docs) for features and devices
[![donate](https://img.shields.io/badge/donate-PayPal-blue.svg)](https://paypal.me/tasmota)

View File

@ -4,6 +4,8 @@
## Migration Information
This version removes migration support for versions before v8.1.0 (Doris)
See [migration path](https://tasmota.github.io/docs/Upgrading#migration-path) for instructions how to migrate to a major version. Pay attention to the following version breaks due to dynamic settings updates:
1. Migrate to **Sonoff-Tasmota 3.9.x**
@ -56,71 +58,86 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota
[Complete list](BUILDS.md) of available feature and sensors.
## Changelog v9.2.0 Julie
## Changelog v9.3.0 Kenneth
### Added
- Command ``SetOption115 1`` to enable ESP32 MiBle
- Command ``SetOption116 1`` to disable auto-query of zigbee light devices (avoids network storms with large groups)
- Command ``SetOption117 1`` for light fading to be fixed duration instead of fixed slew rate [#10109](https://github.com/arendst/Tasmota/issues/10109)
- Command ``RfProtocol`` to control RcSwitch receive protocols by BBBits [#10063](https://github.com/arendst/Tasmota/issues/10063)
- Commands ``TuyaRGB``, ``TuyaEnum`` and ``TuyaEnumList`` [#9769](https://github.com/arendst/Tasmota/issues/9769)
- Zigbee command ``ZbInfo`` and prepare support for EEPROM
- Zigbee command ``ZbLeave`` to unpair a device
- Zigbee support for Mi Door and Contact [#9759](https://github.com/arendst/Tasmota/issues/9759)
- Zigbee alarm persistence [#9785](https://github.com/arendst/Tasmota/issues/9785)
- Zigbee persistence of device/sensor data in EEPROM (only ZBBridge)
- Zigbee better support for Tuya Protocol [#10074](https://github.com/arendst/Tasmota/issues/10074)
- Zigbee visual map of network
- TyuaMcu update 2/3 by Federico Leoni [#10004](https://github.com/arendst/Tasmota/issues/10004)
- Support for additional EZO sensors by Christopher Tremblay
- Support for AS608 optical and R503 capacitive fingerprint sensor
- Support for Shelly Dimmer 1 and 2 by James Turton [#9854](https://github.com/arendst/Tasmota/issues/9854)
- Support for common anode sevenseg displays by adding ``#define USE_DISPLAY_SEVENSEG_COMMON_ANODE`` by Ken Sanislo [#9963](https://github.com/arendst/Tasmota/issues/9963)
- Support for multiple WeMo devices by Magic73 [#9208](https://github.com/arendst/Tasmota/issues/9208)
- Support for SPI connected MFRC522 13.56MHz rfid card reader [#9916](https://github.com/arendst/Tasmota/issues/9916)
- Support ESP32 SPIFFS for internal use
- KNX read reply for Power (#9236, #9891)
- Fallback NTP server from x.pool.ntp.org if no ntpservers are configured
- Optional CCloader support for CC25xx Zigbee or CC26xx BLE by Christian Baars [#9970](https://github.com/arendst/Tasmota/issues/9970)
- Letsencrypt R3 in addition to X3 CA [#10086](https://github.com/arendst/Tasmota/issues/10086)
- Command ``CTRange`` to specify the visible CT range the bulb is capable of [#10311](https://github.com/arendst/Tasmota/issues/10311)
- Command ``L1MusicSync <0|Off>|<1|On>|<2|Toggle>, 1..10, 1..100>`` to control Sonoff L1 Music Sync mode sensitivity and speed [#10722](https://github.com/arendst/Tasmota/issues/10722)
- Command ``RuleTimer0`` to access all RuleTimers at once [#10352](https://github.com/arendst/Tasmota/issues/10352)
- Command ``Speed2`` to control a once off fade [#10741](https://github.com/arendst/Tasmota/issues/10741)
- Command ``VirtualCT`` to simulate or fine tune CT bulbs with 3,4,5 channels [#10311](https://github.com/arendst/Tasmota/issues/10311)
- Command ``SetOption40 0..250`` to disable button functionality if activated for over 0.1 second re-introduced
- Command ``SetOption43 1..255`` to control Rotary step (#10407)
- Command ``SetOption118 1`` to move ZbReceived from JSON message and into the subtopic replacing "SENSOR" default [#10353](https://github.com/arendst/Tasmota/issues/10353)
- Command ``SetOption119 1`` to remove the device addr from json payload, can be used with zb_topic_fname where the addr is already known from the topic [#10355](https://github.com/arendst/Tasmota/issues/10355)
- Zigbee command ``SetOption120 1`` or ``ZbEndpointTopic 1`` to add the zigbee endpoint as suffix in topic when using ``SetOption89 1``
- Zigbee command ``ZbScan`` to do an energy scan on each radio channel
- Commands ``ChannelRemap``, ``MultiPWM``, ``AlexaCTRange``, ``PowerOnFade``, ``PWMCT``, ``WhiteBlend`` and ``VirtualCT`` as synonyms for ``SetOption37, 68, 82, 91, 92, 105`` and ``106``
- Commands ``ZbNameKey``, ``ZbDeviceTopic``, ``ZbNoPrefix``, ``ZbEndpointSuffix``, ``ZbNoAutoBind`` and ``ZbNameTopic`` as synonyms for ``SetOption83, 89, 100, 101, 110`` and ``112``
- Commands ``ZbNoAutoBind``, ``ZbReceivedTopic`` and ``ZbOmitDevice`` as synonyms for ``SetOption116, 118`` and ``119``
- Commands ``BuzzerActive`` and ``BuzzerPwm`` as synonyms for ``SetOption67`` and ``111``
- Milliseconds to console output [#10152](https://github.com/arendst/Tasmota/issues/10152)
- Gpio ``Option_a1`` enabling PWM2 high impedance if powered off as used by Wyze bulbs [#10196](https://github.com/arendst/Tasmota/issues/10196)
- Rotary No Pullup GPIO selection ``Rotary A/B_n`` [#10407](https://github.com/arendst/Tasmota/issues/10407)
- BSSID and Signal Strength Indicator to GUI wifi scan result [#10253](https://github.com/arendst/Tasmota/issues/10253)
- Support for P9813 RGB Led MOSFET controller [#10104](https://github.com/arendst/Tasmota/issues/10104)
- Support for GPIO option selection
- Support for FTC532 8-button touch controller by Peter Franck [#10222](https://github.com/arendst/Tasmota/issues/10222)
- Support for BS814A-2 8-button touch buttons by Peter Franck [#10447](https://github.com/arendst/Tasmota/issues/10447)
- Support for up to 4 I2C SEESAW_SOIL Capacitance & Temperature sensors by Peter Franck [#10481](https://github.com/arendst/Tasmota/issues/10481)
- Support for TOF10120 time of flight sensor by Cyril Pawelko [#10190](https://github.com/arendst/Tasmota/issues/10190)
- Support for Afrikaans language translations by Christiaan Heerze
- Support for Frysk language translations by Christiaan Heerze
- Support for IR inverted leds using ``#define IR_SEND_INVERTED true`` [#10301](https://github.com/arendst/Tasmota/issues/10301)
- Support for disabling 38kHz IR modulation using ``#define IR_SEND_USE_MODULATION false`` [#10301](https://github.com/arendst/Tasmota/issues/10301)
- Support for SPI display driver for ST7789 TFT by Gerhard Mutz [#9037](https://github.com/arendst/Tasmota/issues/9037)
- Support for time proportioned (``#define USE_TIMEPROP``) and optional PID (``#define USE_PID``) relay control [#10412](https://github.com/arendst/Tasmota/issues/10412)
- Support for 24/26/32/34 bit RFID Wiegand interface (D0/D1) by Sigurd Leuther [#3647](https://github.com/arendst/Tasmota/issues/3647)
- Support for SM2135 current selection using GPIO ``SM2135 DAT`` index [#10634](https://github.com/arendst/Tasmota/issues/10634)
- Support for Sugar Valley NeoPool Controller by Norbert Richter [#10637](https://github.com/arendst/Tasmota/issues/10637)
- Support for Device Groups Device Map [#10898](https://github.com/arendst/Tasmota/issues/10898)
- Support for Eastron SDM72D-M three phase 100A Modbus energy meter [#10862](https://github.com/arendst/Tasmota/issues/10862)
- Support for ESP32 ``Module 3`` Odroid Go 16MB binary tasmota32-odroidgo.bin [#8630](https://github.com/arendst/Tasmota/issues/8630)
- Support for ESP32 ``Module 5`` Wireless Tag Eth01 [#9496](https://github.com/arendst/Tasmota/issues/9496)
- Support for ESP32 ``Module 7`` M5stack core2 16MB binary tasmota32-core2.bin [#10635](https://github.com/arendst/Tasmota/issues/10635)
- Support rotary encoder on Shelly Dimmer [#10407](https://github.com/arendst/Tasmota/issues/10407#issuecomment-756240920)
- Support character `#` to be replaced by `space`-character in command ``Publish`` topic [#10258](https://github.com/arendst/Tasmota/issues/10258)
- Support trailing silence in buzzer tune [#10694](https://github.com/arendst/Tasmota/issues/10694)
- Rule trigger string comparisons for EndsWith ``$>``, StartsWith ``$<`` and Contains ``$|`` [#10538](https://github.com/arendst/Tasmota/issues/10538)
- SPI display driver SSD1331 Color oled by Jeroen Vermeulen [#10376](https://github.com/arendst/Tasmota/issues/10376)
- Compile time option ``USE_MQTT_TLS_DROP_OLD_FINGERPRINT`` to drop old (less secure) TLS fingerprint
### Breaking Changed
- KNX DPT9 (16-bit float) to DPT14 (32-bit float) by Adrian Scillato [#9811](https://github.com/arendst/Tasmota/issues/9811) [#9888](https://github.com/arendst/Tasmota/issues/9888)
- ESP32 switch from default SPIFFS to default LittleFS file system loosing current (zigbee) files
- Replaced MFRC522 13.56MHz rfid card reader GPIO selection from ``SPI CS`` by ``RC522 CS``
- Replaced NRF24L01 GPIO selection from ``SPI CS`` by ``NRF24 CS`` and ``SPI DC`` by ``NRF24 DC``
- Replaced ILI9341 GPIO selection from ``SPI CS`` by ``ILI9341 CS`` and ``SPI DC`` by ``ILI9341 DC``
- Replaced ST7789 GPIO selection from ``SPI CS`` by ``ST7789 CS`` and ``SPI DC`` by ``ST7789 DC``
- Replaced ILI9488 GPIO selection from ``SPI CS`` by ``ILI9488_CS``
- Replaced EPaper29 GPIO selection from ``SPI CS`` by ``EPaper29 CS``
- Replaced EPaper42 GPIO selection from ``SPI CS`` by ``EPaper42 CS``
- Replaced SSD1351 GPIO selection from ``SPI CS`` by ``SSD1351 CS``
- Replaced RA8876 GPIO selection from ``SPI CS`` by ``RA8876 CS``
### Changed
- Core library from v2.7.4.5 to v2.7.4.9
- IRremoteESP8266 library from v2.7.12 to v2.7.13
- Shelly Dimmer 1 and 2 stm32 firmware from v51.4 to v51.5
- mDNS has been disabled from all pre-compiled binaries to allow new features
- Sonoff L1 color up scaling and color margin detection [#9545](https://github.com/arendst/Tasmota/issues/9545)
- MQTT Wifi connection timeout from 5000 to 200 mSec [#9886](https://github.com/arendst/Tasmota/issues/9886)
- Force bigger Thunk Stack if 4K RSA even without EC ciphers [#10075](https://github.com/arendst/Tasmota/issues/10075)
- Removed migration support for versions before v8.1.0 (Doris)
- Command ``Sleep 0`` removes any sleep from wifi modem except when ESP32 BLE is active
- Logging from heap to stack freeing 700 bytes RAM
- Disabled ``USE_LIGHT`` light support for ZBBridge saving 17.6kB [#10374](https://github.com/arendst/Tasmota/issues/10374)
- Force initial default state ``SetOption57 1`` to scan wifi network every 44 minutes for strongest signal [#10395](https://github.com/arendst/Tasmota/issues/10395)
- PubSubClient MQTT_SOCKET_TIMEOUT from 15 to 4 seconds
- Domoticz fixed 2 decimals resolution by user selectable ``TempRes``, ``HumRes`` and ``PressRes`` resolutions
- Increase number of button GPIOs from 4 to 8
- ESP32 Increase number of switch GPIOs from 8 to 28
- ESP32 increase number of relay GPIOs from 8 to 28
- ESP32 Increase number of interlock groups from 4 to 14
### Fixed
- Command ``gpio`` using non-indexed functions regression from v9.1.0 [#9962](https://github.com/arendst/Tasmota/issues/9962)
- NTP fallback server functionality [#9739](https://github.com/arendst/Tasmota/issues/9739)
- Telegram group chatid not supported [#9831](https://github.com/arendst/Tasmota/issues/9831)
- KNX buttons, switches and sensors detection regression from v9.1.0 [#9811](https://github.com/arendst/Tasmota/issues/9811)
- KNX ESP32 UDP mulicastpackage [#9811](https://github.com/arendst/Tasmota/issues/9811)
- GUI MqttUser and MqttPassword updates when TLS is compiled in [#9825](https://github.com/arendst/Tasmota/issues/9825)
- ESP32 TasmotaClient firmware upgrade [#9218](https://github.com/arendst/Tasmota/issues/9218)
- Reset to defaults after 6 hours of DeepSleep [#9993](https://github.com/arendst/Tasmota/issues/9993)
- Backlog timing wraparound [#9995](https://github.com/arendst/Tasmota/issues/9995)
- First LED in addressable string does not fade when using scheme [#10088](https://github.com/arendst/Tasmota/issues/10088)
- Improved Opentherm error handling [#10055](https://github.com/arendst/Tasmota/issues/10055)
- Shutter motordelay stop issue [#10033](https://github.com/arendst/Tasmota/issues/10033)
- Shutter fix overflow on runtime over 100 seconds [#9800](https://github.com/arendst/Tasmota/issues/9800)
- ESP32 CC2530 heap corruption [#10121](https://github.com/arendst/Tasmota/issues/10121)
- ESP32 Analog input div10 rule trigger [#10149](https://github.com/arendst/Tasmota/issues/10149)
### Fixed Backported
- Redesign syslog and mqttlog using log buffer [#10164](https://github.com/arendst/Tasmota/issues/10164)
- Shutter stop issue [#10170](https://github.com/arendst/Tasmota/issues/10170)
- Scripter script_sub_command [#10181](https://github.com/arendst/Tasmota/issues/10181)
- Scripter JSON variable above 32 chars [#10193](https://github.com/arendst/Tasmota/issues/10193)
- Shelly Dimmer power on state [#10182](https://github.com/arendst/Tasmota/issues/10182)
- Wemo emulation for single devices [#10194](https://github.com/arendst/Tasmota/issues/10194)
- Shelly Dimmer power on state [#10154](https://github.com/arendst/Tasmota/issues/10154) [#10182](https://github.com/arendst/Tasmota/issues/10182)
- Wemo emulation for single devices [#10165](https://github.com/arendst/Tasmota/issues/10165) [#10194](https://github.com/arendst/Tasmota/issues/10194)
- ESP32 LoadStoreError when using ``#define USER_TEMPLATE`` [#9506](https://github.com/arendst/Tasmota/issues/9506)
- Compile error when ``#ifdef USE_IR_RECEIVE`` is disabled regression from 9.1.0.2
### Removed
- Version compatibility check
- PN532 define USE_PN532_CAUSE_EVENTS replaced by generic rule trigger `on pn532#uid=`
- Prometheus memory leak [#10221](https://github.com/arendst/Tasmota/issues/10221)

31
boards/esp32s2.json Normal file
View File

@ -0,0 +1,31 @@
{
"build": {
"arduino":{
"ldscript": "esp32s2_out.ld"
},
"core": "esp32",
"mcu": "esp32s2",
"extra_flags": "-Desp32S2_dev_module",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"mcu": "esp32s2",
"variant": "esp32s2"
},
"connectivity": [
"wifi"
],
"frameworks": [
"arduino"
],
"name": "ESP32S2 Dev Module",
"upload": {
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
},
"url": "https://espressif.com",
"vendor": "espressif"
}

View File

@ -3,4 +3,4 @@ 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,
spiffs, data, spiffs, 0x310000,0x0F0000,
1 # Name Type SubType Offset Size Flags
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x180000
5 app1 app ota_1 0x190000 0x180000
6 ffat spiffs data fat spiffs 0x310000 0x0F0000

View File

@ -3,4 +3,4 @@ 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,
spiffs, data, spiffs, 0x3F0000,0xC10000,
1 # Name Type SubType Offset Size Flags
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x1F0000
5 app1 app ota_1 0x200000 0x1F0000
6 ffat spiffs data fat spiffs 0x3F0000 0xC10000

View File

@ -1,8 +0,0 @@
# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
nvs,data,nvs,0x9000,20K,
otadata,data,ota,0xe000,8K,
app0,app,ota_0,0x10000,1984K,
app1,app,ota_1,0x200000,1984K,
spiffs,data,spiffs,0x3f0000,60K,
eeprom,data,nvs,0x3ff000,4K,
1 # ESP-IDF Partition Table
2 # Name, Type, SubType, Offset, Size, Flags
3 nvs,data,nvs,0x9000,20K,
4 otadata,data,ota,0xe000,8K,
5 app0,app,ota_0,0x10000,1984K,
6 app1,app,ota_1,0x200000,1984K,
7 spiffs,data,spiffs,0x3f0000,60K,
8 eeprom,data,nvs,0x3ff000,4K,

View File

@ -0,0 +1,7 @@
name=Ext-printf
version=1.0
author=Stephan Hadinger
maintainer=Stephan <stephan.hadinger@gmail.com>
sentence=Extension of snprintf() and vsnprintf()
paragraph=This library provides extended types support for snprintf (float, uint64_t)
architectures=esp8266, esp32

View File

@ -1,7 +1,7 @@
/*
support_buffer.ino - Static binary buffer for Zigbee on Tasmota
Copyright (C) 2020 Theo Arends and Stephan Hadinger
Copyright (C) 2021 Theo Arends and Stephan Hadinger
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -52,6 +52,20 @@ public:
delete[] _buf;
}
// increase the internal buffer if needed
// do nothing if the buffer is big enough
void reserve(const size_t size) {
if (size > _buf->size) {
// we need to increase the buffer size
SBuffer_impl * new_buf = (SBuffer_impl*) new char[size+4]; // add 4 bytes for size and len
new_buf->size = size;
new_buf->len = _buf->len;
memmove(&new_buf->buf, &_buf->buf, _buf->len); // copy buffer
delete[] _buf;
_buf = new_buf;
}
}
inline void setLen(const size_t len) {
uint16_t old_len = _buf->len;
_buf->len = (len <= _buf->size) ? len : _buf->size;
@ -118,6 +132,13 @@ public:
return _buf->len;
}
void replace(const SBuffer &buf2) {
uint32_t len = buf2.len();
reserve(len);
setLen(0); // clear buffer
addBuffer(buf2);
}
size_t addBuffer(const SBuffer &buf2) {
if (len() + buf2.len() <= size()) {
for (uint32_t i = 0; i < buf2.len(); i++) {
@ -237,6 +258,21 @@ public:
return buf2;
}
// nullptr accepted
static bool equalsSBuffer(const class SBuffer * buf1, const class SBuffer * buf2) {
if (buf1 == buf2) { return true; }
if (!buf1 && (buf2->len() == 0)) { return true; }
if (!buf2 && (buf1->len() == 0)) { return true; }
if (!buf1 || !buf2) { return false; } // at least one buf is not empty
// we know that both buf1 and buf2 are non-null
if (buf1->len() != buf2->len()) { return false; }
size_t len = buf1->len();
for (uint32_t i=0; i<len; i++) {
if (buf1->get8(i) != buf2->get8(i)) { return false; }
}
return true;
}
protected:
static uint8_t asc2byte(char chr) {
@ -269,18 +305,3 @@ public:
_buf = nullptr;
}
} PreAllocatedSBuffer;
// nullptr accepted
bool equalsSBuffer(const class SBuffer * buf1, const class SBuffer * buf2) {
if (buf1 == buf2) { return true; }
if (!buf1 && (buf2->len() == 0)) { return true; }
if (!buf2 && (buf1->len() == 0)) { return true; }
if (!buf1 || !buf2) { return false; } // at least one buf is not empty
// we know that both buf1 and buf2 are non-null
if (buf1->len() != buf2->len()) { return false; }
size_t len = buf1->len();
for (uint32_t i=0; i<len; i++) {
if (buf1->get8(i) != buf2->get8(i)) { return false; }
}
return true;
}

View File

@ -0,0 +1,399 @@
/*
ext_printf.ino - Extended printf for Arduino objects
Copyright (C) 2021 Stephan Hadinger
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ext_printf.h"
#include <Arduino.h>
#include <IPAddress.h>
#include <SBuffer.hpp>
/*********************************************************************************************\
* va_list extended support
*
* va_list allows to get the next argument but not to get the address of this argument in the stack.
*
* We add `va_cur_ptr(va, TYPE)` to get a pointer to the current argument.
* This will allow to modify it in place and call back printf with altered arguments
\*********************************************************************************************/
#if defined(__XTENSA__) // this works only for xtensa, other platforms needs va_list to be adapted
// This code is heavily inspired by the gcc implementation of va_list
// https://github.com/gcc-mirror/gcc/blob/master/gcc/config/xtensa/xtensa.c
// Here is the va_list structure:
// struct va_list {
// void * __va_stk; // offset 0 - pointer to arguments on the stack
// void * __va_reg; // offset 4 - pointer to arguments from registers
// uint32_t __va_ndx; // offset 8 - index in bytes of the argument (overshoot by sizeof(T))
// }
//
// When `va_start()` is called, the first 6 arguments are passed through registers r2-r7 and
// are saved on the stack like local variables
// The algorightm used by `va_arg()` is the following:
// /* Implement `va_arg'.  */
// /* First align __va_ndx if necessary for this arg:
//     orig_ndx = (AP).__va_ndx;
//     if (__alignof__ (TYPE) > 4 )
//       orig_ndx = ((orig_ndx + __alignof__ (TYPE) - 1)
// & -__alignof__ (TYPE)); */
// /* Increment __va_ndx to point past the argument:
//     (AP).__va_ndx = orig_ndx + __va_size (TYPE); */
// /* Check if the argument is in registers:
//     if ((AP).__va_ndx <= __MAX_ARGS_IN_REGISTERS * 4
//         && !must_pass_in_stack (type))
//       __array = (AP).__va_reg; */
// /* ...otherwise, the argument is on the stack (never split between
//     registers and the stack -- change __va_ndx if necessary):
//     else
//       {
// if (orig_ndx <= __MAX_ARGS_IN_REGISTERS * 4)
//     (AP).__va_ndx = 32 + __va_size (TYPE);
// __array = (AP).__va_stk;
//       } */
// /* Given the base array pointer (__array) and index to the subsequent
//     argument (__va_ndx), find the address:
//     __array + (AP).__va_ndx - (BYTES_BIG_ENDIAN && sizeof (TYPE) < 4
// ? sizeof (TYPE)
// : __va_size (TYPE))
//     The results are endian-dependent because values smaller than one word
//     are aligned differently.  */
// So we can simply get the argument address
#define MAX_ARGS_IN_REGISTERS 6 // ESP8266 passes 6 arguments by register, then on stack
// #define va_cur_ptr(va,T) ( (T*) __va_cur_ptr(va,sizeof(T)) ) // we only support 4 bytes aligned arguments, so we don't need this one
// void * __va_cur_ptr(va_list &va, size_t size) {
// size = (size + 3) & 0xFFFFFFFC; // round to upper 4 bytes boundary
// uintptr_t * va_stk = (uintptr_t*) &va;
// uintptr_t * va_reg = 1 + (uintptr_t*) &va;
// uintptr_t * va_ndx = 2 + (uintptr_t*) &va;
// uintptr_t arr;
// if (*va_ndx <= MAX_ARGS_IN_REGISTERS * 4) {
// arr = *va_reg;
// } else {
// arr = *va_stk;
// }
// return (void*) (arr + *va_ndx - size);
// }
// reduced version when arguments are always 4 bytes
#define va_cur_ptr4(va,T) ( (T*) __va_cur_ptr4(va) )
void * __va_cur_ptr4(va_list &va) {
uintptr_t * va_stk = (uintptr_t*) &va;
uintptr_t * va_reg = 1 + (uintptr_t*) &va;
uintptr_t * va_ndx = 2 + (uintptr_t*) &va;
uintptr_t arr;
if (*va_ndx <= MAX_ARGS_IN_REGISTERS * 4) {
arr = *va_reg;
} else {
arr = *va_stk;
}
return (void*) (arr + *va_ndx - 4);
}
// Example of logs with 8 arguments (+1 static argument)
// We see that the first 5 are from low in the stack (local variables)
// while the last 8 are upper in the stack pushed by caller
//
// Note 64 bits arguments cannot be split between registers and stack
//
// >>> Reading a_ptr=0x3FFFFD44 *a_ptr=1
// >>> Reading a_ptr=0x3FFFFD48 *a_ptr=2
// >>> Reading a_ptr=0x3FFFFD4C *a_ptr=3
// >>> Reading a_ptr=0x3FFFFD50 *a_ptr=4
// >>> Reading a_ptr=0x3FFFFD54 *a_ptr=5
// >>> Reading a_ptr=0x3FFFFD70 *a_ptr=6
// >>> Reading a_ptr=0x3FFFFD74 *a_ptr=7
// >>> Reading a_ptr=0x3FFFFD78 *a_ptr=8
#elif defined(__RISC_V__)
// #define __va_argsiz_tas(t) (((sizeof(t) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
#define va_cur_ptr4(va,T) ( (T*) __va_cur_ptr4(va) )
void * __va_cur_ptr4(va_list &va) {
uintptr_t * va_ptr = (uintptr_t*) &va;
void * cur_ptr = (void*) *va_ptr;
*va_ptr += 4;
return cur_ptr;
}
#else // __XTENSA__, __RISCV__
#error "ext_printf is not suppoerted on this platform"
#endif // __XTENSA__, __RISCV__
/*********************************************************************************************\
* Genral function to convert u64 to hex
\*********************************************************************************************/
// Simple function to print a 64 bits unsigned int
/*
char * U64toHex(uint64_t value, char *str) {
// str must be at least 17 bytes long
str[16] = 0; // end of string
for (uint32_t i=0; i<16; i++) { // 16 digits
uint32_t n = value & 0x0F;
str[15 - i] = (n < 10) ? (char)n+'0' : (char)n-10+'A';
value = value >> 4;
}
return str;
}
*/
char * U64toHex(uint64_t value, char *str, uint32_t zeroleads) {
// str must be at least 17 bytes long
str[16] = 0; // end of string
for (uint32_t i=0; i<16; i++) { // 16 digits
uint32_t n = value & 0x0F;
str[15 - i] = (n < 10) ? (char)n+'0' : (char)n-10+'A';
value = value >> 4;
}
if (zeroleads < 16) {
uint32_t max_zeroes = 16 - zeroleads;
while (max_zeroes) {
if (str[0] == '0') {
memmove(str, str +1, strlen(str));
} else {
break;
}
max_zeroes--;
}
}
return str;
}
// see https://stackoverflow.com/questions/6357031/how-do-you-convert-a-byte-array-to-a-hexadecimal-string-in-c
// char* ToHex_P(unsigned char * in, size_t insz, char * out, size_t outsz, char inbetween = '\0'); in tasmota_globals.h
char* ToHex_P(const unsigned char * in, size_t insz, char * out, size_t outsz, char inbetween = '\0') {
// ToHex_P(in, insz, out, outz) -> "12345667"
// ToHex_P(in, insz, out, outz, ' ') -> "12 34 56 67"
// ToHex_P(in, insz, out, outz, ':') -> "12:34:56:67"
static const char * hex PROGMEM = "0123456789ABCDEF";
int between = (inbetween) ? 3 : 2;
const unsigned char * pin = in;
char * pout = out;
for (; pin < in+insz; pout += between, pin++) {
pout[0] = pgm_read_byte(&hex[(pgm_read_byte(pin)>>4) & 0xF]);
pout[1] = pgm_read_byte(&hex[ pgm_read_byte(pin) & 0xF]);
if (inbetween) { pout[2] = inbetween; }
if (pout + 3 - out > outsz) { break; } // Better to truncate output string than overflow buffer
}
pout[(inbetween && insz) ? -1 : 0] = 0; // Discard last inbetween if any input
return out;
}
/*********************************************************************************************\
* snprintf extended
*
\*********************************************************************************************/
// get a fresh malloc allocated string based on the current pointer (can be in PROGMEM)
// It is the caller's responsibility to free the memory
char * copyStr(const char * str) {
if (str == nullptr) { return nullptr; }
char * cpy = (char*) malloc(strlen_P(str) + 1);
strcpy_P(cpy, str);
return cpy;
}
int32_t ext_vsnprintf_P(char * buf, size_t buf_len, const char * fmt_P, va_list va) {
va_list va_cpy;
va_copy(va_cpy, va);
// iterate on fmt to extract arguments and patch them in place
char * fmt_cpy = copyStr(fmt_P);
if (fmt_cpy == nullptr) { return 0; }
char * fmt = fmt_cpy;
const uint32_t ALLOC_SIZE = 12;
static char * allocs[ALLOC_SIZE] = {}; // initialized to zeroes
uint32_t alloc_idx = 0;
static char hex[20]; // buffer used for 64 bits, favor RAM instead of stack to remove pressure
for (; *fmt != 0; ++fmt) {
int32_t decimals = -2; // default to 2 decimals and remove trailing zeros
int32_t * decimals_ptr = nullptr;
if (alloc_idx >= ALLOC_SIZE) { break; } // buffer is full, don't continue parsing
if (*fmt == '%') {
fmt++;
char * fmt_start = fmt;
if (*fmt == '\0') { break; } // end of string
if (*fmt == '%') { continue; } // actual '%' char
if (*fmt == '*') {
decimals = va_arg(va, int32_t); // skip width argument as int
decimals_ptr = va_cur_ptr4(va, int32_t); // pointer to value on stack
const char ** cur_val_ptr = va_cur_ptr4(va, const char*); // pointer to value on stack
fmt++;
// Serial.printf("> decimals=%d, decimals_ptr=0x%08X\n", decimals, decimals_ptr);
}
if (*fmt < 'A') {
decimals = strtol(fmt, nullptr, 10);
}
while (*fmt < 'A') { // brutal way to munch anything that is not a letter or '-' (or anything else)
// while ((*fmt >= '0' && *fmt <= '9') || (*fmt == '.') || (*fmt == '*') || (*fmt == '-' || (*fmt == ' ' || (*fmt == '+') || (*fmt == '#')))) {
fmt++;
}
if (*fmt == '_') { // extension
if (decimals_ptr) {
// Serial.printf(">2 decimals=%d, decimals_ptr=0x%08X\n", decimals, decimals_ptr);
*decimals_ptr = 0; // if '*' was used, make sure we replace the value with zero for snprintf()
*(fmt_start++) = '-'; // in this case replace with `%-*s`
*(fmt_start++) = '*';
}
for (; fmt_start <= fmt; fmt_start++) {
*fmt_start = '0';
}
// *fmt = '0';
fmt++;
uint32_t cur_val = va_arg(va, uint32_t); // current value
const char ** cur_val_ptr = va_cur_ptr4(va, const char*); // pointer to value on stack
char * new_val_str = (char*) "";
switch (*fmt) {
case 'H': // Hex, decimals indicates the length, default 2
{
if (decimals < 0) { decimals = 0; }
if (decimals > 0) {
char * hex_char = (char*) malloc(decimals*2 + 2);
ToHex_P((const uint8_t *)cur_val, decimals, hex_char, decimals*2 + 2);
new_val_str = hex_char;
allocs[alloc_idx++] = new_val_str;
// Serial.printf("> hex=%s\n", hex_char);
}
}
break;
case 'B': // Pointer to SBuffer
{
const SBuffer & buf = *(const SBuffer*)cur_val;
size_t buf_len = (&buf != nullptr) ? buf.len() : 0;
if (buf_len) {
char * hex_char = (char*) malloc(buf_len*2 + 2);
ToHex_P(buf.getBuffer(), buf_len, hex_char, buf_len*2 + 2);
new_val_str = hex_char;
allocs[alloc_idx++] = new_val_str;
}
}
break;
// case 'D':
// decimals = *(int32_t*)cur_val_ptr;
// break;
// `%_I` ouputs an IPv4 32 bits address passed as u32 into a decimal dotted format
case 'I': // Input is `uint32_t` 32 bits IP address, output is decimal dotted address
{
char * ip_str = (char*) malloc(16);
snprintf_P(ip_str, 16, PSTR("%u.%u.%u.%u"), cur_val & 0xFF, (cur_val >> 8) & 0xFF, (cur_val >> 16) & 0xFF, (cur_val >> 24) & 0xFF);
new_val_str = ip_str;
allocs[alloc_idx++] = new_val_str;
}
break;
// `%_f` or `%*_f` outputs a float with optionan number of decimals passed as first argument if `*` is present
// positive number of decimals means an exact number of decimals, can be `0` terminate
// negative number of decimals will suppress
// Ex:
// char c[128];
// float f = 3.141f;
// ext_vsnprintf_P(c; szeof(c), "%_f %*_f %*_f", &f, 4, 1f, -4, %f);
// --> c will be "3.14 3.1410 3.141"
// Note: float MUST be passed by address, because C alsays promoted float to double when in vararg
case 'f': // input is `float`, printed to float with 2 decimals
{
bool truncate = false;
if (decimals < 0) {
decimals = -decimals;
truncate = true;
}
float number = *(float*)cur_val;
if (isnan(number) || isinf(number)) {
new_val_str = (char*) "null";
} else {
dtostrf(*(float*)cur_val, (decimals + 2), decimals, hex);
if (truncate) {
uint32_t last = strlen(hex) - 1;
// remove trailing zeros
while (hex[last] == '0') {
hex[last--] = 0; // remove last char
}
// remove trailing dot
if (hex[last] == '.') {
hex[last] = 0;
}
}
new_val_str = copyStr(hex);
allocs[alloc_idx++] = new_val_str;
}
}
break;
// '%_X' outputs a 64 bits unsigned int to uppercase HEX with 16 digits
case 'X': // input is `uint64_t*`, printed as 16 hex digits (no prefix 0x)
{
if ((decimals < 0) || (decimals > 16)) { decimals = 16; }
U64toHex(*(uint64_t*)cur_val, hex, decimals);
new_val_str = copyStr(hex);
allocs[alloc_idx++] = new_val_str;
}
break;
// Trying to do String allocation alternatives, but not as interesting as I thought in the beginning
// case 's':
// {
// new_val_str = copyStr(((String*)cur_val)->c_str());
// allocs[alloc_idx++] = new_val_str;
// }
// break;
// case 'S':
// {
// funcString_t * func_str = (funcString_t*) cur_val;
// new_val_str = copyStr((*func_str)().c_str());
// allocs[alloc_idx++] = new_val_str;
// }
// break;
}
*cur_val_ptr = new_val_str;
*fmt = 's'; // replace `%_X` with `%0s` to display a string instead
} else {
va_arg(va, int32_t); // munch one 32 bits argument and leave it unchanged
// we take the hypothesis here that passing 64 bits arguments is always unsupported in ESP8266
}
}
}
// Serial.printf("> format_final=%s\n", fmt_cpy); Serial.flush();
int32_t ret = vsnprintf_P(buf, buf_len, fmt_cpy, va_cpy);
va_end(va_cpy);
// disallocated all temporary strings
for (uint32_t i = 0; i < alloc_idx; i++) {
free(allocs[i]); // it is ok to call free() on nullptr so we don't test for nullptr first
allocs[i] = nullptr;
}
free(fmt_cpy); // free the local copy of the format string
return ret;
}
int32_t ext_snprintf_P(char * buf, size_t buf_len, const char * fmt, ...) {
va_list va;
va_start(va, fmt);
int32_t ret = ext_vsnprintf_P(buf, buf_len, fmt, va);
va_end(va);
return ret;
}

View File

@ -0,0 +1,34 @@
/*
ext_printf.ino - Extended printf for Arduino objects
Copyright (C) 2021 Stephan Hadinger
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef EXT_PRINTF_H
#define EXT_PRINTF_H
#include <cstddef>
#include <cstdint>
#include <cstdarg>
int32_t ext_vsnprintf_P(char * buf, size_t buf_len, const char * fmt_P, va_list va);
int32_t ext_snprintf_P(char * buf, size_t buf_len, const char * fmt, ...);
char* ToHex_P(const unsigned char * in, size_t insz, char * out, size_t outsz, char inbetween);
// void test_ext_snprintf_P(void);
#endif // EXT_PRINTF_H

View File

@ -0,0 +1,110 @@
/*
ext_printf.ino - Extended printf for Arduino objects
Copyright (C) 2021 Stephan Hadinger
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ext_printf.h"
#include <Arduino.h>
// DEBUG only
// String test_string(void) {
// String s("This is the string");
// return s;
// }
// String f_str(void) { return String("foobar"); }
// String k_str("foobar");
// void f1(String s) {
// Serial.printf("> %s\n", s.c_str());
// }
// void f2(void) {
// f1(f_str());
// }
// void test_snprintf1(void) {
// char c[100];
// snprintf_P(c, sizeof(c), PSTR("s1=%s, s2=%s"), k_str.c_str(), f_str().c_str());
// }
// void test_snprintf2(void) {
// char c[100];
// ext_snprintf_P(c, sizeof(c), PSTR("s1=%_s, s2=%_S"), &k_str, &f_str, &ResponseAppendTHD);
// }
void test_ext_snprintf_P(void) {
// test_snprintf1();
// test_snprintf2();
// if (0) {
// // testVarArg2("", 1, 2, 3, 4, 5, 6, 7, 8);
char c[128];
float fpi=-3333.1415926535f;
float f3 = 3333;
float f31 = 3333.1;
ext_snprintf_P(c, sizeof(c), "Int1 = %d, ip=%_I", 1, 0x10203040);
Serial.printf("--> out=%s\n", c);
ext_snprintf_P(c, sizeof(c), "Float default=%_f %_f", &f3, &fpi);
Serial.printf("--> out=%s\n", c);
ext_snprintf_P(c, sizeof(c), "Float default=%1_f, int(3)=%4_f, int(3)=%-4_f, int(3)=%-4_f, 6dec=%-8_f", &fpi, &f3, &f3, &f31, &fpi);
Serial.printf("--> out=%s\n", c);
ext_snprintf_P(c, sizeof(c), "Float default=%*_f, int(3)=%*_f, int(3)=%*_f, int(3)=%*_f, 6dec=%*_f", 1, &fpi, 4, &f3, -4, &f3, -4, &f31, -8, &fpi);
Serial.printf("--> out=%s\n", c);
uint64_t u641 = 0x1122334455667788LL;
uint64_t u642 = 0x0123456789ABCDEFLL;
uint64_t u643 = 0xFEDCBA9876543210LL;
ext_snprintf_P(c, sizeof(c), "Int64 0x%_X 0x%_X 0x%_X", &u641, &u642, &u643);
Serial.printf("--> out=%s\n", c);
// ext_snprintf_P(c, sizeof(c), "Float default=%*_f, int(3)=%*_f, int(3)=%*_f, int(3)=%*_f, 6dec=%*_f", &fpi, &f3, &f3, &f31, &fpi);
// String string("Foobar");
// ext_snprintf_P(c, sizeof(c), "String 0x%08X %_s", &string, &string);
// Serial.printf("--> out=%s\n", c);
// ext_snprintf_P(c, sizeof(c), "StringFunc 0x%08X %_S", &test_string, &test_string);
// Serial.printf("--> out=%s\n", c);
// uint64_t u64 = 0x123456789ABCDEFLL;
// testVarArg2("", u64, 2, 3, 4, 5, 6, 7, 8);
// // Serial.printf("+++ ld=%ld, lld=%lld\n", 1,2,3,4);
// // testVarArg("", 1, 2, 3, 4, 5, 6, 7, 8);
// }
// tprintf("%s", 12, "14");
}
// void tprintf(const char* format) // base function
// {
// Serial.printf("%s\n", format);
// }
// template<typename T, typename... Targs>
// void tprintf(const char* format, T value, Targs... Fargs) // recursive variadic function
// {
// for ( ; *format != '\0'; format++ ) {
// if ( *format == '%' ) {
// Serial.printf("%d", (uint32_t) value);
// tprintf(format+1, Fargs...); // recursive call
// return;
// }
// Serial.printf("%s", format);
// }
// }

View File

@ -10,8 +10,5 @@
"exclude": "tests",
"examples": "examples/*/*.ino",
"frameworks": "arduino",
"platforms": [
"atmelavr",
"espressif"
]
"platforms": ["espressif8266", "espressif32"]
}

View File

@ -25,19 +25,20 @@
#ifndef MQTT_MAX_PACKET_SIZE
//#define MQTT_MAX_PACKET_SIZE 128
//#define MQTT_MAX_PACKET_SIZE 1000 // Tasmota v5.11.1c
#define MQTT_MAX_PACKET_SIZE 1200 // Tasmota v8.1.0.8
#define MQTT_MAX_PACKET_SIZE 1200 // Tasmota v8.1.0.8
#endif
// MQTT_KEEPALIVE : keepAlive interval in Seconds
// Keepalive timeout for default MQTT Broker is 10s
#ifndef MQTT_KEEPALIVE
//#define MQTT_KEEPALIVE 10
#define MQTT_KEEPALIVE 30 // Tasmota v6.5.0.14 enabling AWS-iot
#define MQTT_KEEPALIVE 30 // Tasmota v6.5.0.14 enabling AWS-iot
#endif
// MQTT_SOCKET_TIMEOUT: socket timeout interval in Seconds
#ifndef MQTT_SOCKET_TIMEOUT
#define MQTT_SOCKET_TIMEOUT 15
//#define MQTT_SOCKET_TIMEOUT 15
#define MQTT_SOCKET_TIMEOUT 4 // Tasmota 20210120
#endif
// MQTT_MAX_TRANSFER_SIZE : limit how much data is passed to the network client

View File

@ -2,6 +2,7 @@
Implementation of software serial with hardware serial fallback library for the ESP8266
Implementation of dual UART hardware serial for the ESP32
Implementation of single UART hardware serial for the ESP32-S2
Allows for several instances to be active at the same time.

View File

@ -1,6 +1,6 @@
{
"name": "TasmotaSerial",
"version": "3.1.0",
"version": "3.2.0",
"keywords": [
"serial", "io", "TasmotaSerial"
],

View File

@ -1,5 +1,5 @@
name=TasmotaSerial
version=3.1.0
version=3.2.0
author=Theo Arends
maintainer=Theo Arends <theo@arends.com>
sentence=Implementation of software serial with hardware serial fallback for ESP8266 and ESP32.

View File

@ -1,7 +1,7 @@
/*
TasmotaSerial.cpp - Implementation of software serial with hardware serial fallback for Tasmota
Copyright (C) 2020 Theo Arends
Copyright (C) 2021 Theo Arends
This library is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -38,7 +38,11 @@ TasmotaSerial *tms_obj_list[16];
#endif // ESP8266
#ifdef ESP32
#if CONFIG_IDF_TARGET_ESP32 // ESP32/PICO-D4
static int tasmota_serial_index = 2; // Allow UART2 and UART1 only
#elif CONFIG_IDF_TARGET_ESP32S2 // ESP32-S2
static int tasmota_serial_index = 1; // Allow UART1 only
#endif
#endif // ESP32
@ -87,7 +91,7 @@ TasmotaSerial::TasmotaSerial(int receive_pin, int transmit_pin, int hardware_fal
m_valid = true;
}
TasmotaSerial::~TasmotaSerial() {
TasmotaSerial::~TasmotaSerial(void) {
#ifdef ESP8266
if (!m_hardserial) {
if (m_rx_pin > -1) {
@ -118,20 +122,23 @@ bool TasmotaSerial::begin(long speed, int stop_bits) {
if (m_hardswap) {
Serial.swap();
}
if (serial_buffer_size > 256) {
Serial.setRxBufferSize(serial_buffer_size);
}
#endif // ESP8266
#ifdef ESP32
if (tasmota_serial_index > 0) { // We only support UART1 and UART2 and keep UART0 for debugging
m_uart = tasmota_serial_index;
tasmota_serial_index--;
TSerial = new HardwareSerial(m_uart);
if (serial_buffer_size > 256) {
TSerial->setRxBufferSize(serial_buffer_size);
}
if (2 == m_stop_bits) {
TSerial->begin(speed, SERIAL_8N2, m_rx_pin, m_tx_pin);
} else {
TSerial->begin(speed, SERIAL_8N1, m_rx_pin, m_tx_pin);
}
if (serial_buffer_size > 256) {
TSerial->setRxBufferSize(serial_buffer_size);
}
} else {
m_valid = false;
}
@ -147,11 +154,11 @@ bool TasmotaSerial::begin(long speed, int stop_bits) {
return m_valid;
}
bool TasmotaSerial::begin() {
bool TasmotaSerial::begin(void) {
return begin(TM_SERIAL_BAUDRATE);
}
bool TasmotaSerial::hardwareSerial() {
bool TasmotaSerial::hardwareSerial(void) {
#ifdef ESP8266
return m_hardserial;
#endif // ESP8266
@ -160,7 +167,7 @@ bool TasmotaSerial::hardwareSerial() {
#endif // ESP32
}
void TasmotaSerial::flush() {
void TasmotaSerial::flush(void) {
if (m_hardserial) {
#ifdef ESP8266
Serial.flush();
@ -173,7 +180,7 @@ void TasmotaSerial::flush() {
}
}
int TasmotaSerial::peek() {
int TasmotaSerial::peek(void) {
if (m_hardserial) {
#ifdef ESP8266
return Serial.peek();
@ -187,7 +194,7 @@ int TasmotaSerial::peek() {
}
}
int TasmotaSerial::read() {
int TasmotaSerial::read(void) {
if (m_hardserial) {
#ifdef ESP8266
return Serial.read();
@ -203,7 +210,26 @@ int TasmotaSerial::read() {
}
}
int TasmotaSerial::available() {
size_t TasmotaSerial::read(char* buffer, size_t size) {
if (m_hardserial) {
#ifdef ESP8266
return Serial.read(buffer, size);
#endif // ESP8266
#ifdef ESP32
return TSerial->read(buffer, size);
#endif // ESP32
} else {
if ((-1 == m_rx_pin) || (m_in_pos == m_out_pos)) { return 0; }
size_t count = 0;
for( ; size && (m_in_pos == m_out_pos) ; --size, ++count) {
*buffer++ = m_buffer[m_out_pos];
m_out_pos = (m_out_pos +1) % serial_buffer_size;
}
return count;
}
}
int TasmotaSerial::available(void) {
if (m_hardserial) {
#ifdef ESP8266
return Serial.available();
@ -279,7 +305,7 @@ size_t TasmotaSerial::write(uint8_t b) {
}
}
void ICACHE_RAM_ATTR TasmotaSerial::rxRead() {
void ICACHE_RAM_ATTR TasmotaSerial::rxRead(void) {
if (!m_nwmode) {
int32_t loop_read = m_very_high_speed ? serial_buffer_size : 1;
// Advance the starting point for the samples but compensate for the

View File

@ -1,7 +1,7 @@
/*
TasmotaSerial.h - Implementation of software serial with hardware serial fallback for Tasmota
Copyright (C) 2020 Theo Arends
Copyright (C) 2021 Theo Arends
This library is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -41,16 +41,17 @@ class TasmotaSerial : public Stream {
virtual ~TasmotaSerial();
bool begin(long speed, int stop_bits = 1);
bool begin();
bool hardwareSerial();
int peek();
bool begin(void);
bool hardwareSerial(void);
int peek(void);
virtual size_t write(uint8_t byte);
virtual int read();
virtual int available();
virtual void flush();
size_t write(uint8_t byte) override;
int read(void) override;
size_t read(char* buffer, size_t size);
int available(void) override;
void flush(void) override;
void rxRead();
void rxRead(void);
uint32_t getLoopReadMetric(void) const { return m_bit_follow_metric; }

View File

@ -1,7 +1,7 @@
/*
UdpListener.h - webserver for Tasmota
Copyright (C) 2020 Theo Arends & Stephan Hadinger
Copyright (C) 2021 Theo Arends & Stephan Hadinger
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@ -0,0 +1,36 @@
/*
UnishoxStrings.c - support library for compressed strings in Flash
Copyright (C) 2021 Theo Arends and Stephan Hadinger
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "UnishoxStrings.h"
#include <pgmspace.h>
extern int32_t DecompressNoAlloc(const char * compressed, size_t uncompressed_size, String & content);
//
// If first byte is NULL, then the string is compressed
//
UnishoxStrings::UnishoxStrings(const char *k_msg) {
if (pgm_read_byte(k_msg) == 0) {
size_t len = pgm_read_byte(k_msg + 1) * 16;
DecompressNoAlloc(k_msg + 2, len, _decompressed);
_msg = _decompressed.c_str();
} else {
_msg = k_msg;
}
}

View File

@ -0,0 +1,98 @@
/*
UnishoxStrings.c - support library for compressed strings in Flash
Copyright (C) 2021 Theo Arends and Stephan Hadinger
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __UNISHOX_STRINGS__
#define __UNISHOX_STRINGS__
#include <cstddef>
#include <cstdint>
#include "WString.h"
/*******************************************************************************************/
/*
* UnishoxStrings compressed literal strings
*
* To be typically used for web UI to have multiple strings like JS, CSS, HTML
* compressed in a single list of small strings. This is where Unishox shines.
*
* Strings before compression are separated with NULL chars, which makes them ready to use
* once you know the offset in the global array.
*
* The list of string is marked by an empty stings, i.e. two consecutive NULL chars
*
* To distinguish from uncompressed templates, and to indicate the global size
* the compressed array is prefixed with NULL and the uncompressed size * 16 bytes.
*
* Compressed format:
* - Byte 00 : \00 - if non-null, then it is not compressed
* - Byte 01 : <size16> - uncompressed size is <size16> * 16 bytes (always rounded up)
* - Byte [] : compressed data (does not contain NULL)
* - Byte n : \00 - final NULL
*
/*******************************************************************************************/
/*******************************************************************************************/
/*
* This class is initialzed with either a PMEM uncompressed list of strings
* or a PMEM unishox-compressed list of strings; in this case RAM is allocated
* to hold the uncompressed data, until the class gets out of scope.
*
* To encode, use https://tasmota.hadinger.fr/util
* and use the "Compress strings template with unishox"
* past the C code for the strings, and copy/paste the result
* (don't foget to rename the variable).
*
* Input:
* Each string must be terminated with an explicit NULL char "\0". The list is hence
* terminated with a double-NULL.
*
* Each string is then indexed as its byte offset in the whole template.
* The offsets are computed at the same time as the compressed version.
* You need to use the online compressor even if you don't use the comrpessed version.
*
* Indexes are marked as C++ comments starting with "//="
*
* Example input:
* con
* // start of strings
* //=STRING_1
* "This is string 1"
* "\0"
* //=STRING_2
* "This is string 2"
* "continued here"
* "\0"
* ;
*
/*******************************************************************************************/
class UnishoxStrings {
public:
UnishoxStrings(const char *k_msg);
inline const char * operator[](uint16_t i) const { return _msg + i; }
const char * _msg = nullptr;
String _decompressed;
};
#endif // __UNISHOX_STRINGS__

View File

@ -1,7 +1,7 @@
/*
JsonGenerator.cpp - lightweight JSON parser
Copyright (C) 2020 Stephan Hadinger
Copyright (C) 2021 Stephan Hadinger
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@ -1,7 +1,7 @@
/*
JsonGenerator.h - lightweight JSON generator
Copyright (C) 2020 Stephan Hadinger
Copyright (C) 2021 Stephan Hadinger
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -32,7 +32,7 @@ extern String EscapeJSONString(const char *str);
class JsonGeneratorArray {
public:
JsonGeneratorArray(): val("[]") {} // start with empty array
JsonGeneratorArray(): val(F("[]")) {} // start with empty array
void add(uint32_t uval32);
void add(int32_t uval32);
@ -53,7 +53,7 @@ protected:
class JsonGeneratorObject {
public:
JsonGeneratorObject(): val("{}") {} // start with empty object
JsonGeneratorObject(): val(F("{}")) {} // start with empty object
void add(const char* key, uint32_t uval32);
void add(const char* key, int32_t uval32);

View File

@ -1,7 +1,7 @@
/*
JsonParser.cpp - lightweight JSON parser
Copyright (C) 2020 Stephan Hadinger
Copyright (C) 2021 Stephan Hadinger
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@ -1,7 +1,7 @@
/*
JsonParser.h - lightweight JSON parser
Copyright (C) 2020 Stephan Hadinger
Copyright (C) 2021 Stephan Hadinger
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -228,7 +228,7 @@ public:
// destructor
~JsonParser();
// set the current buffer for attribute access (i.e. set the global)
void setCurrent(void) { k_current_json_buffer = _json; }

View File

@ -1,7 +1,7 @@
/*
AudioOutputI2S
Base class for I2S interface port
Copyright (C) 2017 Earle F. Philhower, III
This program is free software: you can redistribute it and/or modify
@ -48,11 +48,13 @@ AudioOutputI2S::AudioOutputI2S(int port, int output_mode, int dma_buf_count, int
}
i2s_mode_t mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX);
#if CONFIG_IDF_TARGET_ESP32 // ESP32/PICO-D4
if (output_mode == INTERNAL_DAC) {
mode = (i2s_mode_t)(mode | I2S_MODE_DAC_BUILT_IN);
} else if (output_mode == INTERNAL_PDM) {
mode = (i2s_mode_t)(mode | I2S_MODE_PDM);
}
#endif
i2s_comm_format_t comm_fmt = (i2s_comm_format_t)(I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB);
if (output_mode == INTERNAL_DAC) {
@ -81,7 +83,7 @@ AudioOutputI2S::AudioOutputI2S(int port, int output_mode, int dma_buf_count, int
SetPinout(26, 25, 22);
}
i2s_zero_dma_buffer((i2s_port_t)portNo);
}
}
#else
(void) dma_buf_count;
(void) use_apll;
@ -138,7 +140,7 @@ bool AudioOutputI2S::SetRate(int hz)
// TODO - have a list of allowable rates from constructor, check them
this->hertz = hz;
#ifdef ESP32
i2s_set_sample_rates((i2s_port_t)portNo, AdjustI2SRate(hz));
i2s_set_sample_rates((i2s_port_t)portNo, AdjustI2SRate(hz));
#else
i2s_set_rate(AdjustI2SRate(hz));
#endif
@ -192,7 +194,11 @@ bool AudioOutputI2S::ConsumeSample(int16_t sample[2])
} else {
s32 = ((Amplify(ms[RIGHTCHANNEL]))<<16) | (Amplify(ms[LEFTCHANNEL]) & 0xffff);
}
return i2s_write_bytes((i2s_port_t)portNo, (const char*)&s32, sizeof(uint32_t), 0);
// Deprecated. Use i2s_write
// return i2s_write_bytes((i2s_port_t)portNo, (const char*)&s32, sizeof(uint32_t), 0);
size_t bytes_written;
i2s_write((i2s_port_t)portNo, (const char*)&s32, sizeof(uint32_t), &bytes_written, 0);
return bytes_written;
#else
uint32_t s32 = ((Amplify(ms[RIGHTCHANNEL]))<<16) | (Amplify(ms[LEFTCHANNEL]) & 0xffff);
return i2s_write_sample_nb(s32); // If we can't store it, return false. OTW true
@ -219,5 +225,3 @@ bool AudioOutputI2S::stop()
#endif
return true;
}

View File

@ -1,7 +1,7 @@
/*
AudioOutputI2SNoDAC
Audio player using SW delta-sigma to generate "analog" on I2S data
Copyright (C) 2017 Earle F. Philhower, III
This program is free software: you can redistribute it and/or modify
@ -66,7 +66,7 @@ void AudioOutputI2SNoDAC::DeltaSigma(int16_t sample[2], uint32_t dsBuff[8])
for (int j = 0; j < oversample32; j++) {
uint32_t bits = 0; // The bits we convert the sample into, MSB to go on the wire first
for (int i = 32; i > 0; i--) {
bits = bits << 1;
if (cumErr < 0) {
@ -95,9 +95,14 @@ bool AudioOutputI2SNoDAC::ConsumeSample(int16_t sample[2])
// Either send complete pulse stream or nothing
#ifdef ESP32
if (!i2s_write_bytes((i2s_port_t)portNo, (const char *)dsBuff, sizeof(uint32_t) * (oversample/32), 0))
// Deprecated. Use i2s_write
// if (!i2s_write_bytes((i2s_port_t)portNo, (const char *)dsBuff, sizeof(uint32_t) * (oversample/32), 0))
size_t bytes_written;
i2s_write((i2s_port_t)portNo, (const char *)dsBuff, sizeof(uint32_t) * (oversample/32), &bytes_written, 0);
if (!bytes_written)
return false;
#else
#else
if (!i2s_write_sample_nb(dsBuff[0])) return false; // No room at the inn
// At this point we've sent in first of possibly 8 32-bits, need to send
// remaining ones even if they block.

View File

@ -2,7 +2,7 @@
#define RECITERTABS_H
#include <pgmspace.h>
#include "debug.h"
#include "samdebug.h"
#if sam_debug
#define PROGMEM
#endif

View File

@ -2,7 +2,7 @@
#include <string.h> // strlen()
//#include <stdlib.h>
#include <stddef.h> // define NULL
#include "debug.h"
#include "samdebug.h"
#include "sam.h"
#include "render.h"
#include "SamTabs.h"

View File

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

View File

@ -1 +0,0 @@
1e6ee18f808b645d10f6652b3a78aca2

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

View File

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

View File

@ -1 +0,0 @@
383f10b4ef1888fea2358fde261598f6

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

View File

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

View File

@ -1 +0,0 @@
f6001a30fa104f98434d740081ebee62

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

View File

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

View File

@ -1 +0,0 @@
a87b7a535dbb4358d51525a2278a117d

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -1,27 +0,0 @@
var searchData=
[
['pad_3157',['pad',['../unionDaikin2Protocol.html#ac6b425dc516537ae3178583ff26e0948',1,'Daikin2Protocol::pad()'],['../unionDaikin128Protocol.html#aeef026f1ecb9696a7bf01b17de88951e',1,'Daikin128Protocol::pad()'],['../unionHitachi1Protocol.html#a17a8788deccc8c3648b91be5de4e1964',1,'Hitachi1Protocol::pad()'],['../unionMitsubishi136Protocol.html#a66638db2b4d4c1d969d0c6809b991ed0',1,'Mitsubishi136Protocol::pad()']]],
['pad0_3158',['pad0',['../unionDaikin216Protocol.html#ac7e3625c88ded6bf5e9e744b78af3877',1,'Daikin216Protocol::pad0()'],['../unionDaikin160Protocol.html#a422b94d3ddc17dafac919a04b6779e0e',1,'Daikin160Protocol::pad0()'],['../unionDaikin176Protocol.html#a1c883c0473df6419fa79d9e7ec044400',1,'Daikin176Protocol::pad0()'],['../unionDaikin152Protocol.html#accd26b9ae5a2b4689b1d44715cdedae5',1,'Daikin152Protocol::pad0()'],['../unionHitachiProtocol.html#a9141747df7882925a8442ae0f261e1cc',1,'HitachiProtocol::pad0()'],['../unionHitachi424Protocol.html#aca5baed417c2c06be4e912c596b5cacf',1,'Hitachi424Protocol::pad0()'],['../unionKelvinatorProtocol.html#aa67bf941395c4a614f8cc70ce29bffcf',1,'KelvinatorProtocol::pad0()'],['../unionMitsubishi144Protocol.html#a7771c9cd00799d3bed0ee73d3a3172bd',1,'Mitsubishi144Protocol::pad0()'],['../unionMitsubishi112Protocol.html#a07a1682430a0a2c63614d09ad0a7a5a0',1,'Mitsubishi112Protocol::pad0()']]],
['pad1_3159',['pad1',['../unionDaikin216Protocol.html#a3953e06ed7903c50cdfa7fa4dad77c93',1,'Daikin216Protocol::pad1()'],['../unionDaikin160Protocol.html#a55ae3e21ecc536fdeb8f773beaedf1bf',1,'Daikin160Protocol::pad1()'],['../unionDaikin176Protocol.html#a336e5ffedd9eda2778f8e1652cd3f349',1,'Daikin176Protocol::pad1()'],['../unionDaikin152Protocol.html#a4c24a70b48139610acb457eb915e76bf',1,'Daikin152Protocol::pad1()'],['../unionHitachiProtocol.html#a28391ab1e1994d254d9abf057c2b87ba',1,'HitachiProtocol::pad1()'],['../unionHitachi424Protocol.html#abb196383de210b25ec3d56b7f02ca9c3',1,'Hitachi424Protocol::pad1()'],['../unionKelvinatorProtocol.html#a9feee780a54bfb86968f137080d3d68e',1,'KelvinatorProtocol::pad1()'],['../unionMitsubishi144Protocol.html#ad256f8e7f36c654002807b7fbb5038dd',1,'Mitsubishi144Protocol::pad1()'],['../unionMitsubishi112Protocol.html#af5c30781b3183c3530b4e401952a5666',1,'Mitsubishi112Protocol::pad1()']]],
['pad2_3160',['pad2',['../unionDaikin216Protocol.html#a2ad46cbab590d8ce0fcf43004a77a759',1,'Daikin216Protocol::pad2()'],['../unionDaikin160Protocol.html#a9465c279ea0be201cf8417fe3ede965d',1,'Daikin160Protocol::pad2()'],['../unionDaikin176Protocol.html#aae23dc257ea77a204fd2b6b22c9fd91b',1,'Daikin176Protocol::pad2()'],['../unionDaikin152Protocol.html#ab66afe90c383d6a24224327a88a10acc',1,'Daikin152Protocol::pad2()'],['../unionHitachi424Protocol.html#ab8325b434d355655f432d1d400a651ee',1,'Hitachi424Protocol::pad2()']]],
['pad3_3161',['pad3',['../unionDaikin216Protocol.html#aeef7d4b689a7dccc73c201d1b5d96a2f',1,'Daikin216Protocol::pad3()'],['../unionDaikin176Protocol.html#a9959937c9a6bffc149060886f1ebb9b3',1,'Daikin176Protocol::pad3()']]],
['padding_3162',['padding',['../unionmagiquest.html#a28ca4be56c78ef762f87171506dc6e93',1,'magiquest']]],
['panasonic_3163',['panasonic',['../classIRac.html#af873db2b9735127eb6f079861daed67a',1,'IRac::panasonic()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf87c99938d26a1f77d4f082c070d4660',1,'PANASONIC():&#160;IRremoteESP8266.h']]],
['panasonic_5fac_3164',['PANASONIC_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada02178d0c70511011d5f381291bb7e491',1,'IRremoteESP8266.h']]],
['panasonic_5fac32_3165',['PANASONIC_AC32',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada790ec65ea3e5d3ef9dc19614521c889e',1,'IRremoteESP8266.h']]],
['panasonic_5fac_5fremote_5fmodel_5ft_3166',['panasonic_ac_remote_model_t',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6f',1,'IRsend.h']]],
['periodoffset_3167',['periodOffset',['../classIRsend.html#a1b5180cbf4f88f19fca3f677e1e91b96',1,'IRsend']]],
['pioneer_3168',['PIONEER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadadf49fef8f6e9740c92af2e25384f7846',1,'IRremoteESP8266.h']]],
['power_3169',['power',['../structstdAc_1_1state__t.html#ab85d37cc99bbbc4915331369c4ea622e',1,'stdAc::state_t::power()'],['../unionAmcorProtocol.html#ab6d6b470c8e3c80ee37eb31a048919db',1,'AmcorProtocol::Power()'],['../unionArgoProtocol.html#a72c5dbd39ccbac31d5cfc39beaa87d92',1,'ArgoProtocol::Power()'],['../unionCarrierProtocol.html#a9f039bf33bbe868118f14c28d6731718',1,'CarrierProtocol::Power()'],['../unionCoronaProtocol.html#a7da68dc07f9ef4ab0545e9156f9408c4',1,'CoronaProtocol::Power()'],['../unionDaikinESPProtocol.html#a8a5b839b9908359b382a105068eaf840',1,'DaikinESPProtocol::Power()'],['../unionDaikin2Protocol.html#a31d4d361af1f3c7f6eb4021a520f4572',1,'Daikin2Protocol::Power()'],['../unionDaikin216Protocol.html#ade14eb9841ea4bc09157b145145bfda8',1,'Daikin216Protocol::Power()'],['../unionDaikin160Protocol.html#a520571b287c0db8a941fc1f9e030ef0c',1,'Daikin160Protocol::Power()'],['../unionDaikin176Protocol.html#a80fd9f79014f0fe3f2fa91ee6a3e7bc2',1,'Daikin176Protocol::Power()'],['../unionDaikin128Protocol.html#aba3cecc50eee1143e2f6eadd6d2026b4',1,'Daikin128Protocol::Power()'],['../unionDaikin152Protocol.html#a5cdf563830a35ee28d239d912bd5c95c',1,'Daikin152Protocol::Power()'],['../unionDaikin64Protocol.html#a4290051abed062bb5993db071a28ef61',1,'Daikin64Protocol::Power()'],['../unionDelonghiProtocol.html#a5dccd7aa1927571e12d4244e1c179578',1,'DelonghiProtocol::Power()'],['../unionElectraProtocol.html#a907a426aa30a50667d5e4f4615d71518',1,'ElectraProtocol::Power()'],['../unionGoodweatherProtocol.html#ac3a2cf92410edd8ad11550f6aa051bac',1,'GoodweatherProtocol::Power()'],['../unionGreeProtocol.html#ab04d1d5bdaf8fb0b7129e210de14a772',1,'GreeProtocol::Power()'],['../unionHaierYRW02Protocol.html#ae87a93806911792662391a671607a760',1,'HaierYRW02Protocol::Power()'],['../unionHitachiProtocol.html#abec059afed0891f40f50b1024f211ee1',1,'HitachiProtocol::Power()'],['../unionHitachi424Protocol.html#a03af2b7a7c333c9069c4a689631cbc84',1,'Hitachi424Protocol::Power()'],['../unionHitachi1Protocol.html#a67b84f1d4c3720692e8de833b3910b88',1,'Hitachi1Protocol::Power()'],['../unionKelvinatorProtocol.html#a4bc98c7ae62273e8d8d60d71fdb44750',1,'KelvinatorProtocol::Power()'],['../unionLGProtocol.html#a5748d31340964b885933fbb6ee7fd235',1,'LGProtocol::Power()'],['../unionMideaProtocol.html#a6b534bb5845c3c184ee43b87995cff32',1,'MideaProtocol::Power()'],['../unionMitsubishi144Protocol.html#af99f269ce1b905c47b9417c41189c94b',1,'Mitsubishi144Protocol::Power()'],['../unionMitsubishi136Protocol.html#aa5df3d147cbd1c2dd3f17028c0ff36dc',1,'Mitsubishi136Protocol::Power()'],['../unionMitsubishi112Protocol.html#ad4c47f745c6ff6a349457ccc66f4e091',1,'Mitsubishi112Protocol::Power()'],['../unionMitsubishi152Protocol.html#abb8ac556d7ead5d1083af940130a9805',1,'Mitsubishi152Protocol::Power()'],['../unionMitsubishi88Protocol.html#a48eb181bcb178491d0cd399d69487f2b',1,'Mitsubishi88Protocol::Power()'],['../unionVoltasProtocol.html#a554e4bce95426a096f090cc6890f46f2',1,'VoltasProtocol::Power()']]],
['power2_3170',['Power2',['../unionDaikin2Protocol.html#ad38268911be9104ab7fcaf0d35dd4c6f',1,'Daikin2Protocol']]],
['powerbutton_3171',['PowerButton',['../unionCoronaProtocol.html#abceccc1306d3a78be6177758f3056a5a',1,'CoronaProtocol']]],
['powerflag_3172',['powerFlag',['../classIRCoolixAC.html#a5984ff64ff14df92291618a647da08f9',1,'IRCoolixAC::powerFlag()'],['../classIRTranscoldAc.html#a07e96c352827f011a1a2440f35d78d14',1,'IRTranscoldAc::powerFlag()']]],
['powerful_3173',['Powerful',['../unionDaikinESPProtocol.html#a16b091d1faf200607bd37ff48ddfb940',1,'DaikinESPProtocol::Powerful()'],['../unionDaikin2Protocol.html#ac7b3b9d7f424ccc78749d944b59c7372',1,'Daikin2Protocol::Powerful()'],['../unionDaikin216Protocol.html#a2cb72f5fea3b5298b8de45060c476a17',1,'Daikin216Protocol::Powerful()'],['../unionDaikin152Protocol.html#aa4cdbef46c721491cb854b36d6de89a3',1,'Daikin152Protocol::Powerful()']]],
['powertoggle_3174',['PowerToggle',['../unionAirwellProtocol.html#a9a3893a0ec7811202697adeb60d89775',1,'AirwellProtocol::PowerToggle()'],['../unionHitachi1Protocol.html#adf8067b7e2d7ea3afb6ffae08a9cf609',1,'Hitachi1Protocol::PowerToggle()']]],
['prefix_3175',['Prefix',['../unionHaierProtocol.html#a6c15a8e22231dae23ffa8bef78420054',1,'HaierProtocol::Prefix()'],['../unionHaierYRW02Protocol.html#af55185fad3229f2011b5917412ad8c1b',1,'HaierYRW02Protocol::Prefix()']]],
['prev_5fmode_3176',['prev_mode',['../classIRToshibaAC.html#ac251884741fb8ad8280b55e99c23211e',1,'IRToshibaAC']]],
['pronto_3177',['PRONTO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5b68c32f80c4afa6e61039843b2d1f97',1,'IRremoteESP8266.h']]],
['protocol_3178',['protocol',['../structstdAc_1_1state__t.html#af59897778be0e571f77dd11337352c27',1,'stdAc::state_t']]],
['pt_2dbr_2eh_3179',['pt-BR.h',['../pt-BR_8h.html',1,'']]],
['purify_3180',['Purify',['../unionDaikin2Protocol.html#ad3c5427e7d4d0182bb86f61fa2c2484a',1,'Daikin2Protocol']]]
];

View File

@ -1,14 +0,0 @@
var searchData=
[
['uint64tostring_3530',['uint64ToString',['../IRutils_8cpp.html#a9f6ddef74b41ef6f8d2805fcfc396420',1,'uint64ToString(uint64_t input, uint8_t base):&#160;IRutils.cpp'],['../IRutils_8h.html#a781650451d38303e80da677539f574ee',1,'uint64ToString(uint64_t input, uint8_t base=10):&#160;IRutils.cpp']]],
['uint8tobcd_3531',['uint8ToBcd',['../namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1',1,'irutils']]],
['unknown_3532',['unknown',['../unionHaierProtocol.html#aabc2a684c5936858544c02ec8a68afb9',1,'HaierProtocol::unknown()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada6ce26a62afab55d7606ad4e92428b30c',1,'UNKNOWN():&#160;IRremoteESP8266.h']]],
['unknown1_3533',['unknown1',['../unionGreeProtocol.html#ae973c1c723b7162959374e1fd8ecab61',1,'GreeProtocol']]],
['unknown2_3534',['unknown2',['../unionGreeProtocol.html#aa102f7d68c26f5b8644b13113a5b05f4',1,'GreeProtocol']]],
['unused_3535',['UNUSED',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa09b651ef326a9d8efcee5cc5b720ab4',1,'IRremoteESP8266.h']]],
['updateandsavestate_3536',['updateAndSaveState',['../classIRCoolixAC.html#a2681a6affc5fb542584b1ef241bc38af',1,'IRCoolixAC']]],
['updatesavedstate_3537',['updateSavedState',['../classIRTranscoldAc.html#a64eedf758c2564865add8c86f10e24ec',1,'IRTranscoldAc']]],
['use_5ftime_5fstate_3538',['use_time_state',['../classIRVestelAc.html#af1b622c50a4952fb3edaf483e1bf9328',1,'IRVestelAc']]],
['used_3539',['used',['../structmatch__result__t.html#a26cea305aa83ed65b88ac0b6ed6de54a',1,'match_result_t']]],
['usefahrenheit_3540',['UseFahrenheit',['../unionGreeProtocol.html#a47c79761efe40c00e6bb01b7712b272c',1,'GreeProtocol::UseFahrenheit()'],['../unionMideaProtocol.html#a1b1258107620bb83fd6356815242e19b',1,'MideaProtocol::useFahrenheit()']]]
];

View File

@ -1,12 +0,0 @@
var searchData=
[
['wall_3553',['Wall',['../unionDaikin128Protocol.html#aed2c5bc365820f2c0a5f27dd68fa8a05',1,'Daikin128Protocol']]],
['wand_5fid_3554',['wand_id',['../unionmagiquest.html#a1b159cd47635d548e1d4198cd6d41e93',1,'magiquest']]],
['weeklytimer_3555',['WeeklyTimer',['../unionDaikinESPProtocol.html#a25e632da82856caebd233699fda8d796',1,'DaikinESPProtocol']]],
['whirlpool_3556',['whirlpool',['../classIRac.html#ae5f7a03589f614c03c5ad8629100b05a',1,'IRac']]],
['whirlpool_5fac_3557',['WHIRLPOOL_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9faf927323d110269541b356f079b85a',1,'IRremoteESP8266.h']]],
['whirlpool_5fac_5fremote_5fmodel_5ft_3558',['whirlpool_ac_remote_model_t',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2',1,'IRsend.h']]],
['whynter_3559',['WHYNTER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada458cdd7fa2b29dc8617c694696580c0c',1,'IRremoteESP8266.h']]],
['widevane_3560',['WideVane',['../unionMitsubishi144Protocol.html#ad0c48e95ca7e0658edf7c2ac2b541c3c',1,'Mitsubishi144Protocol']]],
['wifi_3561',['Wifi',['../unionVoltasProtocol.html#aae1406825a156f159c5ad4b28d20364c',1,'VoltasProtocol::Wifi()'],['../unionGreeProtocol.html#a6cf8e0a6c54a5d2b6f14074c6f3dcc92',1,'GreeProtocol::WiFi()']]]
];

View File

@ -1,7 +0,0 @@
var searchData=
[
['zepeal_3566',['ZEPEAL',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1622e3d0835b4d47add716811c7bf797',1,'IRremoteESP8266.h']]],
['zh_2dcn_2eh_3567',['zh-CN.h',['../zh-CN_8h.html',1,'']]],
['zonefollow1_3568',['ZoneFollow1',['../unionCoolixProtocol.html#a5f19a21823bbdb6d5deceb03db0d3d5b',1,'CoolixProtocol']]],
['zonefollow2_3569',['ZoneFollow2',['../unionCoolixProtocol.html#ade33ba99bcfcf9d7dac334e56e9bb167',1,'CoolixProtocol']]]
];

View File

@ -1,4 +0,0 @@
var searchData=
[
['_7eirrecv_3570',['~IRrecv',['../classIRrecv.html#a87d4cca5e350177cb0922842dda1eb5b',1,'IRrecv']]]
];

View File

@ -1,135 +0,0 @@
var searchData=
[
['d_184',['D',['../unionMitsubishi152Protocol.html#ac493830f3bf09e178aa09b24368746c9',1,'Mitsubishi152Protocol']]],
['daikin_185',['daikin',['../classIRac.html#afb6d77bbeb5b2465437cef4f58b83e0e',1,'IRac::daikin()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad8dc0597fd237d7098246334f3b5f37e',1,'DAIKIN():&#160;IRremoteESP8266.h']]],
['daikin128_186',['daikin128',['../classIRac.html#a8fe7c254e1bcb32b6b6fdc1f91693a50',1,'IRac::daikin128()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4b26fb376f6375dd6d1d4be186438f88',1,'DAIKIN128():&#160;IRremoteESP8266.h']]],
['daikin128protocol_187',['Daikin128Protocol',['../unionDaikin128Protocol.html',1,'']]],
['daikin152_188',['daikin152',['../classIRac.html#a6dff8e608e3e9fecffe71c3fd1ebe74e',1,'IRac::daikin152()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad3f5f7ca39aee5fdab671a1b0d647ae4',1,'DAIKIN152():&#160;IRremoteESP8266.h']]],
['daikin152protocol_189',['Daikin152Protocol',['../unionDaikin152Protocol.html',1,'']]],
['daikin160_190',['daikin160',['../classIRac.html#a3b34f44d713efa52f30d43405cde831c',1,'IRac::daikin160()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4db6a848df3aed4289801e1b2bbbf6aa',1,'DAIKIN160():&#160;IRremoteESP8266.h']]],
['daikin160protocol_191',['Daikin160Protocol',['../unionDaikin160Protocol.html',1,'']]],
['daikin176_192',['daikin176',['../classIRac.html#aaae173fd58a7b53c3f4d2edbf7c4afe7',1,'IRac::daikin176()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada57f78a3b04d904f19d10bac13483deab',1,'DAIKIN176():&#160;IRremoteESP8266.h']]],
['daikin176protocol_193',['Daikin176Protocol',['../unionDaikin176Protocol.html',1,'']]],
['daikin2_194',['daikin2',['../classIRac.html#a89eddc0e1b3c41c608208d2752dc954c',1,'IRac::daikin2()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab37b344f84d575ec78a92ca55e153586',1,'DAIKIN2():&#160;IRremoteESP8266.h']]],
['daikin216_195',['daikin216',['../classIRac.html#a101ac8b9e9564e557ef1a1f61ff111d9',1,'IRac::daikin216()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa833fa3a20c3cbb7e6206dac4da30ffb',1,'DAIKIN216():&#160;IRremoteESP8266.h']]],
['daikin216protocol_196',['Daikin216Protocol',['../unionDaikin216Protocol.html',1,'']]],
['daikin2protocol_197',['Daikin2Protocol',['../unionDaikin2Protocol.html',1,'']]],
['daikin64_198',['daikin64',['../classIRac.html#a074db6fc0cff2878d80a397020e1b249',1,'IRac::daikin64()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada70581853ce4883b747d22fdfd74409c4',1,'DAIKIN64():&#160;IRremoteESP8266.h']]],
['daikin64protocol_199',['Daikin64Protocol',['../unionDaikin64Protocol.html',1,'']]],
['daikinespprotocol_200',['DaikinESPProtocol',['../unionDaikinESPProtocol.html',1,'']]],
['data_201',['data',['../structmatch__result__t.html#ae88be61a6d1ffa7c3525aa958f4c0d25',1,'match_result_t']]],
['data0_202',['Data0',['../structCoronaSection.html#a975b14d8bc30807013714158ef7474ea',1,'CoronaSection']]],
['data0inv_203',['Data0Inv',['../structCoronaSection.html#ab05024b8314929dcd8ccdda9b497be8c',1,'CoronaSection']]],
['data1_204',['Data1',['../structCoronaSection.html#a59d97a1bc0a1be50b6f96c4d70673425',1,'CoronaSection']]],
['data1inv_205',['Data1Inv',['../structCoronaSection.html#ada247bbfb60f24cd9e9a612c9621cbb4',1,'CoronaSection']]],
['de_2dch_2eh_206',['de-CH.h',['../de-CH_8h.html',1,'']]],
['de_2dde_2eh_207',['de-DE.h',['../de-DE_8h.html',1,'']]],
['decode_208',['decode',['../classIRrecv.html#aeaa5c07a8b46f8fbb982f996cc1f9f4b',1,'IRrecv']]],
['decode_5fresults_209',['decode_results',['../classdecode__results.html',1,'']]],
['decode_5ftype_210',['decode_type',['../classdecode__results.html#a9c0e9f161b9c90dc10b7561d4c0b50fa',1,'decode_results']]],
['decode_5ftype_5ft_211',['decode_type_t',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad',1,'IRremoteESP8266.h']]],
['decodeairwell_212',['decodeAirwell',['../classIRrecv.html#acf4635d5ee146a82498cb0c269b6af41',1,'IRrecv']]],
['decodeaiwarct501_213',['decodeAiwaRCT501',['../classIRrecv.html#aa4d678376a4c0f8ea953474a6f5ef9d2',1,'IRrecv']]],
['decodeamcor_214',['decodeAmcor',['../classIRrecv.html#a8d81fcfb47e36925975d313027689a44',1,'IRrecv']]],
['decodeargo_215',['decodeArgo',['../classIRrecv.html#a94f12dc000a6e7b75ea8680fd48fc487',1,'IRrecv']]],
['decodecarrierac_216',['decodeCarrierAC',['../classIRrecv.html#acf3d1c37038120a5c0996d92577ce74a',1,'IRrecv']]],
['decodecarrierac40_217',['decodeCarrierAC40',['../classIRrecv.html#a4bdb35ec34f49401a6b9becd15b8a3b5',1,'IRrecv']]],
['decodecarrierac64_218',['decodeCarrierAC64',['../classIRrecv.html#a79d03c31da48a385ab47cc8f342ef9b3',1,'IRrecv']]],
['decodecoolix_219',['decodeCOOLIX',['../classIRrecv.html#a964af7e72e2133688f0596c718cb98ca',1,'IRrecv']]],
['decodecoronaac_220',['decodeCoronaAc',['../classIRrecv.html#a981cba14551c93af57f9c1c0e1775d12',1,'IRrecv']]],
['decodedaikin_221',['decodeDaikin',['../classIRrecv.html#a141f0de9f4cae8daeb025aff3904ecaa',1,'IRrecv']]],
['decodedaikin128_222',['decodeDaikin128',['../classIRrecv.html#ac7188577c874d9f8f19304a3ec775415',1,'IRrecv']]],
['decodedaikin152_223',['decodeDaikin152',['../classIRrecv.html#ab20a6586b4e56cc428012ec96f5ccc2c',1,'IRrecv']]],
['decodedaikin160_224',['decodeDaikin160',['../classIRrecv.html#af0b9822defe6b29099079d664d9dc413',1,'IRrecv']]],
['decodedaikin176_225',['decodeDaikin176',['../classIRrecv.html#aa142d1340201b6fdc5b462f46fe21ee0',1,'IRrecv']]],
['decodedaikin2_226',['decodeDaikin2',['../classIRrecv.html#a4c4799a0d45ea5562159c46939617d80',1,'IRrecv']]],
['decodedaikin216_227',['decodeDaikin216',['../classIRrecv.html#a7f860686a5c58aa8f4d1842cfb15b2f9',1,'IRrecv']]],
['decodedaikin64_228',['decodeDaikin64',['../classIRrecv.html#a030701f081a9c6eab0c07b75433b524c',1,'IRrecv']]],
['decodedelonghiac_229',['decodeDelonghiAc',['../classIRrecv.html#a8c91cc83770d243e942387cc16e9ca6f',1,'IRrecv']]],
['decodedenon_230',['decodeDenon',['../classIRrecv.html#a0b1bd1c817cb43bc3755126191b7f4a2',1,'IRrecv']]],
['decodedish_231',['decodeDISH',['../classIRrecv.html#a851776d9178aeb706d9a1abd3f254e31',1,'IRrecv']]],
['decodedoshisha_232',['decodeDoshisha',['../classIRrecv.html#a675c45e6b32aaeca3de734ccf2f0c819',1,'IRrecv']]],
['decodeelectraac_233',['decodeElectraAC',['../classIRrecv.html#ad3a7be8afc36451c8e28e27f3c3e9aaa',1,'IRrecv']]],
['decodeelitescreens_234',['decodeElitescreens',['../classIRrecv.html#ac830ece2c2c200b8c13fcd66828e2846',1,'IRrecv']]],
['decodeepson_235',['decodeEpson',['../classIRrecv.html#aaadef8415f273ba25f4086fecd681d2e',1,'IRrecv']]],
['decodefujitsuac_236',['decodeFujitsuAC',['../classIRrecv.html#aa3778bdf994bf9c99ac48ef95434a826',1,'IRrecv']]],
['decodegicable_237',['decodeGICable',['../classIRrecv.html#afade8dac9b1d023e5e0946e6b2c08aea',1,'IRrecv']]],
['decodegoodweather_238',['decodeGoodweather',['../classIRrecv.html#a64650ce7dbaf5fc860a6a253d906e9de',1,'IRrecv']]],
['decodegree_239',['decodeGree',['../classIRrecv.html#a2e756342d7524a13d53d6c656700638c',1,'IRrecv']]],
['decodehaierac_240',['decodeHaierAC',['../classIRrecv.html#ad97403174f05197a7fa9a4a0107e3111',1,'IRrecv']]],
['decodehaieracyrw02_241',['decodeHaierACYRW02',['../classIRrecv.html#a281fb9d972fee75db49209c42f649822',1,'IRrecv']]],
['decodehash_242',['decodeHash',['../classIRrecv.html#a7c15fbfa7936ca474712a1953911fd06',1,'IRrecv']]],
['decodehitachiac_243',['decodeHitachiAC',['../classIRrecv.html#aa42facfffc0e304005272b6ddd4583c8',1,'IRrecv']]],
['decodehitachiac1_244',['decodeHitachiAC1',['../classIRrecv.html#a122e0dcbf14c90ec2d77399acce21459',1,'IRrecv']]],
['decodehitachiac3_245',['decodeHitachiAc3',['../classIRrecv.html#a113bc834eff00f55d5545ce3fa1ab203',1,'IRrecv']]],
['decodehitachiac424_246',['decodeHitachiAc424',['../classIRrecv.html#a01c3dda56d6d916076fa1affa2213129',1,'IRrecv']]],
['decodeinax_247',['decodeInax',['../classIRrecv.html#a94545c6a8da027b9cb0e23ecba4c29d8',1,'IRrecv']]],
['decodejvc_248',['decodeJVC',['../classIRrecv.html#a25ab71efc223a418e9630d8421f44bc9',1,'IRrecv']]],
['decodekelvinator_249',['decodeKelvinator',['../classIRrecv.html#a0ac82f20b48b2d71ee07eb392578b226',1,'IRrecv']]],
['decodelasertag_250',['decodeLasertag',['../classIRrecv.html#ae4af614a45ea65cb3304ef5bd7965122',1,'IRrecv']]],
['decodelegopf_251',['decodeLegoPf',['../classIRrecv.html#aea75ad0ba1d8fec33de16501940f2553',1,'IRrecv']]],
['decodelg_252',['decodeLG',['../classIRrecv.html#afe70015c36b1477a5de0c193163e13a7',1,'IRrecv']]],
['decodelutron_253',['decodeLutron',['../classIRrecv.html#a6093c4404a9a9d415c5bfeab5ec53be5',1,'IRrecv']]],
['decodemagiquest_254',['decodeMagiQuest',['../classIRrecv.html#a6f3bfcc6767484151dee758bcf94fb0b',1,'IRrecv']]],
['decodemetz_255',['decodeMetz',['../classIRrecv.html#ac39aa52eec10d1c92b6e9713a22252b6',1,'IRrecv']]],
['decodemidea_256',['decodeMidea',['../classIRrecv.html#a255b15601f7439a09ab5e77ad78816fb',1,'IRrecv']]],
['decodemidea24_257',['decodeMidea24',['../classIRrecv.html#a62a04019308b29ae2aea4b3a83ba9155',1,'IRrecv']]],
['decodemirage_258',['decodeMirage',['../classIRrecv.html#aa88813f830a6ff6bfd6e7bde6728a3d5',1,'IRrecv']]],
['decodemitsubishi_259',['decodeMitsubishi',['../classIRrecv.html#a6efe3be80f0ebef3ff94ed0e56c5c52a',1,'IRrecv']]],
['decodemitsubishi112_260',['decodeMitsubishi112',['../classIRrecv.html#ae0690ff3cb5a5cdcdb6a514bb7bf0cdd',1,'IRrecv']]],
['decodemitsubishi136_261',['decodeMitsubishi136',['../classIRrecv.html#a87b3ee57dbdf762a0e305ddd43eec629',1,'IRrecv']]],
['decodemitsubishi2_262',['decodeMitsubishi2',['../classIRrecv.html#a9514197850491a5b8c30ae9ffc89d895',1,'IRrecv']]],
['decodemitsubishiac_263',['decodeMitsubishiAC',['../classIRrecv.html#a942c5f41df5cbff32a8b7703673cb621',1,'IRrecv']]],
['decodemitsubishiheavy_264',['decodeMitsubishiHeavy',['../classIRrecv.html#aef9cedf79793806df4cc5376710781bc',1,'IRrecv']]],
['decodemultibrackets_265',['decodeMultibrackets',['../classIRrecv.html#af61afacc9865232643164ba824e665ab',1,'IRrecv']]],
['decodemwm_266',['decodeMWM',['../classIRrecv.html#a27518b5d792cdf3ab333b324f409f328',1,'IRrecv']]],
['decodenec_267',['decodeNEC',['../classIRrecv.html#a52b844f80df7f64edf9ce9cc189ac5b9',1,'IRrecv']]],
['decodeneoclima_268',['decodeNeoclima',['../classIRrecv.html#a4729ee949e533448b481ae33bbbf1adf',1,'IRrecv']]],
['decodenikai_269',['decodeNikai',['../classIRrecv.html#abbcbf5fc07d7e37d7724acc37bb5f592',1,'IRrecv']]],
['decodepanasonic_270',['decodePanasonic',['../classIRrecv.html#aa8dd5f24d28576c6db03cc463bd0a865',1,'IRrecv']]],
['decodepanasonicac_271',['decodePanasonicAC',['../classIRrecv.html#a0f78e180ed731e8fb16d1c85aa721c95',1,'IRrecv']]],
['decodepanasonicac32_272',['decodePanasonicAC32',['../classIRrecv.html#a89ce20e483b1297cae05ab1ae96d24ec',1,'IRrecv']]],
['decodepioneer_273',['decodePioneer',['../classIRrecv.html#a78a9487cbe8a562392a07a4090b3091e',1,'IRrecv']]],
['decoderc5_274',['decodeRC5',['../classIRrecv.html#adab9dffbeceee514520fababd0e721bd',1,'IRrecv']]],
['decoderc6_275',['decodeRC6',['../classIRrecv.html#a67316499ef37db82e3b3ecaac25c5980',1,'IRrecv']]],
['decodercmm_276',['decodeRCMM',['../classIRrecv.html#a0e7bf769cb5bebf174e852e4b0b08cf3',1,'IRrecv']]],
['decodesamsung_277',['decodeSAMSUNG',['../classIRrecv.html#a18b6cf177364faf11b9a076dd2025eec',1,'IRrecv']]],
['decodesamsung36_278',['decodeSamsung36',['../classIRrecv.html#a290a9e6a0b12ef1fe02a92a456c8ad57',1,'IRrecv']]],
['decodesamsungac_279',['decodeSamsungAC',['../classIRrecv.html#ae779c76ebd0f3cd1fc13abaa55f80d67',1,'IRrecv']]],
['decodesanyoac_280',['decodeSanyoAc',['../classIRrecv.html#ab6c02d8b8079d7f344e141e6a4e7e225',1,'IRrecv']]],
['decodesanyolc7461_281',['decodeSanyoLC7461',['../classIRrecv.html#a01a165bf2e7d16dbbb916d1eae740bc5',1,'IRrecv']]],
['decodesharp_282',['decodeSharp',['../classIRrecv.html#a3390d63ba21a835d7c74c261532a22a7',1,'IRrecv']]],
['decodesharpac_283',['decodeSharpAc',['../classIRrecv.html#a8a9b920079f783e236f8a938e20b9743',1,'IRrecv']]],
['decodesony_284',['decodeSony',['../classIRrecv.html#ab03227955cf7d1d00c1620c55d7f9f18',1,'IRrecv']]],
['decodesymphony_285',['decodeSymphony',['../classIRrecv.html#a61cdf4d891654521afbc6ca9fb415745',1,'IRrecv']]],
['decodetechnibelac_286',['decodeTechnibelAc',['../classIRrecv.html#a2f022741309ad814bf11aec440a838d0',1,'IRrecv']]],
['decodeteco_287',['decodeTeco',['../classIRrecv.html#a950711d7df8dfe4cda86f53650cd9f56',1,'IRrecv']]],
['decodetoshibaac_288',['decodeToshibaAC',['../classIRrecv.html#aae6ab687ae319ae50a52238916bcfb1a',1,'IRrecv']]],
['decodetostate_289',['decodeToState',['../namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949',1,'IRAcUtils']]],
['decodetranscold_290',['decodeTranscold',['../classIRrecv.html#a16c44538d7e01d9b118d983de39d18e3',1,'IRrecv']]],
['decodetrotec_291',['decodeTrotec',['../classIRrecv.html#ae2920c488173f3fa37f5325438157ced',1,'IRrecv']]],
['decodevestelac_292',['decodeVestelAc',['../classIRrecv.html#a5d48b3c91434c18c7726cca504d75b73',1,'IRrecv']]],
['decodevoltas_293',['decodeVoltas',['../classIRrecv.html#a43539320036ba1c17e9875e4dc9fd055',1,'IRrecv']]],
['decodewhirlpoolac_294',['decodeWhirlpoolAC',['../classIRrecv.html#a0d1eec83cf092f5621cb34b3e94777c4',1,'IRrecv']]],
['decodewhynter_295',['decodeWhynter',['../classIRrecv.html#a66289f6a462557ad26e6c0a64f36cf02',1,'IRrecv']]],
['decodezepeal_296',['decodeZepeal',['../classIRrecv.html#a72afd857c8b2e0192021a40afc96c2d8',1,'IRrecv']]],
['defaultbits_297',['defaultBits',['../classIRsend.html#a70a2256bee8ad9b8ea8571dd4f26596f',1,'IRsend']]],
['defaults_2eh_298',['defaults.h',['../defaults_8h.html',1,'']]],
['degrees_299',['degrees',['../structstdAc_1_1state__t.html#a3d1ff0ff2e0035db4ee8ead5c53b2dbd',1,'stdAc::state_t']]],
['delonghi_5fac_300',['DELONGHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada149190c9dec98e9c3f4a2bd530b154a3',1,'IRremoteESP8266.h']]],
['delonghiac_301',['delonghiac',['../classIRac.html#af290b0b08cff5121bb88c62051ed1074',1,'IRac']]],
['delonghiprotocol_302',['DelonghiProtocol',['../unionDelonghiProtocol.html',1,'']]],
['denon_303',['DENON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada2bda37b76abb290d1675c3e027e3c2e1',1,'IRremoteESP8266.h']]],
['deprecated_20list_304',['Deprecated List',['../deprecated.html',1,'']]],
['dg11j13a_305',['DG11J13A',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2a868d69f0605cf9151b0163a3481e2fb9',1,'IRsend.h']]],
['dg11j191_306',['DG11J191',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2adaecfc16f36975f231db2507a8a36c0c',1,'IRsend.h']]],
['disableirin_307',['disableIRIn',['../classIRrecv.html#a9f4a719e756ad78c7dd47186f8bef087',1,'IRrecv']]],
['disableofftimer_308',['disableOffTimer',['../classIRDaikinESP.html#a1e4e05ad0799002d0ab25db92dcaac06',1,'IRDaikinESP::disableOffTimer()'],['../classIRDaikin2.html#a8cbdbc0de31b14f974cd8cd87f3ca54a',1,'IRDaikin2::disableOffTimer()']]],
['disableontimer_309',['disableOnTimer',['../classIRDaikinESP.html#a0733e4a15d76baac23493926ef1765b1',1,'IRDaikinESP::disableOnTimer()'],['../classIRDaikin2.html#a170a1e9ddb7873dc1392184a85387cc3',1,'IRDaikin2::disableOnTimer()']]],
['disablesensor_310',['disableSensor',['../unionMideaProtocol.html#a20cc2079eae404c980cc75101b4a3116',1,'MideaProtocol']]],
['disablesleeptimer_311',['disableSleepTimer',['../classIRDaikin2.html#a152532ef9d905e26930ae145a9623877',1,'IRDaikin2']]],
['dish_312',['DISH',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac27c6ac38ba872593af8e46ac2fdc85a',1,'IRremoteESP8266.h']]],
['displaytemp_313',['DisplayTemp',['../unionGreeProtocol.html#ad0756a64f9c90c9dd12ca6cd71c78bb2',1,'GreeProtocol']]],
['doshisha_314',['DOSHISHA',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab4566b260773b60c85450f40fa5b4341',1,'IRremoteESP8266.h']]],
['doxygen_5findex_2emd_315',['doxygen_index.md',['../doxygen__index_8md.html',1,'']]]
];

View File

@ -1,39 +0,0 @@
var searchData=
[
['econo_316',['Econo',['../unionCoronaProtocol.html#a1076afecc4292c370fed27ce380a1ed5',1,'CoronaProtocol::Econo()'],['../unionDaikinESPProtocol.html#a29138c4ff722520ca23863568a96bf53',1,'DaikinESPProtocol::Econo()'],['../unionDaikin2Protocol.html#aa715d01b8972f98a41829ed976932ef7',1,'Daikin2Protocol::Econo()'],['../unionDaikin128Protocol.html#a8920f30a9d4bb0132762d80c8297d5f2',1,'Daikin128Protocol::Econo()'],['../unionDaikin152Protocol.html#ad9c7903f82a89b94e0c9dfe8b7298658',1,'Daikin152Protocol::Econo()'],['../unionVoltasProtocol.html#a4f44e3e3a68988d25173b2aab1c32e53',1,'VoltasProtocol::Econo()'],['../structstdAc_1_1state__t.html#a580c826c6d9671715adfe8445531b957',1,'stdAc::state_t::econo()']]],
['elapsed_317',['elapsed',['../classIRtimer.html#ad655e585f053580d49d8de7d52cd62a1',1,'IRtimer::elapsed()'],['../classTimerMs.html#ad4aa759c58727393f69863b3461dfc09',1,'TimerMs::elapsed()']]],
['electra_318',['electra',['../classIRac.html#abb847bd5e09feb293432b8a8cf0dd9de',1,'IRac']]],
['electra_5fac_319',['ELECTRA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada05f193ef4ead3e54624bd92dc3203fac',1,'IRremoteESP8266.h']]],
['electraprotocol_320',['ElectraProtocol',['../unionElectraProtocol.html',1,'']]],
['elitescreens_321',['ELITESCREENS',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadafebe19d5453be4c99de8c031508b7cb1',1,'IRremoteESP8266.h']]],
['en_2dau_2eh_322',['en-AU.h',['../en-AU_8h.html',1,'']]],
['en_2die_2eh_323',['en-IE.h',['../en-IE_8h.html',1,'']]],
['en_2duk_2eh_324',['en-UK.h',['../en-UK_8h.html',1,'']]],
['en_2dus_2eh_325',['en-US.h',['../en-US_8h.html',1,'']]],
['enableirin_326',['enableIRIn',['../classIRrecv.html#a52c05ec6d8f3dbfb75f21f3b4fe7be3d',1,'IRrecv']]],
['enableirout_327',['enableIROut',['../classIRsend.html#ab3b6d36c9b5d26c400526717d433ed2d',1,'IRsend']]],
['enableofftimer_328',['enableOffTimer',['../classIRDaikinESP.html#a8a5686066bfc86f1d7cc454e793d3357',1,'IRDaikinESP::enableOffTimer()'],['../classIRDaikin2.html#afc7ba7d7de2976e010a72778091d633a',1,'IRDaikin2::enableOffTimer()'],['../classIRWhirlpoolAc.html#abb1c3685d90d81b44e72050cd0e042f6',1,'IRWhirlpoolAc::enableOffTimer()']]],
['enableontimer_329',['enableOnTimer',['../classIRDaikinESP.html#aac4d0f5f60c9f4c41d3bb1e0f24bc4bc',1,'IRDaikinESP::enableOnTimer()'],['../classIRDaikin2.html#a91ec5f7c67cb87102a5eb030e0763b50',1,'IRDaikin2::enableOnTimer()'],['../classIRWhirlpoolAc.html#aa3edd58882cf4fc65172e490c9e0bb2e',1,'IRWhirlpoolAc::enableOnTimer()']]],
['enablesleeptimer_330',['enableSleepTimer',['../classIRDaikin2.html#a9c86782a98a54818ae92419eec5a060b',1,'IRDaikin2']]],
['enabletimer_331',['enableTimer',['../classIRWhirlpoolAc.html#ad07804318721bc5dd60f7322e02c9696',1,'IRWhirlpoolAc']]],
['encodedoshisha_332',['encodeDoshisha',['../classIRsend.html#a0522a2256e8358df715065530be6317d',1,'IRsend']]],
['encodejvc_333',['encodeJVC',['../classIRsend.html#a6303b991c0545443e7ccf63ba89dbf18',1,'IRsend']]],
['encodelg_334',['encodeLG',['../classIRsend.html#a109b67a68e7a33900cb5c5017ed4578b',1,'IRsend']]],
['encodemagiquest_335',['encodeMagiQuest',['../classIRsend.html#a4ee40126279dbde8bb02888115577563',1,'IRsend']]],
['encodemetz_336',['encodeMetz',['../classIRsend.html#a99c88ec9f8426003738a9a1682595b9a',1,'IRsend']]],
['encodenec_337',['encodeNEC',['../classIRsend.html#ab2e1ce918e4e06b955c3d2a089ce189c',1,'IRsend']]],
['encodepanasonic_338',['encodePanasonic',['../classIRsend.html#a8340497ae75f00c844e53dfc73700d9c',1,'IRsend']]],
['encodepioneer_339',['encodePioneer',['../classIRsend.html#ae0686829eba31587b71034a1c0495971',1,'IRsend']]],
['encoderc5_340',['encodeRC5',['../classIRsend.html#a88457fd4cc01d6e8097e04c022ede74a',1,'IRsend']]],
['encoderc5x_341',['encodeRC5X',['../classIRsend.html#ae760ef1be11f25f7a61237f96a8871d9',1,'IRsend']]],
['encoderc6_342',['encodeRC6',['../classIRsend.html#ac0e341462426ea146b944502a6d3fde0',1,'IRsend']]],
['encodesamsung_343',['encodeSAMSUNG',['../classIRsend.html#a4ab0579bd854306b2667de19207e4ffb',1,'IRsend']]],
['encodesanyolc7461_344',['encodeSanyoLC7461',['../classIRsend.html#a864bef0dc48f6af4b59057362906cf5d',1,'IRsend']]],
['encodesharp_345',['encodeSharp',['../classIRsend.html#a8f4c7a36380ba31155eba5ff8f5f631e',1,'IRsend']]],
['encodesony_346',['encodeSony',['../classIRsend.html#aa0aea2cb04f0a7ee9056f15fecfc08c3',1,'IRsend']]],
['encodetime_347',['encodeTime',['../classIRPanasonicAc.html#a0eee4ad6105d35ee6c34c4666174b04b',1,'IRPanasonicAc']]],
['epson_348',['EPSON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaaf677fd380c38297264a10732631927c',1,'IRremoteESP8266.h']]],
['es_2des_2eh_349',['es-ES.h',['../es-ES_8h.html',1,'']]],
['eye_350',['Eye',['../unionDaikin2Protocol.html#aa8351138b8db3b8be5f40d1515802381',1,'Daikin2Protocol']]],
['eyeauto_351',['EyeAuto',['../unionDaikin2Protocol.html#a22f2288452065069018bef94d2505ab7',1,'Daikin2Protocol']]]
];

View File

@ -1,34 +0,0 @@
var searchData=
[
['haier_495',['haier',['../classIRac.html#ae0a29a4cb8c7a4707a7725c576822a58',1,'IRac']]],
['haier_5fac_496',['HAIER_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1f232bcdf330ec2e353196941b9f1628',1,'IRremoteESP8266.h']]],
['haier_5fac_5fyrw02_497',['HAIER_AC_YRW02',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaacda5821835865551f6df46c76282fa4',1,'IRremoteESP8266.h']]],
['haierprotocol_498',['HaierProtocol',['../unionHaierProtocol.html',1,'']]],
['haieryrw02protocol_499',['HaierYRW02Protocol',['../unionHaierYRW02Protocol.html',1,'']]],
['haieryrwo2_500',['haierYrwo2',['../classIRac.html#a7bc779a162dd9a1b4c925febec443353',1,'IRac']]],
['handlespecialstate_501',['handleSpecialState',['../classIRCoolixAC.html#af78090c6d8b45b4202a80f1223640390',1,'IRCoolixAC::handleSpecialState()'],['../classIRTranscoldAc.html#a01a3e3f8f92b8fb3b6d023e595f3ce17',1,'IRTranscoldAc::handleSpecialState()']]],
['handletoggles_502',['handleToggles',['../classIRac.html#a36833999dce4ad608a5a0f084988cfd1',1,'IRac']]],
['hasacstate_503',['hasACState',['../IRutils_8cpp.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol):&#160;IRutils.cpp'],['../IRutils_8h.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol):&#160;IRutils.cpp']]],
['hasinvertedstates_504',['hasInvertedStates',['../classIRHitachiAc3.html#ac06b36245c85480d97c1a9f49cfaa005',1,'IRHitachiAc3']]],
['hasstatechanged_505',['hasStateChanged',['../classIRac.html#a35258c35a2d2b19886292b22b2aa053a',1,'IRac']]],
['header_506',['Header',['../unionMideaProtocol.html#a892508b7b4cade91dd2e315b678f5f1b',1,'MideaProtocol']]],
['header0_507',['Header0',['../structCoronaSection.html#a3b3c0a1a42da65bb4b481e59b42f26a6',1,'CoronaSection']]],
['header1_508',['Header1',['../structCoronaSection.html#a3d6d6c1e31f82a76cd88f81bcdb83a3a',1,'CoronaSection']]],
['health_509',['Health',['../unionHaierProtocol.html#a4cf70c633e33066e3fc0f98bb2ad3820',1,'HaierProtocol::Health()'],['../unionHaierYRW02Protocol.html#a7fa39803fd72a788736bb8f00acfa76f',1,'HaierYRW02Protocol::Health()']]],
['heat_5fmode_510',['heat_mode',['../classIRArgoAC.html#a255762f71502b9ffeb0686759991ec53',1,'IRArgoAC']]],
['hitachi_511',['hitachi',['../classIRac.html#acd0f2fcf03aabf947a19a195000add3c',1,'IRac']]],
['hitachi1_512',['hitachi1',['../classIRac.html#ac8807d62f6ae87af72d44b50bed3f17b',1,'IRac']]],
['hitachi1protocol_513',['Hitachi1Protocol',['../unionHitachi1Protocol.html',1,'']]],
['hitachi344_514',['hitachi344',['../classIRac.html#a0bc34635a1a349816344916a82585460',1,'IRac']]],
['hitachi424_515',['hitachi424',['../classIRac.html#aec6de0752ddd3a3e7c6824cb1b692508',1,'IRac']]],
['hitachi424protocol_516',['Hitachi424Protocol',['../unionHitachi424Protocol.html',1,'']]],
['hitachi_5fac_517',['HITACHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9020fb54ac69d8aec0185f7e80c962ca',1,'IRremoteESP8266.h']]],
['hitachi_5fac1_518',['HITACHI_AC1',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7d9a74161d95e62bece3c0e48900cb35',1,'IRremoteESP8266.h']]],
['hitachi_5fac1_5fremote_5fmodel_5ft_519',['hitachi_ac1_remote_model_t',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49',1,'IRsend.h']]],
['hitachi_5fac2_520',['HITACHI_AC2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab5a44068d519506efa8a3113aa44c9c0',1,'IRremoteESP8266.h']]],
['hitachi_5fac3_521',['HITACHI_AC3',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac3487c47b14da6af922f5b27992b30f3',1,'IRremoteESP8266.h']]],
['hitachi_5fac344_522',['HITACHI_AC344',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1e147eb39adc40e4181940cc2357f070',1,'IRremoteESP8266.h']]],
['hitachi_5fac424_523',['HITACHI_AC424',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada85af068f8964d4359512265d8cc27a31',1,'IRremoteESP8266.h']]],
['hitachiprotocol_524',['HitachiProtocol',['../unionHitachiProtocol.html',1,'']]],
['htmlescape_525',['htmlEscape',['../namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7',1,'irutils']]]
];

View File

@ -1,198 +0,0 @@
var searchData=
[
['i18n_2eh_526',['i18n.h',['../i18n_8h.html',1,'']]],
['ifeel_527',['iFeel',['../unionArgoProtocol.html#a9d51b32b8e2b2ff08339be238a775097',1,'ArgoProtocol::iFeel()'],['../unionGreeProtocol.html#a592364307a4b11064888bda76c403142',1,'GreeProtocol::IFeel()']]],
['inax_528',['INAX',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadafc566aab3afb8face6d8965ca4d0eab7',1,'IRremoteESP8266.h']]],
['irremoteesp8266_20library_20api_20documentation_529',['IRremoteESP8266 Library API Documentation',['../index.html',1,'']]],
['initstate_530',['initState',['../classIRac.html#af1c4ae70e61298c0be8d350d67e7c342',1,'IRac::initState(stdAc::state_t *state, const decode_type_t vendor, const int16_t model, const bool power, const stdAc::opmode_t mode, const float degrees, const bool celsius, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep, const int16_t clock)'],['../classIRac.html#a165b7fdb9b3a02b1fb5ff2c2c3747958',1,'IRac::initState(stdAc::state_t *state)']]],
['invertbits_531',['invertBits',['../IRutils_8cpp.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits):&#160;IRutils.cpp'],['../IRutils_8h.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits):&#160;IRutils.cpp']]],
['invertbytepairs_532',['invertBytePairs',['../namespaceirutils.html#ad818a474349546c84824451a5468f4fe',1,'irutils']]],
['ionfilter_533',['IonFilter',['../unionKelvinatorProtocol.html#ad7c762e410c8cba234614563cdc9d384',1,'KelvinatorProtocol']]],
['ir_5fairwell_2ecpp_534',['ir_Airwell.cpp',['../ir__Airwell_8cpp.html',1,'']]],
['ir_5fairwell_2eh_535',['ir_Airwell.h',['../ir__Airwell_8h.html',1,'']]],
['ir_5faiwa_2ecpp_536',['ir_Aiwa.cpp',['../ir__Aiwa_8cpp.html',1,'']]],
['ir_5famcor_2ecpp_537',['ir_Amcor.cpp',['../ir__Amcor_8cpp.html',1,'']]],
['ir_5famcor_2eh_538',['ir_Amcor.h',['../ir__Amcor_8h.html',1,'']]],
['ir_5fargo_2ecpp_539',['ir_Argo.cpp',['../ir__Argo_8cpp.html',1,'']]],
['ir_5fargo_2eh_540',['ir_Argo.h',['../ir__Argo_8h.html',1,'']]],
['ir_5fcarrier_2ecpp_541',['ir_Carrier.cpp',['../ir__Carrier_8cpp.html',1,'']]],
['ir_5fcarrier_2eh_542',['ir_Carrier.h',['../ir__Carrier_8h.html',1,'']]],
['ir_5fcoolix_2ecpp_543',['ir_Coolix.cpp',['../ir__Coolix_8cpp.html',1,'']]],
['ir_5fcoolix_2eh_544',['ir_Coolix.h',['../ir__Coolix_8h.html',1,'']]],
['ir_5fcorona_2ecpp_545',['ir_Corona.cpp',['../ir__Corona_8cpp.html',1,'']]],
['ir_5fcorona_2eh_546',['ir_Corona.h',['../ir__Corona_8h.html',1,'']]],
['ir_5fdaikin_2ecpp_547',['ir_Daikin.cpp',['../ir__Daikin_8cpp.html',1,'']]],
['ir_5fdaikin_2eh_548',['ir_Daikin.h',['../ir__Daikin_8h.html',1,'']]],
['ir_5fdelonghi_2ecpp_549',['ir_Delonghi.cpp',['../ir__Delonghi_8cpp.html',1,'']]],
['ir_5fdelonghi_2eh_550',['ir_Delonghi.h',['../ir__Delonghi_8h.html',1,'']]],
['ir_5fdenon_2ecpp_551',['ir_Denon.cpp',['../ir__Denon_8cpp.html',1,'']]],
['ir_5fdish_2ecpp_552',['ir_Dish.cpp',['../ir__Dish_8cpp.html',1,'']]],
['ir_5fdoshisha_2ecpp_553',['ir_Doshisha.cpp',['../ir__Doshisha_8cpp.html',1,'']]],
['ir_5felectra_2ecpp_554',['ir_Electra.cpp',['../ir__Electra_8cpp.html',1,'']]],
['ir_5felectra_2eh_555',['ir_Electra.h',['../ir__Electra_8h.html',1,'']]],
['ir_5felitescreens_2ecpp_556',['ir_EliteScreens.cpp',['../ir__EliteScreens_8cpp.html',1,'']]],
['ir_5fepson_2ecpp_557',['ir_Epson.cpp',['../ir__Epson_8cpp.html',1,'']]],
['ir_5ffujitsu_2ecpp_558',['ir_Fujitsu.cpp',['../ir__Fujitsu_8cpp.html',1,'']]],
['ir_5ffujitsu_2eh_559',['ir_Fujitsu.h',['../ir__Fujitsu_8h.html',1,'']]],
['ir_5fgicable_2ecpp_560',['ir_GICable.cpp',['../ir__GICable_8cpp.html',1,'']]],
['ir_5fglobalcache_2ecpp_561',['ir_GlobalCache.cpp',['../ir__GlobalCache_8cpp.html',1,'']]],
['ir_5fgoodweather_2ecpp_562',['ir_Goodweather.cpp',['../ir__Goodweather_8cpp.html',1,'']]],
['ir_5fgoodweather_2eh_563',['ir_Goodweather.h',['../ir__Goodweather_8h.html',1,'']]],
['ir_5fgree_2ecpp_564',['ir_Gree.cpp',['../ir__Gree_8cpp.html',1,'']]],
['ir_5fgree_2eh_565',['ir_Gree.h',['../ir__Gree_8h.html',1,'']]],
['ir_5fhaier_2ecpp_566',['ir_Haier.cpp',['../ir__Haier_8cpp.html',1,'']]],
['ir_5fhaier_2eh_567',['ir_Haier.h',['../ir__Haier_8h.html',1,'']]],
['ir_5fhitachi_2ecpp_568',['ir_Hitachi.cpp',['../ir__Hitachi_8cpp.html',1,'']]],
['ir_5fhitachi_2eh_569',['ir_Hitachi.h',['../ir__Hitachi_8h.html',1,'']]],
['ir_5finax_2ecpp_570',['ir_Inax.cpp',['../ir__Inax_8cpp.html',1,'']]],
['ir_5fjvc_2ecpp_571',['ir_JVC.cpp',['../ir__JVC_8cpp.html',1,'']]],
['ir_5fkelvinator_2ecpp_572',['ir_Kelvinator.cpp',['../ir__Kelvinator_8cpp.html',1,'']]],
['ir_5fkelvinator_2eh_573',['ir_Kelvinator.h',['../ir__Kelvinator_8h.html',1,'']]],
['ir_5flasertag_2ecpp_574',['ir_Lasertag.cpp',['../ir__Lasertag_8cpp.html',1,'']]],
['ir_5flego_2ecpp_575',['ir_Lego.cpp',['../ir__Lego_8cpp.html',1,'']]],
['ir_5flg_2ecpp_576',['ir_LG.cpp',['../ir__LG_8cpp.html',1,'']]],
['ir_5flg_2eh_577',['ir_LG.h',['../ir__LG_8h.html',1,'']]],
['ir_5flutron_2ecpp_578',['ir_Lutron.cpp',['../ir__Lutron_8cpp.html',1,'']]],
['ir_5fmagiquest_2ecpp_579',['ir_Magiquest.cpp',['../ir__Magiquest_8cpp.html',1,'']]],
['ir_5fmagiquest_2eh_580',['ir_Magiquest.h',['../ir__Magiquest_8h.html',1,'']]],
['ir_5fmetz_2ecpp_581',['ir_Metz.cpp',['../ir__Metz_8cpp.html',1,'']]],
['ir_5fmidea_2ecpp_582',['ir_Midea.cpp',['../ir__Midea_8cpp.html',1,'']]],
['ir_5fmidea_2eh_583',['ir_Midea.h',['../ir__Midea_8h.html',1,'']]],
['ir_5fmirage_2ecpp_584',['ir_Mirage.cpp',['../ir__Mirage_8cpp.html',1,'']]],
['ir_5fmitsubishi_2ecpp_585',['ir_Mitsubishi.cpp',['../ir__Mitsubishi_8cpp.html',1,'']]],
['ir_5fmitsubishi_2eh_586',['ir_Mitsubishi.h',['../ir__Mitsubishi_8h.html',1,'']]],
['ir_5fmitsubishiheavy_2ecpp_587',['ir_MitsubishiHeavy.cpp',['../ir__MitsubishiHeavy_8cpp.html',1,'']]],
['ir_5fmitsubishiheavy_2eh_588',['ir_MitsubishiHeavy.h',['../ir__MitsubishiHeavy_8h.html',1,'']]],
['ir_5fmultibrackets_2ecpp_589',['ir_Multibrackets.cpp',['../ir__Multibrackets_8cpp.html',1,'']]],
['ir_5fmwm_2ecpp_590',['ir_MWM.cpp',['../ir__MWM_8cpp.html',1,'']]],
['ir_5fnec_2ecpp_591',['ir_NEC.cpp',['../ir__NEC_8cpp.html',1,'']]],
['ir_5fnec_2eh_592',['ir_NEC.h',['../ir__NEC_8h.html',1,'']]],
['ir_5fneoclima_2ecpp_593',['ir_Neoclima.cpp',['../ir__Neoclima_8cpp.html',1,'']]],
['ir_5fneoclima_2eh_594',['ir_Neoclima.h',['../ir__Neoclima_8h.html',1,'']]],
['ir_5fnikai_2ecpp_595',['ir_Nikai.cpp',['../ir__Nikai_8cpp.html',1,'']]],
['ir_5fpanasonic_2ecpp_596',['ir_Panasonic.cpp',['../ir__Panasonic_8cpp.html',1,'']]],
['ir_5fpanasonic_2eh_597',['ir_Panasonic.h',['../ir__Panasonic_8h.html',1,'']]],
['ir_5fpioneer_2ecpp_598',['ir_Pioneer.cpp',['../ir__Pioneer_8cpp.html',1,'']]],
['ir_5fpronto_2ecpp_599',['ir_Pronto.cpp',['../ir__Pronto_8cpp.html',1,'']]],
['ir_5frc5_5frc6_2ecpp_600',['ir_RC5_RC6.cpp',['../ir__RC5__RC6_8cpp.html',1,'']]],
['ir_5frcmm_2ecpp_601',['ir_RCMM.cpp',['../ir__RCMM_8cpp.html',1,'']]],
['ir_5fsamsung_2ecpp_602',['ir_Samsung.cpp',['../ir__Samsung_8cpp.html',1,'']]],
['ir_5fsamsung_2eh_603',['ir_Samsung.h',['../ir__Samsung_8h.html',1,'']]],
['ir_5fsanyo_2ecpp_604',['ir_Sanyo.cpp',['../ir__Sanyo_8cpp.html',1,'']]],
['ir_5fsanyo_2eh_605',['ir_Sanyo.h',['../ir__Sanyo_8h.html',1,'']]],
['ir_5fsharp_2ecpp_606',['ir_Sharp.cpp',['../ir__Sharp_8cpp.html',1,'']]],
['ir_5fsharp_2eh_607',['ir_Sharp.h',['../ir__Sharp_8h.html',1,'']]],
['ir_5fsherwood_2ecpp_608',['ir_Sherwood.cpp',['../ir__Sherwood_8cpp.html',1,'']]],
['ir_5fsony_2ecpp_609',['ir_Sony.cpp',['../ir__Sony_8cpp.html',1,'']]],
['ir_5fsymphony_2ecpp_610',['ir_Symphony.cpp',['../ir__Symphony_8cpp.html',1,'']]],
['ir_5ftcl_2ecpp_611',['ir_Tcl.cpp',['../ir__Tcl_8cpp.html',1,'']]],
['ir_5ftcl_2eh_612',['ir_Tcl.h',['../ir__Tcl_8h.html',1,'']]],
['ir_5ftechnibel_2ecpp_613',['ir_Technibel.cpp',['../ir__Technibel_8cpp.html',1,'']]],
['ir_5ftechnibel_2eh_614',['ir_Technibel.h',['../ir__Technibel_8h.html',1,'']]],
['ir_5fteco_2ecpp_615',['ir_Teco.cpp',['../ir__Teco_8cpp.html',1,'']]],
['ir_5fteco_2eh_616',['ir_Teco.h',['../ir__Teco_8h.html',1,'']]],
['ir_5ftoshiba_2ecpp_617',['ir_Toshiba.cpp',['../ir__Toshiba_8cpp.html',1,'']]],
['ir_5ftoshiba_2eh_618',['ir_Toshiba.h',['../ir__Toshiba_8h.html',1,'']]],
['ir_5ftranscold_2ecpp_619',['ir_Transcold.cpp',['../ir__Transcold_8cpp.html',1,'']]],
['ir_5ftranscold_2eh_620',['ir_Transcold.h',['../ir__Transcold_8h.html',1,'']]],
['ir_5ftrotec_2ecpp_621',['ir_Trotec.cpp',['../ir__Trotec_8cpp.html',1,'']]],
['ir_5ftrotec_2eh_622',['ir_Trotec.h',['../ir__Trotec_8h.html',1,'']]],
['ir_5fvestel_2ecpp_623',['ir_Vestel.cpp',['../ir__Vestel_8cpp.html',1,'']]],
['ir_5fvestel_2eh_624',['ir_Vestel.h',['../ir__Vestel_8h.html',1,'']]],
['ir_5fvoltas_2ecpp_625',['ir_Voltas.cpp',['../ir__Voltas_8cpp.html',1,'']]],
['ir_5fvoltas_2eh_626',['ir_Voltas.h',['../ir__Voltas_8h.html',1,'']]],
['ir_5fwhirlpool_2ecpp_627',['ir_Whirlpool.cpp',['../ir__Whirlpool_8cpp.html',1,'']]],
['ir_5fwhirlpool_2eh_628',['ir_Whirlpool.h',['../ir__Whirlpool_8h.html',1,'']]],
['ir_5fwhynter_2ecpp_629',['ir_Whynter.cpp',['../ir__Whynter_8cpp.html',1,'']]],
['ir_5fzepeal_2ecpp_630',['ir_Zepeal.cpp',['../ir__Zepeal_8cpp.html',1,'']]],
['irac_631',['IRac',['../classIRac.html',1,'IRac'],['../classIRac.html#abb0864e277d4f6c68a92c2729112a40d',1,'IRac::IRac()']]],
['irac_2ecpp_632',['IRac.cpp',['../IRac_8cpp.html',1,'']]],
['irac_2eh_633',['IRac.h',['../IRac_8h.html',1,'']]],
['iracutils_634',['IRAcUtils',['../namespaceIRAcUtils.html',1,'']]],
['irairwellac_635',['IRAirwellAc',['../classIRAirwellAc.html',1,'IRAirwellAc'],['../classIRAirwellAc.html#a38cfe20bff4522034b16d64df64750e8',1,'IRAirwellAc::IRAirwellAc()']]],
['iramcorac_636',['IRAmcorAc',['../classIRAmcorAc.html',1,'IRAmcorAc'],['../classIRAmcorAc.html#a92db59a33c861dcd3b2960e9711f97c4',1,'IRAmcorAc::IRAmcorAc()']]],
['irargoac_637',['IRArgoAC',['../classIRArgoAC.html',1,'IRArgoAC'],['../classIRArgoAC.html#ad6c2250738397441b8f956d1477b7d70',1,'IRArgoAC::IRArgoAC()']]],
['ircarrierac64_638',['IRCarrierAc64',['../classIRCarrierAc64.html',1,'IRCarrierAc64'],['../classIRCarrierAc64.html#ac225c0f24a0e385a145375ff447ab79b',1,'IRCarrierAc64::IRCarrierAc64()']]],
['ircoolixac_639',['IRCoolixAC',['../classIRCoolixAC.html',1,'IRCoolixAC'],['../classIRCoolixAC.html#a043ad3b74e964e39b111e1fcf9e55f42',1,'IRCoolixAC::IRCoolixAC()']]],
['ircoronaac_640',['IRCoronaAc',['../classIRCoronaAc.html',1,'IRCoronaAc'],['../classIRCoronaAc.html#aa96f1ffce21cdec5b3901ebbb1c63fbb',1,'IRCoronaAc::IRCoronaAc()']]],
['irdaikin128_641',['IRDaikin128',['../classIRDaikin128.html',1,'IRDaikin128'],['../classIRDaikin128.html#aa669739541daf1a2b39ce1cd0424c43b',1,'IRDaikin128::IRDaikin128()']]],
['irdaikin152_642',['IRDaikin152',['../classIRDaikin152.html',1,'IRDaikin152'],['../classIRDaikin152.html#a68dce79bab5890d9aea325a45ef8e4a3',1,'IRDaikin152::IRDaikin152()']]],
['irdaikin160_643',['IRDaikin160',['../classIRDaikin160.html',1,'IRDaikin160'],['../classIRDaikin160.html#a76fb744b041c38abb730bce0538a497a',1,'IRDaikin160::IRDaikin160()']]],
['irdaikin176_644',['IRDaikin176',['../classIRDaikin176.html',1,'IRDaikin176'],['../classIRDaikin176.html#accfe7c3f34351844d12059455f65f312',1,'IRDaikin176::IRDaikin176()']]],
['irdaikin2_645',['IRDaikin2',['../classIRDaikin2.html',1,'IRDaikin2'],['../classIRDaikin2.html#a3ffe908313f162b92e92307578592fca',1,'IRDaikin2::IRDaikin2()']]],
['irdaikin216_646',['IRDaikin216',['../classIRDaikin216.html',1,'IRDaikin216'],['../classIRDaikin216.html#ad802bde79e5ee2d16e3b09fbc8bbe8df',1,'IRDaikin216::IRDaikin216()']]],
['irdaikin64_647',['IRDaikin64',['../classIRDaikin64.html',1,'IRDaikin64'],['../classIRDaikin64.html#a88855df33ce903884b21d2ef4771e94f',1,'IRDaikin64::IRDaikin64()']]],
['irdaikinesp_648',['IRDaikinESP',['../classIRDaikinESP.html',1,'IRDaikinESP'],['../classIRDaikinESP.html#a2652cb45e07e8a4329c16cded9f6ad9a',1,'IRDaikinESP::IRDaikinESP()']]],
['irdelonghiac_649',['IRDelonghiAc',['../classIRDelonghiAc.html',1,'IRDelonghiAc'],['../classIRDelonghiAc.html#aa6f8661cf6baa369a0a5b9d775c392e0',1,'IRDelonghiAc::IRDelonghiAc()']]],
['irelectraac_650',['IRElectraAc',['../classIRElectraAc.html',1,'IRElectraAc'],['../classIRElectraAc.html#a2f56ad22943c3d261b1d2ef88d86e300',1,'IRElectraAc::IRElectraAc()']]],
['irfujitsuac_651',['IRFujitsuAC',['../classIRFujitsuAC.html',1,'IRFujitsuAC'],['../classIRFujitsuAC.html#acdb70f239884507f540b872ba25747ce',1,'IRFujitsuAC::IRFujitsuAC()']]],
['irgoodweatherac_652',['IRGoodweatherAc',['../classIRGoodweatherAc.html',1,'IRGoodweatherAc'],['../classIRGoodweatherAc.html#a681feff1a58125cde97b2d7ed0ba775e',1,'IRGoodweatherAc::IRGoodweatherAc()']]],
['irgreeac_653',['IRGreeAC',['../classIRGreeAC.html',1,'IRGreeAC'],['../classIRGreeAC.html#abf7ead6ebee4bc776f83fb55f6fe6b63',1,'IRGreeAC::IRGreeAC()']]],
['irhaierac_654',['IRHaierAC',['../classIRHaierAC.html',1,'IRHaierAC'],['../classIRHaierAC.html#a0b78060cbd150cd886a409adc2dea49c',1,'IRHaierAC::IRHaierAC()']]],
['irhaieracyrw02_655',['IRHaierACYRW02',['../classIRHaierACYRW02.html',1,'IRHaierACYRW02'],['../classIRHaierACYRW02.html#afd9354c36df33434840bbc5f38d4e7ed',1,'IRHaierACYRW02::IRHaierACYRW02()']]],
['irhitachiac_656',['IRHitachiAc',['../classIRHitachiAc.html',1,'IRHitachiAc'],['../classIRHitachiAc.html#a4c43e95e0cc28339e7162d7090ae16bf',1,'IRHitachiAc::IRHitachiAc()']]],
['irhitachiac1_657',['IRHitachiAc1',['../classIRHitachiAc1.html',1,'IRHitachiAc1'],['../classIRHitachiAc1.html#ac00cfd9a60e08d34f292878de47f622f',1,'IRHitachiAc1::IRHitachiAc1()']]],
['irhitachiac3_658',['IRHitachiAc3',['../classIRHitachiAc3.html',1,'IRHitachiAc3'],['../classIRHitachiAc3.html#adef0e7ad217f078ce418e3aa82b9cb86',1,'IRHitachiAc3::IRHitachiAc3()']]],
['irhitachiac344_659',['IRHitachiAc344',['../classIRHitachiAc344.html',1,'IRHitachiAc344'],['../classIRHitachiAc424.html#a3c885313a79bf8c02bc5eb9f7d80088b',1,'IRHitachiAc424::IRHitachiAc344()'],['../classIRHitachiAc344.html#afbff8a1dd2777880d2d1713d07e1d419',1,'IRHitachiAc344::IRHitachiAc344()']]],
['irhitachiac424_660',['IRHitachiAc424',['../classIRHitachiAc424.html',1,'IRHitachiAc424'],['../classIRHitachiAc424.html#add708c10a56d20621ef65a0ddcc2aac1',1,'IRHitachiAc424::IRHitachiAc424()']]],
['irkelvinatorac_661',['IRKelvinatorAC',['../classIRKelvinatorAC.html',1,'IRKelvinatorAC'],['../classIRKelvinatorAC.html#a111dd384b1898a4fb880a19b6d1b1635',1,'IRKelvinatorAC::IRKelvinatorAC()']]],
['irlgac_662',['IRLgAc',['../classIRLgAc.html',1,'IRLgAc'],['../classIRLgAc.html#a290636496526a9ed2057532649709375',1,'IRLgAc::IRLgAc()']]],
['irmideaac_663',['IRMideaAC',['../classIRMideaAC.html',1,'IRMideaAC'],['../classIRMideaAC.html#a1ef2f532a1e6c6bfe89617d3fd0d9082',1,'IRMideaAC::IRMideaAC()']]],
['irmitsubishi112_664',['IRMitsubishi112',['../classIRMitsubishi112.html',1,'IRMitsubishi112'],['../classIRMitsubishi112.html#adea6f3b7b7619b0bf6da4a94cec9d712',1,'IRMitsubishi112::IRMitsubishi112()']]],
['irmitsubishi136_665',['IRMitsubishi136',['../classIRMitsubishi136.html',1,'IRMitsubishi136'],['../classIRMitsubishi136.html#ad92926b993869d0695f11ddb999b2090',1,'IRMitsubishi136::IRMitsubishi136()']]],
['irmitsubishiac_666',['IRMitsubishiAC',['../classIRMitsubishiAC.html',1,'IRMitsubishiAC'],['../classIRMitsubishiAC.html#a83fabfd9ebed5cef8dd2a18a85fdf4e6',1,'IRMitsubishiAC::IRMitsubishiAC()']]],
['irmitsubishiheavy152ac_667',['IRMitsubishiHeavy152Ac',['../classIRMitsubishiHeavy152Ac.html',1,'IRMitsubishiHeavy152Ac'],['../classIRMitsubishiHeavy152Ac.html#a704e9f96c2d0a07f9ba16a400d9c97aa',1,'IRMitsubishiHeavy152Ac::IRMitsubishiHeavy152Ac()']]],
['irmitsubishiheavy88ac_668',['IRMitsubishiHeavy88Ac',['../classIRMitsubishiHeavy88Ac.html',1,'IRMitsubishiHeavy88Ac'],['../classIRMitsubishiHeavy88Ac.html#aceabecf4a615e807a4636ff5990d77d7',1,'IRMitsubishiHeavy88Ac::IRMitsubishiHeavy88Ac()']]],
['irneoclimaac_669',['IRNeoclimaAc',['../classIRNeoclimaAc.html',1,'IRNeoclimaAc'],['../classIRNeoclimaAc.html#a99ed2962176e5f12f8387fab977c6395',1,'IRNeoclimaAc::IRNeoclimaAc()']]],
['irpanasonicac_670',['IRPanasonicAc',['../classIRPanasonicAc.html',1,'IRPanasonicAc'],['../classIRPanasonicAc.html#ae8b0f4518ee1a913d47a7101b0a11185',1,'IRPanasonicAc::IRPanasonicAc()']]],
['irparams_671',['irparams',['../IRrecv_8cpp.html#a5620be27a7445f25d43dbe3432ed6fd1',1,'IRrecv.cpp']]],
['irparams_5fsave_672',['irparams_save',['../classIRrecv.html#a6fdac84ce51ce119972bf121ccc95aab',1,'IRrecv::irparams_save()'],['../IRrecv_8cpp.html#a96e84ae171529ee954c53e2e938dd998',1,'irparams_save():&#160;IRrecv.cpp']]],
['irparams_5ft_673',['irparams_t',['../structirparams__t.html',1,'']]],
['irpin_674',['IRpin',['../classIRsend.html#ae4a6ea1e72f4861167002d6e7bf17b7c',1,'IRsend']]],
['irrecv_675',['IRrecv',['../classIRrecv.html',1,'IRrecv'],['../classIRrecv.html#a8fe4d26ef1f863db1db9994fed5fc209',1,'IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false, const uint8_t timer_num=kDefaultESP32Timer)'],['../classIRrecv.html#a3bb1bcc1c1a3184294dd35c8f6f758b1',1,'IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false)']]],
['irrecv_2ecpp_676',['IRrecv.cpp',['../IRrecv_8cpp.html',1,'']]],
['irrecv_2eh_677',['IRrecv.h',['../IRrecv_8h.html',1,'']]],
['irremote_5fmux_678',['irremote_mux',['../IRrecv_8cpp.html#ad2612f65707186ef7df0179d3636b4ea',1,'IRrecv.cpp']]],
['irremoteesp8266_2eh_679',['IRremoteESP8266.h',['../IRremoteESP8266_8h.html',1,'']]],
['irsamsungac_680',['IRSamsungAc',['../classIRSamsungAc.html',1,'IRSamsungAc'],['../classIRSamsungAc.html#a0db771b80d7d7a63b5ecb4b25efee609',1,'IRSamsungAc::IRSamsungAc()']]],
['irsanyoac_681',['IRSanyoAc',['../classIRSanyoAc.html',1,'IRSanyoAc'],['../classIRSanyoAc.html#ab7b9a1f1685993b95807f7e48624e4e2',1,'IRSanyoAc::IRSanyoAc()']]],
['irsend_682',['IRsend',['../classIRsend.html',1,'IRsend'],['../classIRsend.html#a792780b7de996c90c86dd7b700eaf271',1,'IRsend::IRsend()']]],
['irsend_2ecpp_683',['IRsend.cpp',['../IRsend_8cpp.html',1,'']]],
['irsend_2eh_684',['IRsend.h',['../IRsend_8h.html',1,'']]],
['irsharpac_685',['IRSharpAc',['../classIRSharpAc.html',1,'IRSharpAc'],['../classIRSharpAc.html#a30b5f8f634a41c943b4e1453d12bc980',1,'IRSharpAc::IRSharpAc()']]],
['irtcl112ac_686',['IRTcl112Ac',['../classIRTcl112Ac.html',1,'IRTcl112Ac'],['../classIRTcl112Ac.html#a061bdfdf4444cb5e06fa90824985c1ec',1,'IRTcl112Ac::IRTcl112Ac()']]],
['irtechnibelac_687',['IRTechnibelAc',['../classIRTechnibelAc.html',1,'IRTechnibelAc'],['../classIRTechnibelAc.html#a799407de348870d5765acf163ab92a75',1,'IRTechnibelAc::IRTechnibelAc()']]],
['irtecoac_688',['IRTecoAc',['../classIRTecoAc.html',1,'IRTecoAc'],['../classIRTecoAc.html#a56e3f31a080bfd565570bf3b165e71d4',1,'IRTecoAc::IRTecoAc()']]],
['irtext_2ecpp_689',['IRtext.cpp',['../IRtext_8cpp.html',1,'']]],
['irtext_2eh_690',['IRtext.h',['../IRtext_8h.html',1,'']]],
['irtimer_691',['IRtimer',['../classIRtimer.html',1,'IRtimer'],['../classIRtimer.html#a09d64d689137ef8ca68973bb9e550e76',1,'IRtimer::IRtimer()']]],
['irtimer_2ecpp_692',['IRtimer.cpp',['../IRtimer_8cpp.html',1,'']]],
['irtimer_2eh_693',['IRtimer.h',['../IRtimer_8h.html',1,'']]],
['irtoshibaac_694',['IRToshibaAC',['../classIRToshibaAC.html',1,'IRToshibaAC'],['../classIRToshibaAC.html#abf2b3db316f7d6acb20c4f7ea2476ec2',1,'IRToshibaAC::IRToshibaAC()']]],
['irtranscoldac_695',['IRTranscoldAc',['../classIRTranscoldAc.html',1,'IRTranscoldAc'],['../classIRTranscoldAc.html#a155278b9e5803aacf69a1ae20ed5b652',1,'IRTranscoldAc::IRTranscoldAc()']]],
['irtrotecesp_696',['IRTrotecESP',['../classIRTrotecESP.html',1,'IRTrotecESP'],['../classIRTrotecESP.html#a1b56b6e55bf133ccab6a482090408ee5',1,'IRTrotecESP::IRTrotecESP()']]],
['irutils_697',['irutils',['../namespaceirutils.html',1,'']]],
['irutils_2ecpp_698',['IRutils.cpp',['../IRutils_8cpp.html',1,'']]],
['irutils_2eh_699',['IRutils.h',['../IRutils_8h.html',1,'']]],
['irvestelac_700',['IRVestelAc',['../classIRVestelAc.html',1,'IRVestelAc'],['../classIRVestelAc.html#af1583ef81331edf112a0d04771c2cbec',1,'IRVestelAc::IRVestelAc()']]],
['irvoltas_701',['IRVoltas',['../classIRVoltas.html',1,'IRVoltas'],['../classIRVoltas.html#a4bfb0c5b16507d330abea2a9147f8332',1,'IRVoltas::IRVoltas()']]],
['irwhirlpoolac_702',['IRWhirlpoolAc',['../classIRWhirlpoolAc.html',1,'IRWhirlpoolAc'],['../classIRWhirlpoolAc.html#a89bc9d440a5f7d04a602d7bc73904bc2',1,'IRWhirlpoolAc::IRWhirlpoolAc()']]],
['iseconotoggle_703',['isEconoToggle',['../classIRMideaAC.html#a227aeed678af6da49b510cb67b02991e',1,'IRMideaAC']]],
['islighttoggle_704',['isLightToggle',['../classIRMideaAC.html#ac0f321a8a38bd2cecf453c6aff9020e6',1,'IRMideaAC']]],
['isofftimeractive_705',['isOffTimerActive',['../classIRVestelAc.html#aa756171e82ed1b43593b81aa3a63b812',1,'IRVestelAc']]],
['isofftimerenabled_706',['isOffTimerEnabled',['../classIRMideaAC.html#a10aa3386a15b46c62083baaca3bcf699',1,'IRMideaAC::isOffTimerEnabled()'],['../classIRPanasonicAc.html#ac8e218b4886d66889734b01232767c8a',1,'IRPanasonicAc::isOffTimerEnabled()'],['../classIRWhirlpoolAc.html#a1bc1366524cf3c7fb426e908a166801f',1,'IRWhirlpoolAc::isOffTimerEnabled()']]],
['isontimeractive_707',['isOnTimerActive',['../classIRVestelAc.html#a67f0e970af50fcf6e01e4cac85c5862a',1,'IRVestelAc']]],
['isontimerenabled_708',['isOnTimerEnabled',['../classIRMideaAC.html#a61f53e462caa1bc8329a6ebadbe47f93',1,'IRMideaAC::isOnTimerEnabled()'],['../classIRPanasonicAc.html#a04cbf8f5063a3892020d383c77abc57c',1,'IRPanasonicAc::isOnTimerEnabled()'],['../classIRWhirlpoolAc.html#aff1b8c2d063b376725a5a77745f6be3a',1,'IRWhirlpoolAc::isOnTimerEnabled()']]],
['ispowerspecial_709',['isPowerSpecial',['../classIRSharpAc.html#a57072f2458897ffb9184769aca10b944',1,'IRSharpAc']]],
['isprotocolsupported_710',['isProtocolSupported',['../classIRac.html#ad9c2fc9d07db70704f78a2d5f7be5b1c',1,'IRac']]],
['isspecialstate_711',['isSpecialState',['../classIRCoolixAC.html#aa9bfc6c78fca87962c9335d60f625322',1,'IRCoolixAC::isSpecialState()'],['../classIRTranscoldAc.html#aed8c20db75d4070e66445fb2b092e2de',1,'IRTranscoldAc::isSpecialState()']]],
['isswingvstep_712',['isSwingVStep',['../classIRMideaAC.html#a360aa29e0f6817709644f6b36abce754',1,'IRMideaAC']]],
['isswingvtoggle_713',['isSwingVToggle',['../classIRMideaAC.html#a5277fa1d077650be0edcf284db50d38b',1,'IRMideaAC']]],
['istimecommand_714',['isTimeCommand',['../classIRVestelAc.html#ae811a07c1a8d82e7068c39b9ca73aaf1',1,'IRVestelAc']]],
['istimeractive_715',['isTimerActive',['../classIRVestelAc.html#a160b73df8e1eda984f9bfbff3df7fa63',1,'IRVestelAc']]],
['istimerenabled_716',['isTimerEnabled',['../classIRWhirlpoolAc.html#a5a713ffed99ab3450257d83e2d6e15ee',1,'IRWhirlpoolAc']]],
['isturbotoggle_717',['isTurboToggle',['../classIRMideaAC.html#ae40e95fbee35ecc00ebff23c0b64e56d',1,'IRMideaAC']]],
['isvalidlgac_718',['isValidLgAc',['../classIRLgAc.html#ad35d47f590ee4bd51bfdf9d911bce242',1,'IRLgAc']]],
['it_2dit_2eh_719',['it-IT.h',['../it-IT_8h.html',1,'']]],
['internationalisation_20_28i18n_29_20_26_20locale_20files_720',['Internationalisation (I18N) &amp; Locale Files',['../md_src_locale_README.html',1,'']]]
];

View File

@ -1,19 +0,0 @@
var searchData=
[
['label_3057',['Label',['../structCoronaSection.html#abc6d0caa713c73244c4bf2f602074d48',1,'CoronaSection']]],
['lasertag_3058',['LASERTAG',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada92eadf4fa6dd16da5b79a2fcbf729894',1,'IRremoteESP8266.h']]],
['ledflag_3059',['ledFlag',['../classIRCoolixAC.html#a03ba5e0a6cb47a7bb054155c2111a69c',1,'IRCoolixAC']]],
['ledoff_3060',['ledOff',['../classIRsend.html#ae71cc5aa99f894785fb4f7abc05841b2',1,'IRsend']]],
['ledon_3061',['ledOn',['../classIRsend.html#a13d804171fa7c14aff4def38c6ffb6c8',1,'IRsend']]],
['legopf_3062',['LEGOPF',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9a31bf5555b17ea7b115a5c2550fc1de',1,'IRremoteESP8266.h']]],
['lg_3063',['lg',['../classIRac.html#afad31ecf9eae573882d53dd6629485fb',1,'IRac::lg()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadadf6c249ac7d923229f9e623eff9a61f4',1,'LG():&#160;IRremoteESP8266.h']]],
['lg2_3064',['LG2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8402547ec0b99b9b0efe97dec65badf9',1,'IRremoteESP8266.h']]],
['lg_5fac_5fremote_5fmodel_5ft_3065',['lg_ac_remote_model_t',['../IRsend_8h.html#a50c54713e16502d280723334879dc83b',1,'IRsend.h']]],
['lgprotocol_3066',['LGProtocol',['../unionLGProtocol.html',1,'']]],
['light_3067',['light',['../structstdAc_1_1state__t.html#a51c3a5c4703ea49b420d70aeb18b6b9b',1,'stdAc::state_t::light()'],['../unionDaikin2Protocol.html#adaf55ec9e1b9ba278c7391d9d797f3ba',1,'Daikin2Protocol::Light()'],['../unionGoodweatherProtocol.html#a845565af7661af0c05290a7ce039f8e2',1,'GoodweatherProtocol::Light()'],['../unionGreeProtocol.html#a72092768725667d3bce381a6e2900c66',1,'GreeProtocol::Light()'],['../unionKelvinatorProtocol.html#a38f5b978fd63fda659f0e0b5f682440e',1,'KelvinatorProtocol::Light()'],['../unionVoltasProtocol.html#a811a0de66771c693831740440aac460c',1,'VoltasProtocol::Light()']]],
['lighttoggle_3068',['LightToggle',['../unionElectraProtocol.html#aa2a5998cafd139e5ce7626edc4782c56',1,'ElectraProtocol']]],
['llword_3069',['llword',['../unionmagiquest.html#ad57fbc75ab289c3e93b94be0b2187d65',1,'magiquest']]],
['lowlevelsanitycheck_3070',['lowLevelSanityCheck',['../namespaceirutils.html#af67b75834051c4aced358b274c1c55a8',1,'irutils']]],
['lutron_3071',['LUTRON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada76cc459b9e26d82ed82cf120272fd8cb',1,'IRremoteESP8266.h']]],
['lword_3072',['lword',['../unionmagiquest.html#ac87102145311831a232002b52fe2d02c',1,'magiquest']]]
];

View File

@ -1,50 +0,0 @@
var searchData=
[
['magiquest_3073',['magiquest',['../unionmagiquest.html',1,'magiquest'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3be750ce1687bc1a92fee05b0c511100',1,'MAGIQUEST():&#160;IRremoteESP8266.h']]],
['magnitude_3074',['magnitude',['../unionmagiquest.html#a8f687419a00322a04aab223dec093d6e',1,'magiquest']]],
['mark_3075',['mark',['../classIRsend.html#a7399389d40bfe24bc062ffca88fc3780',1,'IRsend']]],
['markassent_3076',['markAsSent',['../classIRac.html#ad0e45b13f477e29823b8c138704536c4',1,'IRac']]],
['match_3077',['match',['../classIRrecv.html#a8bc218dae714ab189a3da4fff269cdaa',1,'IRrecv']]],
['match_5fresult_5ft_3078',['match_result_t',['../structmatch__result__t.html',1,'']]],
['matchatleast_3079',['matchAtLeast',['../classIRrecv.html#ae7bfd4ff689c7563c65c4e6e8c58187a',1,'IRrecv']]],
['matchbytes_3080',['matchBytes',['../classIRrecv.html#adc2c9bc4c4e5741cfac7468126bf8ca6',1,'IRrecv']]],
['matchdata_3081',['matchData',['../classIRrecv.html#a5361439cb69b1069553544e486502d2e',1,'IRrecv']]],
['matchgeneric_3082',['matchGeneric',['../classIRrecv.html#ab783f52acc2ff4052313d6947563e4fd',1,'IRrecv::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)'],['../classIRrecv.html#a4448c1658383962d735353352987c9aa',1,'IRrecv::matchGeneric(volatile uint16_t *data_ptr, uint8_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)']]],
['matchgenericconstbittime_3083',['matchGenericConstBitTime',['../classIRrecv.html#a4582d75ef1d11aee35fce86c38dcccf0',1,'IRrecv']]],
['matchmanchester_3084',['matchManchester',['../classIRrecv.html#ade70777ad0e047e11b99b03d8f5e3728',1,'IRrecv']]],
['matchmanchesterdata_3085',['matchManchesterData',['../classIRrecv.html#ab44403411a217eb8ea75271575f8ab83',1,'IRrecv']]],
['matchmark_3086',['matchMark',['../classIRrecv.html#ae78ef12b8194db5d3cb5a2605d29830d',1,'IRrecv']]],
['matchspace_3087',['matchSpace',['../classIRrecv.html#a9fd363e8b2edee2ed3c473349ecc58fc',1,'IRrecv']]],
['max_3088',['Max',['../unionAmcorProtocol.html#a9e0ea99322601af4b09784da2cf21d7e',1,'AmcorProtocol::Max()'],['../unionArgoProtocol.html#ac3edf881406da0b9a253a7536ba3e810',1,'ArgoProtocol::Max()']]],
['metz_3089',['METZ',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa77ca3ee98846eee35bd2995bf2ae25b',1,'IRremoteESP8266.h']]],
['midea_3090',['midea',['../classIRac.html#a11765b1d08c0c02f5e08254bd870dae6',1,'IRac::midea()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1571f3cf72caf1cf23481802b450382a',1,'MIDEA():&#160;IRremoteESP8266.h']]],
['midea24_3091',['MIDEA24',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada59b5ac5c1d354e50932dc0208d9b0b43',1,'IRremoteESP8266.h']]],
['mideaprotocol_3092',['MideaProtocol',['../unionMideaProtocol.html',1,'']]],
['minrepeats_3093',['minRepeats',['../classIRsend.html#ae02772f34180163861b7e4eb3520db2a',1,'IRsend']]],
['minstostring_3094',['minsToString',['../namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f',1,'irutils']]],
['mirage_3095',['MIRAGE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9ab6dd14fa5c7d0d32c60d414c7df36a',1,'IRremoteESP8266.h']]],
['mitsubishi_3096',['mitsubishi',['../classIRac.html#aaa60bcac75dc5dda40c78f8c227b19a3',1,'IRac::mitsubishi()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab98915357fe1cb91de0536136be20d07',1,'MITSUBISHI():&#160;IRremoteESP8266.h']]],
['mitsubishi112_3097',['mitsubishi112',['../classIRac.html#a2438b6e4403d5952adb299083e038e10',1,'IRac::mitsubishi112()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab8e5875a5959b72ca7ff17bccff97c4d',1,'MITSUBISHI112():&#160;IRremoteESP8266.h']]],
['mitsubishi112protocol_3098',['Mitsubishi112Protocol',['../unionMitsubishi112Protocol.html',1,'']]],
['mitsubishi136_3099',['mitsubishi136',['../classIRac.html#aa3033eb835cf3cd313ee2c2f38357e8e',1,'IRac::mitsubishi136()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3c73724a654627a04cc96e280b9630fe',1,'MITSUBISHI136():&#160;IRremoteESP8266.h']]],
['mitsubishi136protocol_3100',['Mitsubishi136Protocol',['../unionMitsubishi136Protocol.html',1,'']]],
['mitsubishi144protocol_3101',['Mitsubishi144Protocol',['../unionMitsubishi144Protocol.html',1,'']]],
['mitsubishi152protocol_3102',['Mitsubishi152Protocol',['../unionMitsubishi152Protocol.html',1,'']]],
['mitsubishi2_3103',['MITSUBISHI2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada66368850d567cbeb3b2c2233cae34cd0',1,'IRremoteESP8266.h']]],
['mitsubishi88protocol_3104',['Mitsubishi88Protocol',['../unionMitsubishi88Protocol.html',1,'']]],
['mitsubishi_5fac_3105',['MITSUBISHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada45198cb83bbf76b320eaa91d09c44b38',1,'IRremoteESP8266.h']]],
['mitsubishi_5fheavy_5f152_3106',['MITSUBISHI_HEAVY_152',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada15c8d1d51d5f9e42fd03638cbdfb7cbf',1,'IRremoteESP8266.h']]],
['mitsubishi_5fheavy_5f88_3107',['MITSUBISHI_HEAVY_88',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad303f6c0494d33354cb7c11af258f663',1,'IRremoteESP8266.h']]],
['mitsubishiheavy152_3108',['mitsubishiHeavy152',['../classIRac.html#a635b89320d878c1e3f270d7146cb9b00',1,'IRac']]],
['mitsubishiheavy88_3109',['mitsubishiHeavy88',['../classIRac.html#af6c9084c5e902f98a03ad0eaf3b9448e',1,'IRac']]],
['mode_3110',['mode',['../structstdAc_1_1state__t.html#ae5e4b17fac2ea36300f796670337d7a7',1,'stdAc::state_t::mode()'],['../unionAirwellProtocol.html#a4a12b674ee9dcdbca592a1c5f3deb43e',1,'AirwellProtocol::Mode()'],['../unionAmcorProtocol.html#a5eca17db0b0ac0a2a46d72eaa4b098f8',1,'AmcorProtocol::Mode()'],['../unionArgoProtocol.html#afac4337c33e8a2b8e12b84890121e00c',1,'ArgoProtocol::Mode()'],['../unionCarrierProtocol.html#a5fed7d2b743b55fb9a95293f026a9c24',1,'CarrierProtocol::Mode()'],['../unionCoolixProtocol.html#a5f2ec6733ba352bd48657adbf4f30985',1,'CoolixProtocol::Mode()'],['../unionCoronaProtocol.html#aad77fd87c02ef022da013116123d3531',1,'CoronaProtocol::Mode()'],['../unionDaikinESPProtocol.html#aefdc3a04bf204c67e206fef9ed3f5437',1,'DaikinESPProtocol::Mode()'],['../unionDaikin2Protocol.html#acfbbd30de1109b5a9785a6b94ec90af0',1,'Daikin2Protocol::Mode()'],['../unionDaikin216Protocol.html#aebf6b168e83ebfac591e388406a30357',1,'Daikin216Protocol::Mode()'],['../unionDaikin160Protocol.html#a7a543fcb3ba65efbb38656d38eed1141',1,'Daikin160Protocol::Mode()'],['../unionDaikin176Protocol.html#a0293203bc447806c08ea522d6eb91495',1,'Daikin176Protocol::Mode()'],['../unionDaikin128Protocol.html#a14769c0405d7bcf2c45671c4c8c915ff',1,'Daikin128Protocol::Mode()'],['../unionDaikin152Protocol.html#af73fd18c8bd261cb38a36f9c8342b4bc',1,'Daikin152Protocol::Mode()'],['../unionDaikin64Protocol.html#a34934dd4432c5e99cdc2a17b6af803b9',1,'Daikin64Protocol::Mode()'],['../unionDelonghiProtocol.html#a41b3aa93923059ec0bc099a592318ff0',1,'DelonghiProtocol::Mode()'],['../unionElectraProtocol.html#a27e64c16e4cefeac55cd12165554e0b0',1,'ElectraProtocol::Mode()'],['../unionGoodweatherProtocol.html#a28863cfa136ed7014d8ca982d38a4539',1,'GoodweatherProtocol::Mode()'],['../unionGreeProtocol.html#aacd25e508a37e0012295a87e712987ce',1,'GreeProtocol::Mode()'],['../unionHaierProtocol.html#aab10d402084329d472e08385cc9645ec',1,'HaierProtocol::Mode()'],['../unionHaierYRW02Protocol.html#a8b9060ce2e0b1e9192191e6ae68277dd',1,'HaierYRW02Protocol::Mode()'],['../unionHitachiProtocol.html#a33a6af1c7bb33cd97361f2602c215ab2',1,'HitachiProtocol::Mode()'],['../unionHitachi424Protocol.html#a6ddbf518e843e9021bbd0463911b4844',1,'Hitachi424Protocol::Mode()'],['../unionHitachi1Protocol.html#a0434892d9ad4acaa36ef10810fb4b8fe',1,'Hitachi1Protocol::Mode()'],['../unionKelvinatorProtocol.html#abd6a849c39d0e7e231a1cf42d32f52e7',1,'KelvinatorProtocol::Mode()'],['../unionLGProtocol.html#adea2990a6e13a31ecb6f8c70c0702543',1,'LGProtocol::Mode()'],['../unionMideaProtocol.html#aa0255e9e1351d594b2e2c8c6f9698e1a',1,'MideaProtocol::Mode()'],['../unionMitsubishi144Protocol.html#aa387b388f300a2098fe9c965e86b9d95',1,'Mitsubishi144Protocol::Mode()'],['../unionMitsubishi136Protocol.html#a4af660641dfa4412b4993f82eb241765',1,'Mitsubishi136Protocol::Mode()'],['../unionMitsubishi112Protocol.html#ae3ff03a52146e8dff59f0755b7d59333',1,'Mitsubishi112Protocol::Mode()'],['../unionMitsubishi152Protocol.html#a36477f5724467a75f32f2d25fee4db73',1,'Mitsubishi152Protocol::Mode()'],['../unionMitsubishi88Protocol.html#a947e25b4cfbb171aeb42d3a60404d751',1,'Mitsubishi88Protocol::Mode()'],['../unionVoltasProtocol.html#ad991a7ccaf9caa0b9f7880f4138f1dab',1,'VoltasProtocol::Mode()']]],
['modebutton_3111',['ModeButton',['../unionDaikin176Protocol.html#af48f77b741bcfa7717497077c50ee240',1,'Daikin176Protocol']]],
['model_3112',['model',['../structstdAc_1_1state__t.html#aa1a57a63b2ea80c1f9c4a1bcf16a4c62',1,'stdAc::state_t::model()'],['../unionHitachi1Protocol.html#aad97f1edb72b8786423089f1dad70681',1,'Hitachi1Protocol::Model()']]],
['modela_3113',['ModelA',['../unionGreeProtocol.html#a66fdedd8318541269f0ab9ae3b832813',1,'GreeProtocol']]],
['modeltostr_3114',['modelToStr',['../namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd',1,'irutils']]],
['modulation_3115',['modulation',['../classIRsend.html#a11e26c03c87e2bed756eb7f318570bd8',1,'IRsend']]],
['mold_3116',['Mold',['../unionDaikinESPProtocol.html#a61c7eeeb3589f775897d79a130dd1be8',1,'DaikinESPProtocol::Mold()'],['../unionDaikin2Protocol.html#a18207f0f0913ade09f16ba2e98a5dbf1',1,'Daikin2Protocol::Mold()']]],
['mstostring_3117',['msToString',['../namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a',1,'irutils']]],
['multibrackets_3118',['MULTIBRACKETS',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaaebb72f3ad9ff2a706d8041763de6e49',1,'IRremoteESP8266.h']]],
['mwm_3119',['MWM',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8a6938c955212e1fb81fb511437cbe56',1,'IRremoteESP8266.h']]]
];

View File

@ -1,6 +0,0 @@
var searchData=
[
['airwellprotocol_3571',['AirwellProtocol',['../unionAirwellProtocol.html',1,'']]],
['amcorprotocol_3572',['AmcorProtocol',['../unionAmcorProtocol.html',1,'']]],
['argoprotocol_3573',['ArgoProtocol',['../unionArgoProtocol.html',1,'']]]
];

View File

@ -1,7 +0,0 @@
var searchData=
[
['carrierprotocol_3574',['CarrierProtocol',['../unionCarrierProtocol.html',1,'']]],
['coolixprotocol_3575',['CoolixProtocol',['../unionCoolixProtocol.html',1,'']]],
['coronaprotocol_3576',['CoronaProtocol',['../unionCoronaProtocol.html',1,'']]],
['coronasection_3577',['CoronaSection',['../structCoronaSection.html',1,'']]]
];

View File

@ -1,13 +0,0 @@
var searchData=
[
['daikin128protocol_3578',['Daikin128Protocol',['../unionDaikin128Protocol.html',1,'']]],
['daikin152protocol_3579',['Daikin152Protocol',['../unionDaikin152Protocol.html',1,'']]],
['daikin160protocol_3580',['Daikin160Protocol',['../unionDaikin160Protocol.html',1,'']]],
['daikin176protocol_3581',['Daikin176Protocol',['../unionDaikin176Protocol.html',1,'']]],
['daikin216protocol_3582',['Daikin216Protocol',['../unionDaikin216Protocol.html',1,'']]],
['daikin2protocol_3583',['Daikin2Protocol',['../unionDaikin2Protocol.html',1,'']]],
['daikin64protocol_3584',['Daikin64Protocol',['../unionDaikin64Protocol.html',1,'']]],
['daikinespprotocol_3585',['DaikinESPProtocol',['../unionDaikinESPProtocol.html',1,'']]],
['decode_5fresults_3586',['decode_results',['../classdecode__results.html',1,'']]],
['delonghiprotocol_3587',['DelonghiProtocol',['../unionDelonghiProtocol.html',1,'']]]
];

View File

@ -1,4 +0,0 @@
var searchData=
[
['electraprotocol_3588',['ElectraProtocol',['../unionElectraProtocol.html',1,'']]]
];

View File

@ -1,5 +0,0 @@
var searchData=
[
['goodweatherprotocol_3589',['GoodweatherProtocol',['../unionGoodweatherProtocol.html',1,'']]],
['greeprotocol_3590',['GreeProtocol',['../unionGreeProtocol.html',1,'']]]
];

View File

@ -1,8 +0,0 @@
var searchData=
[
['haierprotocol_3591',['HaierProtocol',['../unionHaierProtocol.html',1,'']]],
['haieryrw02protocol_3592',['HaierYRW02Protocol',['../unionHaierYRW02Protocol.html',1,'']]],
['hitachi1protocol_3593',['Hitachi1Protocol',['../unionHitachi1Protocol.html',1,'']]],
['hitachi424protocol_3594',['Hitachi424Protocol',['../unionHitachi424Protocol.html',1,'']]],
['hitachiprotocol_3595',['HitachiProtocol',['../unionHitachiProtocol.html',1,'']]]
];

View File

@ -1,56 +0,0 @@
var searchData=
[
['irac_3596',['IRac',['../classIRac.html',1,'']]],
['irairwellac_3597',['IRAirwellAc',['../classIRAirwellAc.html',1,'']]],
['iramcorac_3598',['IRAmcorAc',['../classIRAmcorAc.html',1,'']]],
['irargoac_3599',['IRArgoAC',['../classIRArgoAC.html',1,'']]],
['ircarrierac64_3600',['IRCarrierAc64',['../classIRCarrierAc64.html',1,'']]],
['ircoolixac_3601',['IRCoolixAC',['../classIRCoolixAC.html',1,'']]],
['ircoronaac_3602',['IRCoronaAc',['../classIRCoronaAc.html',1,'']]],
['irdaikin128_3603',['IRDaikin128',['../classIRDaikin128.html',1,'']]],
['irdaikin152_3604',['IRDaikin152',['../classIRDaikin152.html',1,'']]],
['irdaikin160_3605',['IRDaikin160',['../classIRDaikin160.html',1,'']]],
['irdaikin176_3606',['IRDaikin176',['../classIRDaikin176.html',1,'']]],
['irdaikin2_3607',['IRDaikin2',['../classIRDaikin2.html',1,'']]],
['irdaikin216_3608',['IRDaikin216',['../classIRDaikin216.html',1,'']]],
['irdaikin64_3609',['IRDaikin64',['../classIRDaikin64.html',1,'']]],
['irdaikinesp_3610',['IRDaikinESP',['../classIRDaikinESP.html',1,'']]],
['irdelonghiac_3611',['IRDelonghiAc',['../classIRDelonghiAc.html',1,'']]],
['irelectraac_3612',['IRElectraAc',['../classIRElectraAc.html',1,'']]],
['irfujitsuac_3613',['IRFujitsuAC',['../classIRFujitsuAC.html',1,'']]],
['irgoodweatherac_3614',['IRGoodweatherAc',['../classIRGoodweatherAc.html',1,'']]],
['irgreeac_3615',['IRGreeAC',['../classIRGreeAC.html',1,'']]],
['irhaierac_3616',['IRHaierAC',['../classIRHaierAC.html',1,'']]],
['irhaieracyrw02_3617',['IRHaierACYRW02',['../classIRHaierACYRW02.html',1,'']]],
['irhitachiac_3618',['IRHitachiAc',['../classIRHitachiAc.html',1,'']]],
['irhitachiac1_3619',['IRHitachiAc1',['../classIRHitachiAc1.html',1,'']]],
['irhitachiac3_3620',['IRHitachiAc3',['../classIRHitachiAc3.html',1,'']]],
['irhitachiac344_3621',['IRHitachiAc344',['../classIRHitachiAc344.html',1,'']]],
['irhitachiac424_3622',['IRHitachiAc424',['../classIRHitachiAc424.html',1,'']]],
['irkelvinatorac_3623',['IRKelvinatorAC',['../classIRKelvinatorAC.html',1,'']]],
['irlgac_3624',['IRLgAc',['../classIRLgAc.html',1,'']]],
['irmideaac_3625',['IRMideaAC',['../classIRMideaAC.html',1,'']]],
['irmitsubishi112_3626',['IRMitsubishi112',['../classIRMitsubishi112.html',1,'']]],
['irmitsubishi136_3627',['IRMitsubishi136',['../classIRMitsubishi136.html',1,'']]],
['irmitsubishiac_3628',['IRMitsubishiAC',['../classIRMitsubishiAC.html',1,'']]],
['irmitsubishiheavy152ac_3629',['IRMitsubishiHeavy152Ac',['../classIRMitsubishiHeavy152Ac.html',1,'']]],
['irmitsubishiheavy88ac_3630',['IRMitsubishiHeavy88Ac',['../classIRMitsubishiHeavy88Ac.html',1,'']]],
['irneoclimaac_3631',['IRNeoclimaAc',['../classIRNeoclimaAc.html',1,'']]],
['irpanasonicac_3632',['IRPanasonicAc',['../classIRPanasonicAc.html',1,'']]],
['irparams_5ft_3633',['irparams_t',['../structirparams__t.html',1,'']]],
['irrecv_3634',['IRrecv',['../classIRrecv.html',1,'']]],
['irsamsungac_3635',['IRSamsungAc',['../classIRSamsungAc.html',1,'']]],
['irsanyoac_3636',['IRSanyoAc',['../classIRSanyoAc.html',1,'']]],
['irsend_3637',['IRsend',['../classIRsend.html',1,'']]],
['irsharpac_3638',['IRSharpAc',['../classIRSharpAc.html',1,'']]],
['irtcl112ac_3639',['IRTcl112Ac',['../classIRTcl112Ac.html',1,'']]],
['irtechnibelac_3640',['IRTechnibelAc',['../classIRTechnibelAc.html',1,'']]],
['irtecoac_3641',['IRTecoAc',['../classIRTecoAc.html',1,'']]],
['irtimer_3642',['IRtimer',['../classIRtimer.html',1,'']]],
['irtoshibaac_3643',['IRToshibaAC',['../classIRToshibaAC.html',1,'']]],
['irtranscoldac_3644',['IRTranscoldAc',['../classIRTranscoldAc.html',1,'']]],
['irtrotecesp_3645',['IRTrotecESP',['../classIRTrotecESP.html',1,'']]],
['irvestelac_3646',['IRVestelAc',['../classIRVestelAc.html',1,'']]],
['irvoltas_3647',['IRVoltas',['../classIRVoltas.html',1,'']]],
['irwhirlpoolac_3648',['IRWhirlpoolAc',['../classIRWhirlpoolAc.html',1,'']]]
];

View File

@ -1,4 +0,0 @@
var searchData=
[
['kelvinatorprotocol_3649',['KelvinatorProtocol',['../unionKelvinatorProtocol.html',1,'']]]
];

View File

@ -1,4 +0,0 @@
var searchData=
[
['lgprotocol_3650',['LGProtocol',['../unionLGProtocol.html',1,'']]]
];

View File

@ -1,11 +0,0 @@
var searchData=
[
['magiquest_3651',['magiquest',['../unionmagiquest.html',1,'']]],
['match_5fresult_5ft_3652',['match_result_t',['../structmatch__result__t.html',1,'']]],
['mideaprotocol_3653',['MideaProtocol',['../unionMideaProtocol.html',1,'']]],
['mitsubishi112protocol_3654',['Mitsubishi112Protocol',['../unionMitsubishi112Protocol.html',1,'']]],
['mitsubishi136protocol_3655',['Mitsubishi136Protocol',['../unionMitsubishi136Protocol.html',1,'']]],
['mitsubishi144protocol_3656',['Mitsubishi144Protocol',['../unionMitsubishi144Protocol.html',1,'']]],
['mitsubishi152protocol_3657',['Mitsubishi152Protocol',['../unionMitsubishi152Protocol.html',1,'']]],
['mitsubishi88protocol_3658',['Mitsubishi88Protocol',['../unionMitsubishi88Protocol.html',1,'']]]
];

View File

@ -1,4 +0,0 @@
var searchData=
[
['state_5ft_3659',['state_t',['../structstdAc_1_1state__t.html',1,'stdAc']]]
];

View File

@ -1,4 +0,0 @@
var searchData=
[
['timerms_3660',['TimerMs',['../classTimerMs.html',1,'']]]
];

View File

@ -1,4 +0,0 @@
var searchData=
[
['voltasprotocol_3661',['VoltasProtocol',['../unionVoltasProtocol.html',1,'']]]
];

View File

@ -1,4 +0,0 @@
var searchData=
[
['opmode_5ft_7071',['opmode_t',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f',1,'stdAc']]]
];

View File

@ -1,6 +0,0 @@
var searchData=
[
['sharp_5fac_5fremote_5fmodel_5ft_7073',['sharp_ac_remote_model_t',['../IRsend_8h.html#a258e4af12642d613587149fa734e45e7',1,'IRsend.h']]],
['swingh_5ft_7074',['swingh_t',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147',1,'stdAc']]],
['swingv_5ft_7075',['swingv_t',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43',1,'stdAc']]]
];

View File

@ -1,7 +0,0 @@
var searchData=
[
['de_2dch_2eh_3665',['de-CH.h',['../de-CH_8h.html',1,'']]],
['de_2dde_2eh_3666',['de-DE.h',['../de-DE_8h.html',1,'']]],
['defaults_2eh_3667',['defaults.h',['../defaults_8h.html',1,'']]],
['doxygen_5findex_2emd_3668',['doxygen_index.md',['../doxygen__index_8md.html',1,'']]]
];

View File

@ -1,8 +0,0 @@
var searchData=
[
['en_2dau_2eh_3669',['en-AU.h',['../en-AU_8h.html',1,'']]],
['en_2die_2eh_3670',['en-IE.h',['../en-IE_8h.html',1,'']]],
['en_2duk_2eh_3671',['en-UK.h',['../en-UK_8h.html',1,'']]],
['en_2dus_2eh_3672',['en-US.h',['../en-US_8h.html',1,'']]],
['es_2des_2eh_3673',['es-ES.h',['../es-ES_8h.html',1,'']]]
];

View File

@ -1,4 +0,0 @@
var searchData=
[
['fr_2dfr_2eh_3674',['fr-FR.h',['../fr-FR_8h.html',1,'']]]
];

View File

@ -1,115 +0,0 @@
var searchData=
[
['i18n_2eh_3675',['i18n.h',['../i18n_8h.html',1,'']]],
['ir_5fairwell_2ecpp_3676',['ir_Airwell.cpp',['../ir__Airwell_8cpp.html',1,'']]],
['ir_5fairwell_2eh_3677',['ir_Airwell.h',['../ir__Airwell_8h.html',1,'']]],
['ir_5faiwa_2ecpp_3678',['ir_Aiwa.cpp',['../ir__Aiwa_8cpp.html',1,'']]],
['ir_5famcor_2ecpp_3679',['ir_Amcor.cpp',['../ir__Amcor_8cpp.html',1,'']]],
['ir_5famcor_2eh_3680',['ir_Amcor.h',['../ir__Amcor_8h.html',1,'']]],
['ir_5fargo_2ecpp_3681',['ir_Argo.cpp',['../ir__Argo_8cpp.html',1,'']]],
['ir_5fargo_2eh_3682',['ir_Argo.h',['../ir__Argo_8h.html',1,'']]],
['ir_5fcarrier_2ecpp_3683',['ir_Carrier.cpp',['../ir__Carrier_8cpp.html',1,'']]],
['ir_5fcarrier_2eh_3684',['ir_Carrier.h',['../ir__Carrier_8h.html',1,'']]],
['ir_5fcoolix_2ecpp_3685',['ir_Coolix.cpp',['../ir__Coolix_8cpp.html',1,'']]],
['ir_5fcoolix_2eh_3686',['ir_Coolix.h',['../ir__Coolix_8h.html',1,'']]],
['ir_5fcorona_2ecpp_3687',['ir_Corona.cpp',['../ir__Corona_8cpp.html',1,'']]],
['ir_5fcorona_2eh_3688',['ir_Corona.h',['../ir__Corona_8h.html',1,'']]],
['ir_5fdaikin_2ecpp_3689',['ir_Daikin.cpp',['../ir__Daikin_8cpp.html',1,'']]],
['ir_5fdaikin_2eh_3690',['ir_Daikin.h',['../ir__Daikin_8h.html',1,'']]],
['ir_5fdelonghi_2ecpp_3691',['ir_Delonghi.cpp',['../ir__Delonghi_8cpp.html',1,'']]],
['ir_5fdelonghi_2eh_3692',['ir_Delonghi.h',['../ir__Delonghi_8h.html',1,'']]],
['ir_5fdenon_2ecpp_3693',['ir_Denon.cpp',['../ir__Denon_8cpp.html',1,'']]],
['ir_5fdish_2ecpp_3694',['ir_Dish.cpp',['../ir__Dish_8cpp.html',1,'']]],
['ir_5fdoshisha_2ecpp_3695',['ir_Doshisha.cpp',['../ir__Doshisha_8cpp.html',1,'']]],
['ir_5felectra_2ecpp_3696',['ir_Electra.cpp',['../ir__Electra_8cpp.html',1,'']]],
['ir_5felectra_2eh_3697',['ir_Electra.h',['../ir__Electra_8h.html',1,'']]],
['ir_5felitescreens_2ecpp_3698',['ir_EliteScreens.cpp',['../ir__EliteScreens_8cpp.html',1,'']]],
['ir_5fepson_2ecpp_3699',['ir_Epson.cpp',['../ir__Epson_8cpp.html',1,'']]],
['ir_5ffujitsu_2ecpp_3700',['ir_Fujitsu.cpp',['../ir__Fujitsu_8cpp.html',1,'']]],
['ir_5ffujitsu_2eh_3701',['ir_Fujitsu.h',['../ir__Fujitsu_8h.html',1,'']]],
['ir_5fgicable_2ecpp_3702',['ir_GICable.cpp',['../ir__GICable_8cpp.html',1,'']]],
['ir_5fglobalcache_2ecpp_3703',['ir_GlobalCache.cpp',['../ir__GlobalCache_8cpp.html',1,'']]],
['ir_5fgoodweather_2ecpp_3704',['ir_Goodweather.cpp',['../ir__Goodweather_8cpp.html',1,'']]],
['ir_5fgoodweather_2eh_3705',['ir_Goodweather.h',['../ir__Goodweather_8h.html',1,'']]],
['ir_5fgree_2ecpp_3706',['ir_Gree.cpp',['../ir__Gree_8cpp.html',1,'']]],
['ir_5fgree_2eh_3707',['ir_Gree.h',['../ir__Gree_8h.html',1,'']]],
['ir_5fhaier_2ecpp_3708',['ir_Haier.cpp',['../ir__Haier_8cpp.html',1,'']]],
['ir_5fhaier_2eh_3709',['ir_Haier.h',['../ir__Haier_8h.html',1,'']]],
['ir_5fhitachi_2ecpp_3710',['ir_Hitachi.cpp',['../ir__Hitachi_8cpp.html',1,'']]],
['ir_5fhitachi_2eh_3711',['ir_Hitachi.h',['../ir__Hitachi_8h.html',1,'']]],
['ir_5finax_2ecpp_3712',['ir_Inax.cpp',['../ir__Inax_8cpp.html',1,'']]],
['ir_5fjvc_2ecpp_3713',['ir_JVC.cpp',['../ir__JVC_8cpp.html',1,'']]],
['ir_5fkelvinator_2ecpp_3714',['ir_Kelvinator.cpp',['../ir__Kelvinator_8cpp.html',1,'']]],
['ir_5fkelvinator_2eh_3715',['ir_Kelvinator.h',['../ir__Kelvinator_8h.html',1,'']]],
['ir_5flasertag_2ecpp_3716',['ir_Lasertag.cpp',['../ir__Lasertag_8cpp.html',1,'']]],
['ir_5flego_2ecpp_3717',['ir_Lego.cpp',['../ir__Lego_8cpp.html',1,'']]],
['ir_5flg_2ecpp_3718',['ir_LG.cpp',['../ir__LG_8cpp.html',1,'']]],
['ir_5flg_2eh_3719',['ir_LG.h',['../ir__LG_8h.html',1,'']]],
['ir_5flutron_2ecpp_3720',['ir_Lutron.cpp',['../ir__Lutron_8cpp.html',1,'']]],
['ir_5fmagiquest_2ecpp_3721',['ir_Magiquest.cpp',['../ir__Magiquest_8cpp.html',1,'']]],
['ir_5fmagiquest_2eh_3722',['ir_Magiquest.h',['../ir__Magiquest_8h.html',1,'']]],
['ir_5fmetz_2ecpp_3723',['ir_Metz.cpp',['../ir__Metz_8cpp.html',1,'']]],
['ir_5fmidea_2ecpp_3724',['ir_Midea.cpp',['../ir__Midea_8cpp.html',1,'']]],
['ir_5fmidea_2eh_3725',['ir_Midea.h',['../ir__Midea_8h.html',1,'']]],
['ir_5fmirage_2ecpp_3726',['ir_Mirage.cpp',['../ir__Mirage_8cpp.html',1,'']]],
['ir_5fmitsubishi_2ecpp_3727',['ir_Mitsubishi.cpp',['../ir__Mitsubishi_8cpp.html',1,'']]],
['ir_5fmitsubishi_2eh_3728',['ir_Mitsubishi.h',['../ir__Mitsubishi_8h.html',1,'']]],
['ir_5fmitsubishiheavy_2ecpp_3729',['ir_MitsubishiHeavy.cpp',['../ir__MitsubishiHeavy_8cpp.html',1,'']]],
['ir_5fmitsubishiheavy_2eh_3730',['ir_MitsubishiHeavy.h',['../ir__MitsubishiHeavy_8h.html',1,'']]],
['ir_5fmultibrackets_2ecpp_3731',['ir_Multibrackets.cpp',['../ir__Multibrackets_8cpp.html',1,'']]],
['ir_5fmwm_2ecpp_3732',['ir_MWM.cpp',['../ir__MWM_8cpp.html',1,'']]],
['ir_5fnec_2ecpp_3733',['ir_NEC.cpp',['../ir__NEC_8cpp.html',1,'']]],
['ir_5fnec_2eh_3734',['ir_NEC.h',['../ir__NEC_8h.html',1,'']]],
['ir_5fneoclima_2ecpp_3735',['ir_Neoclima.cpp',['../ir__Neoclima_8cpp.html',1,'']]],
['ir_5fneoclima_2eh_3736',['ir_Neoclima.h',['../ir__Neoclima_8h.html',1,'']]],
['ir_5fnikai_2ecpp_3737',['ir_Nikai.cpp',['../ir__Nikai_8cpp.html',1,'']]],
['ir_5fpanasonic_2ecpp_3738',['ir_Panasonic.cpp',['../ir__Panasonic_8cpp.html',1,'']]],
['ir_5fpanasonic_2eh_3739',['ir_Panasonic.h',['../ir__Panasonic_8h.html',1,'']]],
['ir_5fpioneer_2ecpp_3740',['ir_Pioneer.cpp',['../ir__Pioneer_8cpp.html',1,'']]],
['ir_5fpronto_2ecpp_3741',['ir_Pronto.cpp',['../ir__Pronto_8cpp.html',1,'']]],
['ir_5frc5_5frc6_2ecpp_3742',['ir_RC5_RC6.cpp',['../ir__RC5__RC6_8cpp.html',1,'']]],
['ir_5frcmm_2ecpp_3743',['ir_RCMM.cpp',['../ir__RCMM_8cpp.html',1,'']]],
['ir_5fsamsung_2ecpp_3744',['ir_Samsung.cpp',['../ir__Samsung_8cpp.html',1,'']]],
['ir_5fsamsung_2eh_3745',['ir_Samsung.h',['../ir__Samsung_8h.html',1,'']]],
['ir_5fsanyo_2ecpp_3746',['ir_Sanyo.cpp',['../ir__Sanyo_8cpp.html',1,'']]],
['ir_5fsanyo_2eh_3747',['ir_Sanyo.h',['../ir__Sanyo_8h.html',1,'']]],
['ir_5fsharp_2ecpp_3748',['ir_Sharp.cpp',['../ir__Sharp_8cpp.html',1,'']]],
['ir_5fsharp_2eh_3749',['ir_Sharp.h',['../ir__Sharp_8h.html',1,'']]],
['ir_5fsherwood_2ecpp_3750',['ir_Sherwood.cpp',['../ir__Sherwood_8cpp.html',1,'']]],
['ir_5fsony_2ecpp_3751',['ir_Sony.cpp',['../ir__Sony_8cpp.html',1,'']]],
['ir_5fsymphony_2ecpp_3752',['ir_Symphony.cpp',['../ir__Symphony_8cpp.html',1,'']]],
['ir_5ftcl_2ecpp_3753',['ir_Tcl.cpp',['../ir__Tcl_8cpp.html',1,'']]],
['ir_5ftcl_2eh_3754',['ir_Tcl.h',['../ir__Tcl_8h.html',1,'']]],
['ir_5ftechnibel_2ecpp_3755',['ir_Technibel.cpp',['../ir__Technibel_8cpp.html',1,'']]],
['ir_5ftechnibel_2eh_3756',['ir_Technibel.h',['../ir__Technibel_8h.html',1,'']]],
['ir_5fteco_2ecpp_3757',['ir_Teco.cpp',['../ir__Teco_8cpp.html',1,'']]],
['ir_5fteco_2eh_3758',['ir_Teco.h',['../ir__Teco_8h.html',1,'']]],
['ir_5ftoshiba_2ecpp_3759',['ir_Toshiba.cpp',['../ir__Toshiba_8cpp.html',1,'']]],
['ir_5ftoshiba_2eh_3760',['ir_Toshiba.h',['../ir__Toshiba_8h.html',1,'']]],
['ir_5ftranscold_2ecpp_3761',['ir_Transcold.cpp',['../ir__Transcold_8cpp.html',1,'']]],
['ir_5ftranscold_2eh_3762',['ir_Transcold.h',['../ir__Transcold_8h.html',1,'']]],
['ir_5ftrotec_2ecpp_3763',['ir_Trotec.cpp',['../ir__Trotec_8cpp.html',1,'']]],
['ir_5ftrotec_2eh_3764',['ir_Trotec.h',['../ir__Trotec_8h.html',1,'']]],
['ir_5fvestel_2ecpp_3765',['ir_Vestel.cpp',['../ir__Vestel_8cpp.html',1,'']]],
['ir_5fvestel_2eh_3766',['ir_Vestel.h',['../ir__Vestel_8h.html',1,'']]],
['ir_5fvoltas_2ecpp_3767',['ir_Voltas.cpp',['../ir__Voltas_8cpp.html',1,'']]],
['ir_5fvoltas_2eh_3768',['ir_Voltas.h',['../ir__Voltas_8h.html',1,'']]],
['ir_5fwhirlpool_2ecpp_3769',['ir_Whirlpool.cpp',['../ir__Whirlpool_8cpp.html',1,'']]],
['ir_5fwhirlpool_2eh_3770',['ir_Whirlpool.h',['../ir__Whirlpool_8h.html',1,'']]],
['ir_5fwhynter_2ecpp_3771',['ir_Whynter.cpp',['../ir__Whynter_8cpp.html',1,'']]],
['ir_5fzepeal_2ecpp_3772',['ir_Zepeal.cpp',['../ir__Zepeal_8cpp.html',1,'']]],
['irac_2ecpp_3773',['IRac.cpp',['../IRac_8cpp.html',1,'']]],
['irac_2eh_3774',['IRac.h',['../IRac_8h.html',1,'']]],
['irrecv_2ecpp_3775',['IRrecv.cpp',['../IRrecv_8cpp.html',1,'']]],
['irrecv_2eh_3776',['IRrecv.h',['../IRrecv_8h.html',1,'']]],
['irremoteesp8266_2eh_3777',['IRremoteESP8266.h',['../IRremoteESP8266_8h.html',1,'']]],
['irsend_2ecpp_3778',['IRsend.cpp',['../IRsend_8cpp.html',1,'']]],
['irsend_2eh_3779',['IRsend.h',['../IRsend_8h.html',1,'']]],
['irtext_2ecpp_3780',['IRtext.cpp',['../IRtext_8cpp.html',1,'']]],
['irtext_2eh_3781',['IRtext.h',['../IRtext_8h.html',1,'']]],
['irtimer_2ecpp_3782',['IRtimer.cpp',['../IRtimer_8cpp.html',1,'']]],
['irtimer_2eh_3783',['IRtimer.h',['../IRtimer_8h.html',1,'']]],
['irutils_2ecpp_3784',['IRutils.cpp',['../IRutils_8cpp.html',1,'']]],
['irutils_2eh_3785',['IRutils.h',['../IRutils_8h.html',1,'']]],
['it_2dit_2eh_3786',['it-IT.h',['../it-IT_8h.html',1,'']]]
];

View File

@ -1,4 +0,0 @@
var searchData=
[
['pt_2dbr_2eh_3787',['pt-BR.h',['../pt-BR_8h.html',1,'']]]
];

View File

@ -1,4 +0,0 @@
var searchData=
[
['readme_2emd_3788',['README.md',['../README_8md.html',1,'']]]
];

View File

@ -1,4 +0,0 @@
var searchData=
[
['zh_2dcn_2eh_3789',['zh-CN.h',['../zh-CN_8h.html',1,'']]]
];

View File

@ -1,21 +0,0 @@
var searchData=
[
['_5fbackupstate_3790',['_backupState',['../classIRToshibaAC.html#a108c23cb859a64228166e5385295a1e5',1,'IRToshibaAC']]],
['_5fcancelofftimer_3791',['_cancelOffTimer',['../classIRCarrierAc64.html#a4a0fdf34836b1c954b27c9b242324679',1,'IRCarrierAc64']]],
['_5fcancelontimer_3792',['_cancelOnTimer',['../classIRCarrierAc64.html#a43e7be5a1a6fe2dbfe245e99d2205779',1,'IRCarrierAc64']]],
['_5fdelaymicroseconds_3793',['_delayMicroseconds',['../classIRsend.html#a61ceb32aa53f538b93377b10e58b45c9',1,'IRsend']]],
['_5fgeteconotoggle_3794',['_getEconoToggle',['../classIRSharpAc.html#aa34bac2a54091508fc059c46c98cc255',1,'IRSharpAc']]],
['_5fgettemp_3795',['_getTemp',['../classIRSanyoAc.html#a958a4d66a2e17dccefaedad45787355e',1,'IRSanyoAc']]],
['_5fgettime_3796',['_getTime',['../classIRPanasonicAc.html#ab0a592b759daf90be548ac69ae99f40f',1,'IRPanasonicAc']]],
['_5fgettimer_3797',['_getTimer',['../classIRCoronaAc.html#a352fedb1c80549d2b580e538d8ba7901',1,'IRCoronaAc::_getTimer()'],['../classIRVestelAc.html#ad3f095d248ad3c84a777ed9f2d3b001e',1,'IRVestelAc::_getTimer()']]],
['_5fmatchgeneric_3798',['_matchGeneric',['../classIRrecv.html#af0b300fe6fdff58324525e8208be3024',1,'IRrecv']]],
['_5frestorestate_3799',['_restoreState',['../classIRToshibaAC.html#a23fb190770159f8f1e9bf64df22e8a26',1,'IRToshibaAC']]],
['_5fsendsony_3800',['_sendSony',['../classIRsend.html#a21352b4499f976872a74bae36ea10338',1,'IRsend']]],
['_5fseteconotoggle_3801',['_setEconoToggle',['../classIRSharpAc.html#a959d422c7e5a5204909b299a5fbb2a69',1,'IRSharpAc']]],
['_5fsetmode_3802',['_setMode',['../classIRWhirlpoolAc.html#a60fd8da35d6e0137711e114a5307d664',1,'IRWhirlpoolAc']]],
['_5fsettemp_3803',['_setTemp',['../classIRLgAc.html#a39aca9861608211c8e74c89a7ccc97cd',1,'IRLgAc::_setTemp()'],['../classIRSanyoAc.html#a4c8c0606f6bb82b0c55b179c9f4a7bda',1,'IRSanyoAc::_setTemp()'],['../classIRWhirlpoolAc.html#abb221e09077efd96304f84e8ca130458',1,'IRWhirlpoolAc::_setTemp()']]],
['_5fsettime_3804',['_setTime',['../classIRPanasonicAc.html#a51e306dd7a3e4d580ed5396fcd166141',1,'IRPanasonicAc']]],
['_5fsettimer_3805',['_setTimer',['../classIRCoronaAc.html#a0ea9319987de7cb7f3dcb9fbefb60a2c',1,'IRCoronaAc::_setTimer()'],['../classIRVestelAc.html#a726178a16458c84d031aec07355d0dd2',1,'IRVestelAc::_setTimer()']]],
['_5ftostring_3806',['_toString',['../classIRHitachiAc424.html#af8ff90fe9beb31d8f44310a9e646a230',1,'IRHitachiAc424']]],
['_5fvalidtolerance_3807',['_validTolerance',['../classIRrecv.html#a0b4221970de0d027b5ae99648fa1c003',1,'IRrecv']]]
];

View File

@ -1,15 +0,0 @@
var searchData=
[
['add_3808',['add',['../classIRtimer.html#aa8e3ff975ae5468b4727790c828fa032',1,'IRtimer::add()'],['../classTimerMs.html#a77bfc23a029a9172c3dbac03f746b0cb',1,'TimerMs::add()']]],
['addbooltostring_3809',['addBoolToString',['../namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b',1,'irutils']]],
['adddaytostring_3810',['addDayToString',['../namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f',1,'irutils']]],
['addfantostring_3811',['addFanToString',['../namespaceirutils.html#ae023bbabc452173d348c14eac7d86ab4',1,'irutils']]],
['addinttostring_3812',['addIntToString',['../namespaceirutils.html#a772e623c4b60208200e02afbaec66651',1,'irutils']]],
['addlabeledstring_3813',['addLabeledString',['../namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b',1,'irutils']]],
['addmodeltostring_3814',['addModelToString',['../namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367',1,'irutils']]],
['addmodetostring_3815',['addModeToString',['../namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e',1,'irutils']]],
['addtemptostring_3816',['addTempToString',['../namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85',1,'irutils']]],
['airwell_3817',['airwell',['../classIRac.html#a26cd62e09250d87b652d35406ebfb159',1,'IRac']]],
['amcor_3818',['amcor',['../classIRac.html#a4bad16621b232572e14fe4a53f678131',1,'IRac']]],
['argo_3819',['argo',['../classIRac.html#aa06ee1314529dbf96f4e6f3c28ea6821',1,'IRac']]]
];

View File

@ -1,4 +0,0 @@
var searchData=
[
['whirlpool_4493',['whirlpool',['../classIRac.html#ae5f7a03589f614c03c5ad8629100b05a',1,'IRac']]]
];

View File

@ -1,4 +0,0 @@
var searchData=
[
['_7eirrecv_4495',['~IRrecv',['../classIRrecv.html#a87d4cca5e350177cb0922842dda1eb5b',1,'IRrecv']]]
];

View File

@ -1,103 +0,0 @@
var searchData=
[
['daikin_3858',['daikin',['../classIRac.html#afb6d77bbeb5b2465437cef4f58b83e0e',1,'IRac']]],
['daikin128_3859',['daikin128',['../classIRac.html#a8fe7c254e1bcb32b6b6fdc1f91693a50',1,'IRac']]],
['daikin152_3860',['daikin152',['../classIRac.html#a6dff8e608e3e9fecffe71c3fd1ebe74e',1,'IRac']]],
['daikin160_3861',['daikin160',['../classIRac.html#a3b34f44d713efa52f30d43405cde831c',1,'IRac']]],
['daikin176_3862',['daikin176',['../classIRac.html#aaae173fd58a7b53c3f4d2edbf7c4afe7',1,'IRac']]],
['daikin2_3863',['daikin2',['../classIRac.html#a89eddc0e1b3c41c608208d2752dc954c',1,'IRac']]],
['daikin216_3864',['daikin216',['../classIRac.html#a101ac8b9e9564e557ef1a1f61ff111d9',1,'IRac']]],
['daikin64_3865',['daikin64',['../classIRac.html#a074db6fc0cff2878d80a397020e1b249',1,'IRac']]],
['decode_3866',['decode',['../classIRrecv.html#aeaa5c07a8b46f8fbb982f996cc1f9f4b',1,'IRrecv']]],
['decodeairwell_3867',['decodeAirwell',['../classIRrecv.html#acf4635d5ee146a82498cb0c269b6af41',1,'IRrecv']]],
['decodeaiwarct501_3868',['decodeAiwaRCT501',['../classIRrecv.html#aa4d678376a4c0f8ea953474a6f5ef9d2',1,'IRrecv']]],
['decodeamcor_3869',['decodeAmcor',['../classIRrecv.html#a8d81fcfb47e36925975d313027689a44',1,'IRrecv']]],
['decodeargo_3870',['decodeArgo',['../classIRrecv.html#a94f12dc000a6e7b75ea8680fd48fc487',1,'IRrecv']]],
['decodecarrierac_3871',['decodeCarrierAC',['../classIRrecv.html#acf3d1c37038120a5c0996d92577ce74a',1,'IRrecv']]],
['decodecarrierac40_3872',['decodeCarrierAC40',['../classIRrecv.html#a4bdb35ec34f49401a6b9becd15b8a3b5',1,'IRrecv']]],
['decodecarrierac64_3873',['decodeCarrierAC64',['../classIRrecv.html#a79d03c31da48a385ab47cc8f342ef9b3',1,'IRrecv']]],
['decodecoolix_3874',['decodeCOOLIX',['../classIRrecv.html#a964af7e72e2133688f0596c718cb98ca',1,'IRrecv']]],
['decodecoronaac_3875',['decodeCoronaAc',['../classIRrecv.html#a981cba14551c93af57f9c1c0e1775d12',1,'IRrecv']]],
['decodedaikin_3876',['decodeDaikin',['../classIRrecv.html#a141f0de9f4cae8daeb025aff3904ecaa',1,'IRrecv']]],
['decodedaikin128_3877',['decodeDaikin128',['../classIRrecv.html#ac7188577c874d9f8f19304a3ec775415',1,'IRrecv']]],
['decodedaikin152_3878',['decodeDaikin152',['../classIRrecv.html#ab20a6586b4e56cc428012ec96f5ccc2c',1,'IRrecv']]],
['decodedaikin160_3879',['decodeDaikin160',['../classIRrecv.html#af0b9822defe6b29099079d664d9dc413',1,'IRrecv']]],
['decodedaikin176_3880',['decodeDaikin176',['../classIRrecv.html#aa142d1340201b6fdc5b462f46fe21ee0',1,'IRrecv']]],
['decodedaikin2_3881',['decodeDaikin2',['../classIRrecv.html#a4c4799a0d45ea5562159c46939617d80',1,'IRrecv']]],
['decodedaikin216_3882',['decodeDaikin216',['../classIRrecv.html#a7f860686a5c58aa8f4d1842cfb15b2f9',1,'IRrecv']]],
['decodedaikin64_3883',['decodeDaikin64',['../classIRrecv.html#a030701f081a9c6eab0c07b75433b524c',1,'IRrecv']]],
['decodedelonghiac_3884',['decodeDelonghiAc',['../classIRrecv.html#a8c91cc83770d243e942387cc16e9ca6f',1,'IRrecv']]],
['decodedenon_3885',['decodeDenon',['../classIRrecv.html#a0b1bd1c817cb43bc3755126191b7f4a2',1,'IRrecv']]],
['decodedish_3886',['decodeDISH',['../classIRrecv.html#a851776d9178aeb706d9a1abd3f254e31',1,'IRrecv']]],
['decodedoshisha_3887',['decodeDoshisha',['../classIRrecv.html#a675c45e6b32aaeca3de734ccf2f0c819',1,'IRrecv']]],
['decodeelectraac_3888',['decodeElectraAC',['../classIRrecv.html#ad3a7be8afc36451c8e28e27f3c3e9aaa',1,'IRrecv']]],
['decodeelitescreens_3889',['decodeElitescreens',['../classIRrecv.html#ac830ece2c2c200b8c13fcd66828e2846',1,'IRrecv']]],
['decodeepson_3890',['decodeEpson',['../classIRrecv.html#aaadef8415f273ba25f4086fecd681d2e',1,'IRrecv']]],
['decodefujitsuac_3891',['decodeFujitsuAC',['../classIRrecv.html#aa3778bdf994bf9c99ac48ef95434a826',1,'IRrecv']]],
['decodegicable_3892',['decodeGICable',['../classIRrecv.html#afade8dac9b1d023e5e0946e6b2c08aea',1,'IRrecv']]],
['decodegoodweather_3893',['decodeGoodweather',['../classIRrecv.html#a64650ce7dbaf5fc860a6a253d906e9de',1,'IRrecv']]],
['decodegree_3894',['decodeGree',['../classIRrecv.html#a2e756342d7524a13d53d6c656700638c',1,'IRrecv']]],
['decodehaierac_3895',['decodeHaierAC',['../classIRrecv.html#ad97403174f05197a7fa9a4a0107e3111',1,'IRrecv']]],
['decodehaieracyrw02_3896',['decodeHaierACYRW02',['../classIRrecv.html#a281fb9d972fee75db49209c42f649822',1,'IRrecv']]],
['decodehash_3897',['decodeHash',['../classIRrecv.html#a7c15fbfa7936ca474712a1953911fd06',1,'IRrecv']]],
['decodehitachiac_3898',['decodeHitachiAC',['../classIRrecv.html#aa42facfffc0e304005272b6ddd4583c8',1,'IRrecv']]],
['decodehitachiac1_3899',['decodeHitachiAC1',['../classIRrecv.html#a122e0dcbf14c90ec2d77399acce21459',1,'IRrecv']]],
['decodehitachiac3_3900',['decodeHitachiAc3',['../classIRrecv.html#a113bc834eff00f55d5545ce3fa1ab203',1,'IRrecv']]],
['decodehitachiac424_3901',['decodeHitachiAc424',['../classIRrecv.html#a01c3dda56d6d916076fa1affa2213129',1,'IRrecv']]],
['decodeinax_3902',['decodeInax',['../classIRrecv.html#a94545c6a8da027b9cb0e23ecba4c29d8',1,'IRrecv']]],
['decodejvc_3903',['decodeJVC',['../classIRrecv.html#a25ab71efc223a418e9630d8421f44bc9',1,'IRrecv']]],
['decodekelvinator_3904',['decodeKelvinator',['../classIRrecv.html#a0ac82f20b48b2d71ee07eb392578b226',1,'IRrecv']]],
['decodelasertag_3905',['decodeLasertag',['../classIRrecv.html#ae4af614a45ea65cb3304ef5bd7965122',1,'IRrecv']]],
['decodelegopf_3906',['decodeLegoPf',['../classIRrecv.html#aea75ad0ba1d8fec33de16501940f2553',1,'IRrecv']]],
['decodelg_3907',['decodeLG',['../classIRrecv.html#afe70015c36b1477a5de0c193163e13a7',1,'IRrecv']]],
['decodelutron_3908',['decodeLutron',['../classIRrecv.html#a6093c4404a9a9d415c5bfeab5ec53be5',1,'IRrecv']]],
['decodemagiquest_3909',['decodeMagiQuest',['../classIRrecv.html#a6f3bfcc6767484151dee758bcf94fb0b',1,'IRrecv']]],
['decodemetz_3910',['decodeMetz',['../classIRrecv.html#ac39aa52eec10d1c92b6e9713a22252b6',1,'IRrecv']]],
['decodemidea_3911',['decodeMidea',['../classIRrecv.html#a255b15601f7439a09ab5e77ad78816fb',1,'IRrecv']]],
['decodemidea24_3912',['decodeMidea24',['../classIRrecv.html#a62a04019308b29ae2aea4b3a83ba9155',1,'IRrecv']]],
['decodemirage_3913',['decodeMirage',['../classIRrecv.html#aa88813f830a6ff6bfd6e7bde6728a3d5',1,'IRrecv']]],
['decodemitsubishi_3914',['decodeMitsubishi',['../classIRrecv.html#a6efe3be80f0ebef3ff94ed0e56c5c52a',1,'IRrecv']]],
['decodemitsubishi112_3915',['decodeMitsubishi112',['../classIRrecv.html#ae0690ff3cb5a5cdcdb6a514bb7bf0cdd',1,'IRrecv']]],
['decodemitsubishi136_3916',['decodeMitsubishi136',['../classIRrecv.html#a87b3ee57dbdf762a0e305ddd43eec629',1,'IRrecv']]],
['decodemitsubishi2_3917',['decodeMitsubishi2',['../classIRrecv.html#a9514197850491a5b8c30ae9ffc89d895',1,'IRrecv']]],
['decodemitsubishiac_3918',['decodeMitsubishiAC',['../classIRrecv.html#a942c5f41df5cbff32a8b7703673cb621',1,'IRrecv']]],
['decodemitsubishiheavy_3919',['decodeMitsubishiHeavy',['../classIRrecv.html#aef9cedf79793806df4cc5376710781bc',1,'IRrecv']]],
['decodemultibrackets_3920',['decodeMultibrackets',['../classIRrecv.html#af61afacc9865232643164ba824e665ab',1,'IRrecv']]],
['decodemwm_3921',['decodeMWM',['../classIRrecv.html#a27518b5d792cdf3ab333b324f409f328',1,'IRrecv']]],
['decodenec_3922',['decodeNEC',['../classIRrecv.html#a52b844f80df7f64edf9ce9cc189ac5b9',1,'IRrecv']]],
['decodeneoclima_3923',['decodeNeoclima',['../classIRrecv.html#a4729ee949e533448b481ae33bbbf1adf',1,'IRrecv']]],
['decodenikai_3924',['decodeNikai',['../classIRrecv.html#abbcbf5fc07d7e37d7724acc37bb5f592',1,'IRrecv']]],
['decodepanasonic_3925',['decodePanasonic',['../classIRrecv.html#aa8dd5f24d28576c6db03cc463bd0a865',1,'IRrecv']]],
['decodepanasonicac_3926',['decodePanasonicAC',['../classIRrecv.html#a0f78e180ed731e8fb16d1c85aa721c95',1,'IRrecv']]],
['decodepanasonicac32_3927',['decodePanasonicAC32',['../classIRrecv.html#a89ce20e483b1297cae05ab1ae96d24ec',1,'IRrecv']]],
['decodepioneer_3928',['decodePioneer',['../classIRrecv.html#a78a9487cbe8a562392a07a4090b3091e',1,'IRrecv']]],
['decoderc5_3929',['decodeRC5',['../classIRrecv.html#adab9dffbeceee514520fababd0e721bd',1,'IRrecv']]],
['decoderc6_3930',['decodeRC6',['../classIRrecv.html#a67316499ef37db82e3b3ecaac25c5980',1,'IRrecv']]],
['decodercmm_3931',['decodeRCMM',['../classIRrecv.html#a0e7bf769cb5bebf174e852e4b0b08cf3',1,'IRrecv']]],
['decodesamsung_3932',['decodeSAMSUNG',['../classIRrecv.html#a18b6cf177364faf11b9a076dd2025eec',1,'IRrecv']]],
['decodesamsung36_3933',['decodeSamsung36',['../classIRrecv.html#a290a9e6a0b12ef1fe02a92a456c8ad57',1,'IRrecv']]],
['decodesamsungac_3934',['decodeSamsungAC',['../classIRrecv.html#ae779c76ebd0f3cd1fc13abaa55f80d67',1,'IRrecv']]],
['decodesanyoac_3935',['decodeSanyoAc',['../classIRrecv.html#ab6c02d8b8079d7f344e141e6a4e7e225',1,'IRrecv']]],
['decodesanyolc7461_3936',['decodeSanyoLC7461',['../classIRrecv.html#a01a165bf2e7d16dbbb916d1eae740bc5',1,'IRrecv']]],
['decodesharp_3937',['decodeSharp',['../classIRrecv.html#a3390d63ba21a835d7c74c261532a22a7',1,'IRrecv']]],
['decodesharpac_3938',['decodeSharpAc',['../classIRrecv.html#a8a9b920079f783e236f8a938e20b9743',1,'IRrecv']]],
['decodesony_3939',['decodeSony',['../classIRrecv.html#ab03227955cf7d1d00c1620c55d7f9f18',1,'IRrecv']]],
['decodesymphony_3940',['decodeSymphony',['../classIRrecv.html#a61cdf4d891654521afbc6ca9fb415745',1,'IRrecv']]],
['decodetechnibelac_3941',['decodeTechnibelAc',['../classIRrecv.html#a2f022741309ad814bf11aec440a838d0',1,'IRrecv']]],
['decodeteco_3942',['decodeTeco',['../classIRrecv.html#a950711d7df8dfe4cda86f53650cd9f56',1,'IRrecv']]],
['decodetoshibaac_3943',['decodeToshibaAC',['../classIRrecv.html#aae6ab687ae319ae50a52238916bcfb1a',1,'IRrecv']]],
['decodetostate_3944',['decodeToState',['../namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949',1,'IRAcUtils']]],
['decodetranscold_3945',['decodeTranscold',['../classIRrecv.html#a16c44538d7e01d9b118d983de39d18e3',1,'IRrecv']]],
['decodetrotec_3946',['decodeTrotec',['../classIRrecv.html#ae2920c488173f3fa37f5325438157ced',1,'IRrecv']]],
['decodevestelac_3947',['decodeVestelAc',['../classIRrecv.html#a5d48b3c91434c18c7726cca504d75b73',1,'IRrecv']]],
['decodevoltas_3948',['decodeVoltas',['../classIRrecv.html#a43539320036ba1c17e9875e4dc9fd055',1,'IRrecv']]],
['decodewhirlpoolac_3949',['decodeWhirlpoolAC',['../classIRrecv.html#a0d1eec83cf092f5621cb34b3e94777c4',1,'IRrecv']]],
['decodewhynter_3950',['decodeWhynter',['../classIRrecv.html#a66289f6a462557ad26e6c0a64f36cf02',1,'IRrecv']]],
['decodezepeal_3951',['decodeZepeal',['../classIRrecv.html#a72afd857c8b2e0192021a40afc96c2d8',1,'IRrecv']]],
['defaultbits_3952',['defaultBits',['../classIRsend.html#a70a2256bee8ad9b8ea8571dd4f26596f',1,'IRsend']]],
['delonghiac_3953',['delonghiac',['../classIRac.html#af290b0b08cff5121bb88c62051ed1074',1,'IRac']]],
['disableirin_3954',['disableIRIn',['../classIRrecv.html#a9f4a719e756ad78c7dd47186f8bef087',1,'IRrecv']]],
['disableofftimer_3955',['disableOffTimer',['../classIRDaikinESP.html#a1e4e05ad0799002d0ab25db92dcaac06',1,'IRDaikinESP::disableOffTimer()'],['../classIRDaikin2.html#a8cbdbc0de31b14f974cd8cd87f3ca54a',1,'IRDaikin2::disableOffTimer()']]],
['disableontimer_3956',['disableOnTimer',['../classIRDaikinESP.html#a0733e4a15d76baac23493926ef1765b1',1,'IRDaikinESP::disableOnTimer()'],['../classIRDaikin2.html#a170a1e9ddb7873dc1392184a85387cc3',1,'IRDaikin2::disableOnTimer()']]],
['disablesleeptimer_3957',['disableSleepTimer',['../classIRDaikin2.html#a152532ef9d905e26930ae145a9623877',1,'IRDaikin2']]]
];

View File

@ -1,4 +0,0 @@
var searchData=
[
['kelvinator_4189',['kelvinator',['../classIRac.html#a6e4d8061841a7271205f81bd8e7d6171',1,'IRac']]]
];

View File

@ -1,7 +0,0 @@
var searchData=
[
['ledoff_4190',['ledOff',['../classIRsend.html#ae71cc5aa99f894785fb4f7abc05841b2',1,'IRsend']]],
['ledon_4191',['ledOn',['../classIRsend.html#a13d804171fa7c14aff4def38c6ffb6c8',1,'IRsend']]],
['lg_4192',['lg',['../classIRac.html#afad31ecf9eae573882d53dd6629485fb',1,'IRac']]],
['lowlevelsanitycheck_4193',['lowLevelSanityCheck',['../namespaceirutils.html#af67b75834051c4aced358b274c1c55a8',1,'irutils']]]
];

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